Skip to content

Investigate decorator initialization order re: renames of classes #63758

Description

@copilot address the next CR comment and think hard about other edge cases

Investigated the CR comment on computed class-element names (@dec class C { [C]() {} }) and verified against real tsc (7.0.2, legacy decorators, ES2020/ES2022) using several variants: getter/setter computed names, a computed name with its own member decorator, a static property computed name, and a computed name inside a nested class within a method body. In every case, real tsc does substitute the class alias in computed class-member names (e.g. emits [C_1.name]() {}, not [C.name]() {}), including before the alias is actually assigned (this is a real, pre-existing bug/quirk in Strada's own emit, not something this PR should "fix"). I built tsgo and confirmed its output already matches tsc's byte-for-byte for all these cases at the current afb6df68 state.

So the CR suggestion to exclude computed class-element names from alias detection/substitution is incorrect — implementing it would make tsgo diverge from tsc. I made no code changes for this comment; current behavior is already correct.

Originally posted by @Copilot in microsoft/typescript-go#4650 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions