Skip to content

Commit e8a2173

Browse files
committed
Use variable name for class and function expressions names
1 parent 39b3ecb commit e8a2173

13 files changed

+81
-79
lines changed

src/compiler/checker.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2171,13 +2171,15 @@ namespace ts {
21712171
return type.flags & TypeFlags.StringLiteral ? `"${escapeString((<LiteralType>type).text)}"` : (<LiteralType>type).text;
21722172
}
21732173

2174-
21752174
function getNameOfSymbol(symbol: Symbol): string {
21762175
if (symbol.declarations && symbol.declarations.length) {
21772176
const declaration = symbol.declarations[0];
21782177
if (declaration.name) {
21792178
return declarationNameToString(declaration.name);
21802179
}
2180+
if (declaration.parent && declaration.parent.kind === SyntaxKind.VariableDeclaration) {
2181+
return declarationNameToString((<VariableDeclaration>declaration.parent).name);
2182+
}
21812183
switch (declaration.kind) {
21822184
case SyntaxKind.ClassExpression:
21832185
return "(Anonymous class)";

tests/baselines/reference/classExpression3.symbols

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ let C = class extends class extends class { a = 1 } { b = 2 } { c = 3 };
33
>C : Symbol(C, Decl(classExpression3.ts, 0, 3))
44
>a : Symbol((Anonymous class).a, Decl(classExpression3.ts, 0, 43))
55
>b : Symbol((Anonymous class).b, Decl(classExpression3.ts, 0, 53))
6-
>c : Symbol((Anonymous class).c, Decl(classExpression3.ts, 0, 63))
6+
>c : Symbol(C.c, Decl(classExpression3.ts, 0, 63))
77

88
let c = new C();
99
>c : Symbol(c, Decl(classExpression3.ts, 1, 3))
@@ -20,7 +20,7 @@ c.b;
2020
>b : Symbol((Anonymous class).b, Decl(classExpression3.ts, 0, 53))
2121

2222
c.c;
23-
>c.c : Symbol((Anonymous class).c, Decl(classExpression3.ts, 0, 63))
23+
>c.c : Symbol(C.c, Decl(classExpression3.ts, 0, 63))
2424
>c : Symbol(c, Decl(classExpression3.ts, 1, 3))
25-
>c : Symbol((Anonymous class).c, Decl(classExpression3.ts, 0, 63))
25+
>c : Symbol(C.c, Decl(classExpression3.ts, 0, 63))
2626

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
=== tests/cases/conformance/classes/classExpressions/classExpression3.ts ===
22
let C = class extends class extends class { a = 1 } { b = 2 } { c = 3 };
3-
>C : typeof (Anonymous class)
4-
>class extends class extends class { a = 1 } { b = 2 } { c = 3 } : typeof (Anonymous class)
3+
>C : typeof C
4+
>class extends class extends class { a = 1 } { b = 2 } { c = 3 } : typeof C
55
>class extends class { a = 1 } { b = 2 } : (Anonymous class)
66
>class { a = 1 } : (Anonymous class)
77
>a : number
@@ -12,22 +12,22 @@ let C = class extends class extends class { a = 1 } { b = 2 } { c = 3 };
1212
>3 : 3
1313

1414
let c = new C();
15-
>c : (Anonymous class)
16-
>new C() : (Anonymous class)
17-
>C : typeof (Anonymous class)
15+
>c : C
16+
>new C() : C
17+
>C : typeof C
1818

1919
c.a;
2020
>c.a : number
21-
>c : (Anonymous class)
21+
>c : C
2222
>a : number
2323

2424
c.b;
2525
>c.b : number
26-
>c : (Anonymous class)
26+
>c : C
2727
>b : number
2828

2929
c.c;
3030
>c.c : number
31-
>c : (Anonymous class)
31+
>c : C
3232
>c : number
3333

tests/baselines/reference/classExpression4.symbols

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ let C = class {
33
>C : Symbol(C, Decl(classExpression4.ts, 0, 3))
44

55
foo() {
6-
>foo : Symbol((Anonymous class).foo, Decl(classExpression4.ts, 0, 15))
6+
>foo : Symbol(C.foo, Decl(classExpression4.ts, 0, 15))
77

88
return new C();
99
>C : Symbol(C, Decl(classExpression4.ts, 0, 3))
1010
}
1111
};
1212
let x = (new C).foo();
1313
>x : Symbol(x, Decl(classExpression4.ts, 5, 3))
14-
>(new C).foo : Symbol((Anonymous class).foo, Decl(classExpression4.ts, 0, 15))
14+
>(new C).foo : Symbol(C.foo, Decl(classExpression4.ts, 0, 15))
1515
>C : Symbol(C, Decl(classExpression4.ts, 0, 3))
16-
>foo : Symbol((Anonymous class).foo, Decl(classExpression4.ts, 0, 15))
16+
>foo : Symbol(C.foo, Decl(classExpression4.ts, 0, 15))
1717

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
=== tests/cases/conformance/classes/classExpressions/classExpression4.ts ===
22
let C = class {
3-
>C : typeof (Anonymous class)
4-
>class { foo() { return new C(); }} : typeof (Anonymous class)
3+
>C : typeof C
4+
>class { foo() { return new C(); }} : typeof C
55

66
foo() {
7-
>foo : () => (Anonymous class)
7+
>foo : () => C
88

99
return new C();
10-
>new C() : (Anonymous class)
11-
>C : typeof (Anonymous class)
10+
>new C() : C
11+
>C : typeof C
1212
}
1313
};
1414
let x = (new C).foo();
15-
>x : (Anonymous class)
16-
>(new C).foo() : (Anonymous class)
17-
>(new C).foo : () => (Anonymous class)
18-
>(new C) : (Anonymous class)
19-
>new C : (Anonymous class)
20-
>C : typeof (Anonymous class)
21-
>foo : () => (Anonymous class)
15+
>x : C
16+
>(new C).foo() : C
17+
>(new C).foo : () => C
18+
>(new C) : C
19+
>new C : C
20+
>C : typeof C
21+
>foo : () => C
2222

tests/baselines/reference/classExpressionES63.symbols

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ let C = class extends class extends class { a = 1 } { b = 2 } { c = 3 };
33
>C : Symbol(C, Decl(classExpressionES63.ts, 0, 3))
44
>a : Symbol((Anonymous class).a, Decl(classExpressionES63.ts, 0, 43))
55
>b : Symbol((Anonymous class).b, Decl(classExpressionES63.ts, 0, 53))
6-
>c : Symbol((Anonymous class).c, Decl(classExpressionES63.ts, 0, 63))
6+
>c : Symbol(C.c, Decl(classExpressionES63.ts, 0, 63))
77

88
let c = new C();
99
>c : Symbol(c, Decl(classExpressionES63.ts, 1, 3))
@@ -20,7 +20,7 @@ c.b;
2020
>b : Symbol((Anonymous class).b, Decl(classExpressionES63.ts, 0, 53))
2121

2222
c.c;
23-
>c.c : Symbol((Anonymous class).c, Decl(classExpressionES63.ts, 0, 63))
23+
>c.c : Symbol(C.c, Decl(classExpressionES63.ts, 0, 63))
2424
>c : Symbol(c, Decl(classExpressionES63.ts, 1, 3))
25-
>c : Symbol((Anonymous class).c, Decl(classExpressionES63.ts, 0, 63))
25+
>c : Symbol(C.c, Decl(classExpressionES63.ts, 0, 63))
2626

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
=== tests/cases/conformance/es6/classExpressions/classExpressionES63.ts ===
22
let C = class extends class extends class { a = 1 } { b = 2 } { c = 3 };
3-
>C : typeof (Anonymous class)
4-
>class extends class extends class { a = 1 } { b = 2 } { c = 3 } : typeof (Anonymous class)
3+
>C : typeof C
4+
>class extends class extends class { a = 1 } { b = 2 } { c = 3 } : typeof C
55
>class extends class { a = 1 } { b = 2 } : (Anonymous class)
66
>class { a = 1 } : (Anonymous class)
77
>a : number
@@ -12,22 +12,22 @@ let C = class extends class extends class { a = 1 } { b = 2 } { c = 3 };
1212
>3 : 3
1313

1414
let c = new C();
15-
>c : (Anonymous class)
16-
>new C() : (Anonymous class)
17-
>C : typeof (Anonymous class)
15+
>c : C
16+
>new C() : C
17+
>C : typeof C
1818

1919
c.a;
2020
>c.a : number
21-
>c : (Anonymous class)
21+
>c : C
2222
>a : number
2323

2424
c.b;
2525
>c.b : number
26-
>c : (Anonymous class)
26+
>c : C
2727
>b : number
2828

2929
c.c;
3030
>c.c : number
31-
>c : (Anonymous class)
31+
>c : C
3232
>c : number
3333

tests/baselines/reference/functionsInClassExpressions.symbols

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,24 @@ let Foo = class {
44

55
constructor() {
66
this.bar++;
7-
>this.bar : Symbol((Anonymous class).bar, Decl(functionsInClassExpressions.ts, 3, 5))
8-
>this : Symbol((Anonymous class), Decl(functionsInClassExpressions.ts, 0, 9))
9-
>bar : Symbol((Anonymous class).bar, Decl(functionsInClassExpressions.ts, 3, 5))
7+
>this.bar : Symbol(Foo.bar, Decl(functionsInClassExpressions.ts, 3, 5))
8+
>this : Symbol(Foo, Decl(functionsInClassExpressions.ts, 0, 9))
9+
>bar : Symbol(Foo.bar, Decl(functionsInClassExpressions.ts, 3, 5))
1010
}
1111
bar = 0;
12-
>bar : Symbol((Anonymous class).bar, Decl(functionsInClassExpressions.ts, 3, 5))
12+
>bar : Symbol(Foo.bar, Decl(functionsInClassExpressions.ts, 3, 5))
1313

1414
inc = () => {
15-
>inc : Symbol((Anonymous class).inc, Decl(functionsInClassExpressions.ts, 4, 12))
15+
>inc : Symbol(Foo.inc, Decl(functionsInClassExpressions.ts, 4, 12))
1616

1717
this.bar++;
18-
>this.bar : Symbol((Anonymous class).bar, Decl(functionsInClassExpressions.ts, 3, 5))
19-
>this : Symbol((Anonymous class), Decl(functionsInClassExpressions.ts, 0, 9))
20-
>bar : Symbol((Anonymous class).bar, Decl(functionsInClassExpressions.ts, 3, 5))
18+
>this.bar : Symbol(Foo.bar, Decl(functionsInClassExpressions.ts, 3, 5))
19+
>this : Symbol(Foo, Decl(functionsInClassExpressions.ts, 0, 9))
20+
>bar : Symbol(Foo.bar, Decl(functionsInClassExpressions.ts, 3, 5))
2121
}
2222
m() { return this.bar; }
23-
>m : Symbol((Anonymous class).m, Decl(functionsInClassExpressions.ts, 7, 5))
24-
>this.bar : Symbol((Anonymous class).bar, Decl(functionsInClassExpressions.ts, 3, 5))
25-
>this : Symbol((Anonymous class), Decl(functionsInClassExpressions.ts, 0, 9))
26-
>bar : Symbol((Anonymous class).bar, Decl(functionsInClassExpressions.ts, 3, 5))
23+
>m : Symbol(Foo.m, Decl(functionsInClassExpressions.ts, 7, 5))
24+
>this.bar : Symbol(Foo.bar, Decl(functionsInClassExpressions.ts, 3, 5))
25+
>this : Symbol(Foo, Decl(functionsInClassExpressions.ts, 0, 9))
26+
>bar : Symbol(Foo.bar, Decl(functionsInClassExpressions.ts, 3, 5))
2727
}

tests/baselines/reference/functionsInClassExpressions.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
=== tests/cases/compiler/functionsInClassExpressions.ts ===
22
let Foo = class {
3-
>Foo : typeof (Anonymous class)
4-
>class { constructor() { this.bar++; } bar = 0; inc = () => { this.bar++; } m() { return this.bar; }} : typeof (Anonymous class)
3+
>Foo : typeof Foo
4+
>class { constructor() { this.bar++; } bar = 0; inc = () => { this.bar++; } m() { return this.bar; }} : typeof Foo
55

66
constructor() {
77
this.bar++;

tests/baselines/reference/implementsInClassExpression.symbols

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ let cls = class implements Foo {
1111
>Foo : Symbol(Foo, Decl(implementsInClassExpression.ts, 0, 0))
1212

1313
doThing() { }
14-
>doThing : Symbol((Anonymous class).doThing, Decl(implementsInClassExpression.ts, 4, 32))
14+
>doThing : Symbol(cls.doThing, Decl(implementsInClassExpression.ts, 4, 32))
1515
}

0 commit comments

Comments
 (0)