Skip to content

Commit 1747ee7

Browse files
authored
Perfer the non-module name of a symbol when writing the name of a symbol (microsoft#32880)
1 parent 2217f0b commit 1747ee7

19 files changed

+61
-44
lines changed

src/compiler/checker.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4654,9 +4654,6 @@ namespace ts {
46544654
function createExpressionFromSymbolChain(chain: Symbol[], index: number): Expression {
46554655
const typeParameterNodes = lookupTypeParameterNodes(chain, index, context);
46564656
const symbol = chain[index];
4657-
if (some(symbol.declarations, hasNonGlobalAugmentationExternalModuleSymbol)) {
4658-
return createLiteral(getSpecifierForModuleSymbol(symbol, context));
4659-
}
46604657

46614658
if (index === 0) {
46624659
context.flags |= NodeBuilderFlags.InInitialEntityName;
@@ -4666,6 +4663,9 @@ namespace ts {
46664663
context.flags ^= NodeBuilderFlags.InInitialEntityName;
46674664
}
46684665
let firstChar = symbolName.charCodeAt(0);
4666+
if (isSingleOrDoubleQuote(firstChar) && some(symbol.declarations, hasNonGlobalAugmentationExternalModuleSymbol)) {
4667+
return createLiteral(getSpecifierForModuleSymbol(symbol, context));
4668+
}
46694669
const canUsePropertyAccess = isIdentifierStart(firstChar, languageVersion);
46704670
if (index === 0 || canUsePropertyAccess) {
46714671
const identifier = setEmitFlags(createIdentifier(symbolName, typeParameterNodes), EmitFlags.NoAsciiEscaping);
@@ -4821,9 +4821,9 @@ namespace ts {
48214821
return "default";
48224822
}
48234823
if (symbol.declarations && symbol.declarations.length) {
4824-
const declaration = symbol.declarations[0];
4825-
const name = getNameOfDeclaration(declaration);
4826-
if (name) {
4824+
let declaration = firstDefined(symbol.declarations, d => getNameOfDeclaration(d) ? d : undefined); // Try using a declaration with a name, first
4825+
const name = declaration && getNameOfDeclaration(declaration);
4826+
if (declaration && name) {
48274827
if (isCallExpression(declaration) && isBindableObjectDefinePropertyCall(declaration)) {
48284828
return symbolName(symbol);
48294829
}
@@ -4836,6 +4836,9 @@ namespace ts {
48364836
}
48374837
return declarationNameToString(name);
48384838
}
4839+
if (!declaration) {
4840+
declaration = symbol.declarations[0]; // Declaration may be nameless, but we'll try anyway
4841+
}
48394842
if (declaration.parent && declaration.parent.kind === SyntaxKind.VariableDeclaration) {
48404843
return declarationNameToString((<VariableDeclaration>declaration.parent).name);
48414844
}

tests/baselines/reference/augmentExportEquals3.symbols

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
=== tests/cases/compiler/file1.ts ===
22
function foo() {}
3-
>foo : Symbol("tests/cases/compiler/file1.ts", Decl(file1.ts, 0, 0), Decl(file1.ts, 0, 17), Decl(file2.ts, 1, 8))
3+
>foo : Symbol(foo, Decl(file1.ts, 0, 0), Decl(file1.ts, 0, 17), Decl(file2.ts, 1, 8))
44

55
namespace foo {
6-
>foo : Symbol("tests/cases/compiler/file1.ts", Decl(file1.ts, 0, 0), Decl(file1.ts, 0, 17), Decl(file2.ts, 1, 8))
6+
>foo : Symbol(foo, Decl(file1.ts, 0, 0), Decl(file1.ts, 0, 17), Decl(file2.ts, 1, 8))
77

88
export var v = 1;
99
>v : Symbol(v, Decl(file1.ts, 2, 14))

tests/baselines/reference/augmentExportEquals3_1.symbols

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ declare module "file1" {
33
>"file1" : Symbol("file1", Decl(file1.d.ts, 0, 0))
44

55
function foo(): void;
6-
>foo : Symbol("tests/cases/compiler/file1.d.ts", Decl(file1.d.ts, 0, 24), Decl(file1.d.ts, 1, 25), Decl(file2.ts, 2, 8))
6+
>foo : Symbol(foo, Decl(file1.d.ts, 0, 24), Decl(file1.d.ts, 1, 25), Decl(file2.ts, 2, 8))
77

88
namespace foo {
9-
>foo : Symbol("tests/cases/compiler/file1.d.ts", Decl(file1.d.ts, 0, 24), Decl(file1.d.ts, 1, 25), Decl(file2.ts, 2, 8))
9+
>foo : Symbol(foo, Decl(file1.d.ts, 0, 24), Decl(file1.d.ts, 1, 25), Decl(file2.ts, 2, 8))
1010

1111
export var v: number;
1212
>v : Symbol(v, Decl(file1.d.ts, 3, 18))

tests/baselines/reference/augmentExportEquals4.symbols

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
=== tests/cases/compiler/file1.ts ===
22
class foo {}
3-
>foo : Symbol("tests/cases/compiler/file1.ts", Decl(file1.ts, 0, 0), Decl(file1.ts, 0, 12), Decl(file2.ts, 1, 8))
3+
>foo : Symbol(foo, Decl(file1.ts, 0, 0), Decl(file1.ts, 0, 12), Decl(file2.ts, 1, 8))
44

55
namespace foo {
6-
>foo : Symbol("tests/cases/compiler/file1.ts", Decl(file1.ts, 0, 0), Decl(file1.ts, 0, 12), Decl(file2.ts, 1, 8))
6+
>foo : Symbol(foo, Decl(file1.ts, 0, 0), Decl(file1.ts, 0, 12), Decl(file2.ts, 1, 8))
77

88
export var v = 1;
99
>v : Symbol(v, Decl(file1.ts, 2, 14))

tests/baselines/reference/augmentExportEquals4_1.symbols

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ declare module "file1" {
33
>"file1" : Symbol("file1", Decl(file1.d.ts, 0, 0))
44

55
class foo {}
6-
>foo : Symbol("tests/cases/compiler/file1.d.ts", Decl(file1.d.ts, 0, 24), Decl(file1.d.ts, 1, 16), Decl(file2.ts, 2, 8))
6+
>foo : Symbol(foo, Decl(file1.d.ts, 0, 24), Decl(file1.d.ts, 1, 16), Decl(file2.ts, 2, 8))
77

88
namespace foo {
9-
>foo : Symbol("tests/cases/compiler/file1.d.ts", Decl(file1.d.ts, 0, 24), Decl(file1.d.ts, 1, 16), Decl(file2.ts, 2, 8))
9+
>foo : Symbol(foo, Decl(file1.d.ts, 0, 24), Decl(file1.d.ts, 1, 16), Decl(file2.ts, 2, 8))
1010

1111
export var v: number;
1212
>v : Symbol(v, Decl(file1.d.ts, 3, 18))

tests/baselines/reference/augmentExportEquals5.symbols

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ declare module "express" {
1616
>"express" : Symbol("express", Decl(express.d.ts, 4, 1))
1717

1818
function e(): e.Express;
19-
>e : Symbol("tests/cases/compiler/express.d.ts", Decl(express.d.ts, 6, 26), Decl(express.d.ts, 7, 28), Decl(augmentation.ts, 1, 29))
19+
>e : Symbol(e, Decl(express.d.ts, 6, 26), Decl(express.d.ts, 7, 28), Decl(augmentation.ts, 1, 29))
2020
>e : Symbol(e, Decl(express.d.ts, 6, 26), Decl(express.d.ts, 7, 28))
2121
>Express : Symbol(Express, Decl(express.d.ts, 52, 9))
2222

2323
namespace e {
24-
>e : Symbol("tests/cases/compiler/express.d.ts", Decl(express.d.ts, 6, 26), Decl(express.d.ts, 7, 28), Decl(augmentation.ts, 1, 29))
24+
>e : Symbol(e, Decl(express.d.ts, 6, 26), Decl(express.d.ts, 7, 28), Decl(augmentation.ts, 1, 29))
2525

2626
interface IRoute {
2727
>IRoute : Symbol(IRoute, Decl(express.d.ts, 8, 17))

tests/baselines/reference/augmentExportEquals6.symbols

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
=== tests/cases/compiler/file1.ts ===
22
class foo {}
3-
>foo : Symbol("tests/cases/compiler/file1.ts", Decl(file1.ts, 0, 0), Decl(file1.ts, 0, 12), Decl(file2.ts, 1, 10))
3+
>foo : Symbol(foo, Decl(file1.ts, 0, 0), Decl(file1.ts, 0, 12), Decl(file2.ts, 1, 10))
44

55
namespace foo {
6-
>foo : Symbol("tests/cases/compiler/file1.ts", Decl(file1.ts, 0, 0), Decl(file1.ts, 0, 12), Decl(file2.ts, 1, 10))
6+
>foo : Symbol(foo, Decl(file1.ts, 0, 0), Decl(file1.ts, 0, 12), Decl(file2.ts, 1, 10))
77

88
export class A {}
99
>A : Symbol(A, Decl(file1.ts, 1, 15), Decl(file2.ts, 4, 26))

tests/baselines/reference/augmentExportEquals6_1.symbols

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ declare module "file1" {
33
>"file1" : Symbol("file1", Decl(file1.d.ts, 0, 0))
44

55
class foo {}
6-
>foo : Symbol("tests/cases/compiler/file1.d.ts", Decl(file1.d.ts, 0, 24), Decl(file1.d.ts, 1, 16), Decl(file2.ts, 1, 28))
6+
>foo : Symbol(foo, Decl(file1.d.ts, 0, 24), Decl(file1.d.ts, 1, 16), Decl(file2.ts, 1, 28))
77

88
namespace foo {
9-
>foo : Symbol("tests/cases/compiler/file1.d.ts", Decl(file1.d.ts, 0, 24), Decl(file1.d.ts, 1, 16), Decl(file2.ts, 1, 28))
9+
>foo : Symbol(foo, Decl(file1.d.ts, 0, 24), Decl(file1.d.ts, 1, 16), Decl(file2.ts, 1, 28))
1010

1111
class A {}
1212
>A : Symbol(A, Decl(file1.d.ts, 2, 19), Decl(file2.ts, 4, 24))

tests/baselines/reference/checkMergedGlobalUMDSymbol.symbols

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ declare global {
1717
>global : Symbol(global, Decl(global.d.ts, 2, 26))
1818

1919
export const THREE: typeof _three;
20-
>THREE : Symbol("tests/cases/compiler/global", Decl(global.d.ts, 0, 0), Decl(global.d.ts, 5, 14))
20+
>THREE : Symbol(THREE, Decl(global.d.ts, 0, 0), Decl(global.d.ts, 5, 14))
2121
>_three : Symbol(_three, Decl(global.d.ts, 0, 6))
2222
}
2323

2424
=== tests/cases/compiler/test.ts ===
2525
const m = THREE
2626
>m : Symbol(m, Decl(test.ts, 0, 5))
27-
>THREE : Symbol("tests/cases/compiler/global", Decl(global.d.ts, 0, 0), Decl(global.d.ts, 5, 14))
27+
>THREE : Symbol(THREE, Decl(global.d.ts, 0, 0), Decl(global.d.ts, 5, 14))
2828

tests/baselines/reference/exportAssignmentMembersVisibleInAugmentation.symbols

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export = foo;
33
>foo : Symbol(foo, Decl(index.d.ts, 0, 13))
44

55
declare namespace foo {
6-
>foo : Symbol("/node_modules/foo/index.d.ts", Decl(index.d.ts, 0, 13), Decl(a.ts, 0, 27), Decl(b.ts, 0, 27))
6+
>foo : Symbol(foo, Decl(index.d.ts, 0, 13), Decl(a.ts, 0, 27), Decl(b.ts, 0, 27))
77

88
export type T = number;
99
>T : Symbol(T, Decl(index.d.ts, 1, 23))

0 commit comments

Comments
 (0)