diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 909ec5e82b21b..5888eb6f0b01f 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -4171,7 +4171,10 @@ namespace ts { context.flags ^= NodeBuilderFlags.InInitialEntityName; } let firstChar = symbolName.charCodeAt(0); - const canUsePropertyAccess = isIdentifierStart(firstChar, languageVersion); + const canUsePropertyAccess = firstChar === CharacterCodes.hash ? + symbolName.length > 1 && isIdentifierStart(symbolName.charCodeAt(1), languageVersion) : + isIdentifierStart(firstChar, languageVersion); + if (index === 0 || canUsePropertyAccess) { const identifier = setEmitFlags(createIdentifier(symbolName, typeParameterNodes), EmitFlags.NoAsciiEscaping); identifier.symbol = symbol; diff --git a/tests/baselines/reference/privateNameField.symbols b/tests/baselines/reference/privateNameField.symbols index a9ab08325a0e1..cbaedbc596caf 100644 --- a/tests/baselines/reference/privateNameField.symbols +++ b/tests/baselines/reference/privateNameField.symbols @@ -3,13 +3,13 @@ class A { >A : Symbol(A, Decl(privateNameField.ts, 0, 0)) #name: string; ->#name : Symbol(A[#name], Decl(privateNameField.ts, 0, 9)) +>#name : Symbol(A.#name, Decl(privateNameField.ts, 0, 9)) constructor(name: string) { >name : Symbol(name, Decl(privateNameField.ts, 2, 16)) this.#name = name; ->this.#name : Symbol(A[#name], Decl(privateNameField.ts, 0, 9)) +>this.#name : Symbol(A.#name, Decl(privateNameField.ts, 0, 9)) >this : Symbol(A, Decl(privateNameField.ts, 0, 0)) >name : Symbol(name, Decl(privateNameField.ts, 2, 16)) }