Skip to content

Commit 90b8185

Browse files
authored
Merge pull request #11392 from Microsoft/release-2.0.5_emitDTS
[Release-2.5] Port fix from master to release-2.0.5: Serialize type alias when type-alias is not accessible and emit generic
2 parents be85524 + e38252d commit 90b8185

File tree

154 files changed

+1397
-864
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

154 files changed

+1397
-864
lines changed

src/compiler/checker.ts

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1744,15 +1744,23 @@ namespace ts {
17441744
return false;
17451745
}
17461746

1747-
function isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessibilityResult {
1747+
/**
1748+
* Check if the given symbol in given enclosing declaration is accessible and mark all associated alias to be visible if requested
1749+
*
1750+
* @param symbol a Symbol to check if accessible
1751+
* @param enclosingDeclaration a Node containing reference to the symbol
1752+
* @param meaning a SymbolFlags to check if such meaning of the symbol is accessible
1753+
* @param shouldComputeAliasToMakeVisible a boolean value to indicate whether to return aliases to be mark visible in case the symbol is accessible
1754+
*/
1755+
function isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags, shouldComputeAliasesToMakeVisible: boolean): SymbolAccessibilityResult {
17481756
if (symbol && enclosingDeclaration && !(symbol.flags & SymbolFlags.TypeParameter)) {
17491757
const initialSymbol = symbol;
17501758
let meaningToLook = meaning;
17511759
while (symbol) {
17521760
// Symbol is accessible if it by itself is accessible
17531761
const accessibleSymbolChain = getAccessibleSymbolChain(symbol, enclosingDeclaration, meaningToLook, /*useOnlyExternalAliasing*/ false);
17541762
if (accessibleSymbolChain) {
1755-
const hasAccessibleDeclarations = hasVisibleDeclarations(accessibleSymbolChain[0]);
1763+
const hasAccessibleDeclarations = hasVisibleDeclarations(accessibleSymbolChain[0], shouldComputeAliasesToMakeVisible);
17561764
if (!hasAccessibleDeclarations) {
17571765
return <SymbolAccessibilityResult>{
17581766
accessibility: SymbolAccessibility.NotAccessible,
@@ -1816,7 +1824,7 @@ namespace ts {
18161824
return isAmbientModule(declaration) || (declaration.kind === SyntaxKind.SourceFile && isExternalOrCommonJsModule(<SourceFile>declaration));
18171825
}
18181826

1819-
function hasVisibleDeclarations(symbol: Symbol): SymbolVisibilityResult {
1827+
function hasVisibleDeclarations(symbol: Symbol, shouldComputeAliasToMakeVisible: boolean): SymbolVisibilityResult {
18201828
let aliasesToMakeVisible: AnyImportSyntax[];
18211829
if (forEach(symbol.declarations, declaration => !getIsDeclarationVisible(declaration))) {
18221830
return undefined;
@@ -1832,14 +1840,19 @@ namespace ts {
18321840
if (anyImportSyntax &&
18331841
!(anyImportSyntax.flags & NodeFlags.Export) && // import clause without export
18341842
isDeclarationVisible(<Declaration>anyImportSyntax.parent)) {
1835-
getNodeLinks(declaration).isVisible = true;
1836-
if (aliasesToMakeVisible) {
1837-
if (!contains(aliasesToMakeVisible, anyImportSyntax)) {
1838-
aliasesToMakeVisible.push(anyImportSyntax);
1843+
// In function "buildTypeDisplay" where we decide whether to write type-alias or serialize types,
1844+
// we want to just check if type- alias is accessible or not but we don't care about emitting those alias at that time
1845+
// since we will do the emitting later in trackSymbol.
1846+
if (shouldComputeAliasToMakeVisible) {
1847+
getNodeLinks(declaration).isVisible = true;
1848+
if (aliasesToMakeVisible) {
1849+
if (!contains(aliasesToMakeVisible, anyImportSyntax)) {
1850+
aliasesToMakeVisible.push(anyImportSyntax);
1851+
}
1852+
}
1853+
else {
1854+
aliasesToMakeVisible = [anyImportSyntax];
18391855
}
1840-
}
1841-
else {
1842-
aliasesToMakeVisible = [anyImportSyntax];
18431856
}
18441857
return true;
18451858
}
@@ -1874,7 +1887,7 @@ namespace ts {
18741887
const symbol = resolveName(enclosingDeclaration, (<Identifier>firstIdentifier).text, meaning, /*nodeNotFoundErrorMessage*/ undefined, /*nameArg*/ undefined);
18751888

18761889
// Verify if the symbol is accessible
1877-
return (symbol && hasVisibleDeclarations(symbol)) || <SymbolVisibilityResult>{
1890+
return (symbol && hasVisibleDeclarations(symbol, /*shouldComputeAliasToMakeVisible*/ true)) || <SymbolVisibilityResult>{
18781891
accessibility: SymbolAccessibility.NotAccessible,
18791892
errorSymbolName: getTextOfNode(firstIdentifier),
18801893
errorNode: firstIdentifier
@@ -2152,14 +2165,16 @@ namespace ts {
21522165
// The specified symbol flags need to be reinterpreted as type flags
21532166
buildSymbolDisplay(type.symbol, writer, enclosingDeclaration, SymbolFlags.Type, SymbolFormatFlags.None, nextFlags);
21542167
}
2155-
else if (!(flags & TypeFormatFlags.InTypeAlias) && type.flags & (TypeFlags.Anonymous | TypeFlags.UnionOrIntersection) && type.aliasSymbol) {
2156-
if (type.flags & TypeFlags.Anonymous || !(flags & TypeFormatFlags.UseTypeAliasValue)) {
2157-
const typeArguments = type.aliasTypeArguments;
2158-
writeSymbolTypeReference(type.aliasSymbol, typeArguments, 0, typeArguments ? typeArguments.length : 0, nextFlags);
2159-
}
2160-
else {
2161-
writeUnionOrIntersectionType(<UnionOrIntersectionType>type, nextFlags);
2162-
}
2168+
else if (!(flags & TypeFormatFlags.InTypeAlias) && ((type.flags & TypeFlags.Anonymous && !(<AnonymousType>type).target) || type.flags & TypeFlags.UnionOrIntersection) && type.aliasSymbol &&
2169+
isSymbolAccessible(type.aliasSymbol, enclosingDeclaration, SymbolFlags.Type, /*shouldComputeAliasesToMakeVisible*/ false).accessibility === SymbolAccessibility.Accessible) {
2170+
// We emit inferred type as type-alias at the current location if all the following is true
2171+
// the input type is has alias symbol that is accessible
2172+
// the input type is a union, intersection or anonymous type that is fully instantiated (if not we want to keep dive into)
2173+
// e.g.: export type Bar<X, Y> = () => [X, Y];
2174+
// export type Foo<Y> = Bar<any, Y>;
2175+
// export const y = (x: Foo<string>) => 1 // we want to emit as ...x: () => [any, string])
2176+
const typeArguments = type.aliasTypeArguments;
2177+
writeSymbolTypeReference(type.aliasSymbol, typeArguments, 0, typeArguments ? typeArguments.length : 0, nextFlags);
21632178
}
21642179
else if (type.flags & TypeFlags.UnionOrIntersection) {
21652180
writeUnionOrIntersectionType(<UnionOrIntersectionType>type, nextFlags);

src/compiler/declarationEmitter.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ namespace ts {
306306
}
307307

308308
function trackSymbol(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags) {
309-
handleSymbolAccessibilityError(resolver.isSymbolAccessible(symbol, enclosingDeclaration, meaning));
309+
handleSymbolAccessibilityError(resolver.isSymbolAccessible(symbol, enclosingDeclaration, meaning, /*shouldComputeAliasesToMakeVisible*/ true));
310310
recordTypeReferenceDirectivesIfNecessary(resolver.getTypeReferenceDirectivesForSymbol(symbol, meaning));
311311
}
312312

@@ -327,7 +327,7 @@ namespace ts {
327327
}
328328
else {
329329
errorNameNode = declaration.name;
330-
resolver.writeTypeOfDeclaration(declaration, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction | TypeFormatFlags.UseTypeAliasValue, writer);
330+
resolver.writeTypeOfDeclaration(declaration, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction, writer);
331331
errorNameNode = undefined;
332332
}
333333
}
@@ -341,7 +341,7 @@ namespace ts {
341341
}
342342
else {
343343
errorNameNode = signature.name;
344-
resolver.writeReturnTypeOfSignatureDeclaration(signature, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction | TypeFormatFlags.UseTypeAliasValue, writer);
344+
resolver.writeReturnTypeOfSignatureDeclaration(signature, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction, writer);
345345
errorNameNode = undefined;
346346
}
347347
}
@@ -563,7 +563,7 @@ namespace ts {
563563
write(tempVarName);
564564
write(": ");
565565
writer.getSymbolAccessibilityDiagnostic = getDefaultExportAccessibilityDiagnostic;
566-
resolver.writeTypeOfExpression(node.expression, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction | TypeFormatFlags.UseTypeAliasValue, writer);
566+
resolver.writeTypeOfExpression(node.expression, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction, writer);
567567
write(";");
568568
writeLine();
569569
write(node.isExportEquals ? "export = " : "export default ");
@@ -1025,7 +1025,7 @@ namespace ts {
10251025
}
10261026
else {
10271027
writer.getSymbolAccessibilityDiagnostic = getHeritageClauseVisibilityError;
1028-
resolver.writeBaseConstructorTypeOfClass(<ClassLikeDeclaration>enclosingDeclaration, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction | TypeFormatFlags.UseTypeAliasValue, writer);
1028+
resolver.writeBaseConstructorTypeOfClass(<ClassLikeDeclaration>enclosingDeclaration, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction, writer);
10291029
}
10301030

10311031
function getHeritageClauseVisibilityError(symbolAccessibilityResult: SymbolAccessibilityResult): SymbolAccessibilityDiagnostic {

src/compiler/types.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1949,7 +1949,6 @@ namespace ts {
19491949
UseFullyQualifiedType = 0x00000080, // Write out the fully qualified type name (eg. Module.Type, instead of Type)
19501950
InFirstTypeArgument = 0x00000100, // Writing first type argument of the instantiated type
19511951
InTypeAlias = 0x00000200, // Writing type in type alias declaration
1952-
UseTypeAliasValue = 0x00000400, // Serialize the type instead of using type-alias. This is needed when we emit declaration file.
19531952
}
19541953

19551954
export const enum SymbolFormatFlags {
@@ -2052,7 +2051,7 @@ namespace ts {
20522051
writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void;
20532052
writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void;
20542053
writeBaseConstructorTypeOfClass(node: ClassLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void;
2055-
isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessibilityResult;
2054+
isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags, shouldComputeAliasToMarkVisible: boolean): SymbolAccessibilityResult;
20562055
isEntityNameVisible(entityName: EntityNameOrEntityNameExpression, enclosingDeclaration: Node): SymbolVisibilityResult;
20572056
// Returns the constant value this property access resolves to, or 'undefined' for a non-constant
20582057
getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number;

tests/baselines/reference/controlFlowBinaryOrExpression.types

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,21 @@ declare function isHTMLCollection(sourceObj: any): sourceObj is HTMLCollection;
6262
>HTMLCollection : HTMLCollection
6363

6464
type EventTargetLike = {a: string} | HTMLCollection | NodeList;
65-
>EventTargetLike : EventTargetLike
65+
>EventTargetLike : NodeList | HTMLCollection | { a: string; }
6666
>a : string
6767
>HTMLCollection : HTMLCollection
6868
>NodeList : NodeList
6969

7070
var sourceObj: EventTargetLike = <any>undefined;
71-
>sourceObj : EventTargetLike
72-
>EventTargetLike : EventTargetLike
71+
>sourceObj : NodeList | HTMLCollection | { a: string; }
72+
>EventTargetLike : NodeList | HTMLCollection | { a: string; }
7373
><any>undefined : any
7474
>undefined : undefined
7575

7676
if (isNodeList(sourceObj)) {
7777
>isNodeList(sourceObj) : boolean
7878
>isNodeList : (sourceObj: any) => sourceObj is NodeList
79-
>sourceObj : EventTargetLike
79+
>sourceObj : NodeList | HTMLCollection | { a: string; }
8080

8181
sourceObj.length;
8282
>sourceObj.length : number
@@ -87,7 +87,7 @@ if (isNodeList(sourceObj)) {
8787
if (isHTMLCollection(sourceObj)) {
8888
>isHTMLCollection(sourceObj) : boolean
8989
>isHTMLCollection : (sourceObj: any) => sourceObj is HTMLCollection
90-
>sourceObj : EventTargetLike
90+
>sourceObj : NodeList | HTMLCollection | { a: string; }
9191

9292
sourceObj.length;
9393
>sourceObj.length : number
@@ -99,7 +99,7 @@ if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) {
9999
>isNodeList(sourceObj) || isHTMLCollection(sourceObj) : boolean
100100
>isNodeList(sourceObj) : boolean
101101
>isNodeList : (sourceObj: any) => sourceObj is NodeList
102-
>sourceObj : EventTargetLike
102+
>sourceObj : NodeList | HTMLCollection | { a: string; }
103103
>isHTMLCollection(sourceObj) : boolean
104104
>isHTMLCollection : (sourceObj: any) => sourceObj is HTMLCollection
105105
>sourceObj : HTMLCollection | { a: string; }
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//// [declarationEmitArrayTypesFromGenericArrayUsage.ts]
2+
interface A extends Array<string> { }
3+
4+
5+
//// [declarationEmitArrayTypesFromGenericArrayUsage.js]
6+
7+
8+
//// [declarationEmitArrayTypesFromGenericArrayUsage.d.ts]
9+
interface A extends Array<string> {
10+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
=== tests/cases/compiler/declarationEmitArrayTypesFromGenericArrayUsage.ts ===
2+
interface A extends Array<string> { }
3+
>A : Symbol(A, Decl(declarationEmitArrayTypesFromGenericArrayUsage.ts, 0, 0))
4+
>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
5+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
=== tests/cases/compiler/declarationEmitArrayTypesFromGenericArrayUsage.ts ===
2+
interface A extends Array<string> { }
3+
>A : A
4+
>Array : T[]
5+

tests/baselines/reference/declarationEmit_bindingPatterns.js renamed to tests/baselines/reference/declarationEmitBindingPatterns.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
//// [declarationEmit_bindingPatterns.ts]
1+
//// [declarationEmitBindingPatterns.ts]
22

33
const k = ({x: z = 'y'}) => { }
44

55
var a;
66
function f({} = a, [] = a, { p: {} = a} = a) {
77
}
88

9-
//// [declarationEmit_bindingPatterns.js]
9+
//// [declarationEmitBindingPatterns.js]
1010
var k = function (_a) {
1111
var _b = _a.x, z = _b === void 0 ? 'y' : _b;
1212
};
@@ -18,7 +18,7 @@ function f(_a, _b, _c) {
1818
}
1919

2020

21-
//// [declarationEmit_bindingPatterns.d.ts]
21+
//// [declarationEmitBindingPatterns.d.ts]
2222
declare const k: ({x: z}: {
2323
x?: string;
2424
}) => void;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
=== tests/cases/compiler/declarationEmitBindingPatterns.ts ===
2+
3+
const k = ({x: z = 'y'}) => { }
4+
>k : Symbol(k, Decl(declarationEmitBindingPatterns.ts, 1, 5))
5+
>x : Symbol(x)
6+
>z : Symbol(z, Decl(declarationEmitBindingPatterns.ts, 1, 12))
7+
8+
var a;
9+
>a : Symbol(a, Decl(declarationEmitBindingPatterns.ts, 3, 3))
10+
11+
function f({} = a, [] = a, { p: {} = a} = a) {
12+
>f : Symbol(f, Decl(declarationEmitBindingPatterns.ts, 3, 6))
13+
>a : Symbol(a, Decl(declarationEmitBindingPatterns.ts, 3, 3))
14+
>a : Symbol(a, Decl(declarationEmitBindingPatterns.ts, 3, 3))
15+
>a : Symbol(a, Decl(declarationEmitBindingPatterns.ts, 3, 3))
16+
>a : Symbol(a, Decl(declarationEmitBindingPatterns.ts, 3, 3))
17+
}

tests/baselines/reference/declarationEmit_bindingPatterns.types renamed to tests/baselines/reference/declarationEmitBindingPatterns.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
=== tests/cases/compiler/declarationEmit_bindingPatterns.ts ===
1+
=== tests/cases/compiler/declarationEmitBindingPatterns.ts ===
22

33
const k = ({x: z = 'y'}) => { }
44
>k : ({x: z}: { x?: string; }) => void

tests/baselines/reference/declarationEmit_classMemberNameConflict.js renamed to tests/baselines/reference/declarationEmitClassMemberNameConflict.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//// [declarationEmit_classMemberNameConflict.ts]
1+
//// [declarationEmitClassMemberNameConflict.ts]
22

33
export class C1 {
44
C1() { } // has to be the same as the class name
@@ -36,7 +36,7 @@ export class C4 {
3636
}
3737
}
3838

39-
//// [declarationEmit_classMemberNameConflict.js]
39+
//// [declarationEmitClassMemberNameConflict.js]
4040
"use strict";
4141
var C1 = (function () {
4242
function C1() {
@@ -93,7 +93,7 @@ var C4 = (function () {
9393
exports.C4 = C4;
9494

9595

96-
//// [declarationEmit_classMemberNameConflict.d.ts]
96+
//// [declarationEmitClassMemberNameConflict.d.ts]
9797
export declare class C1 {
9898
C1(): void;
9999
bar(): (t: typeof C1) => void;
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
=== tests/cases/compiler/declarationEmitClassMemberNameConflict.ts ===
2+
3+
export class C1 {
4+
>C1 : Symbol(C1, Decl(declarationEmitClassMemberNameConflict.ts, 0, 0))
5+
6+
C1() { } // has to be the same as the class name
7+
>C1 : Symbol(C1.C1, Decl(declarationEmitClassMemberNameConflict.ts, 1, 17))
8+
9+
bar() {
10+
>bar : Symbol(C1.bar, Decl(declarationEmitClassMemberNameConflict.ts, 2, 12))
11+
12+
return function (t: typeof C1) {
13+
>t : Symbol(t, Decl(declarationEmitClassMemberNameConflict.ts, 5, 25))
14+
>C1 : Symbol(C1, Decl(declarationEmitClassMemberNameConflict.ts, 0, 0))
15+
16+
};
17+
}
18+
}
19+
20+
export class C2 {
21+
>C2 : Symbol(C2, Decl(declarationEmitClassMemberNameConflict.ts, 8, 1))
22+
23+
C2: any // has to be the same as the class name
24+
>C2 : Symbol(C2.C2, Decl(declarationEmitClassMemberNameConflict.ts, 10, 17))
25+
26+
bar() {
27+
>bar : Symbol(C2.bar, Decl(declarationEmitClassMemberNameConflict.ts, 11, 11))
28+
29+
return function (t: typeof C2) {
30+
>t : Symbol(t, Decl(declarationEmitClassMemberNameConflict.ts, 14, 25))
31+
>C2 : Symbol(C2, Decl(declarationEmitClassMemberNameConflict.ts, 8, 1))
32+
33+
};
34+
}
35+
}
36+
37+
export class C3 {
38+
>C3 : Symbol(C3, Decl(declarationEmitClassMemberNameConflict.ts, 17, 1))
39+
40+
get C3() { return 0; } // has to be the same as the class name
41+
>C3 : Symbol(C3.C3, Decl(declarationEmitClassMemberNameConflict.ts, 19, 17))
42+
43+
bar() {
44+
>bar : Symbol(C3.bar, Decl(declarationEmitClassMemberNameConflict.ts, 20, 26))
45+
46+
return function (t: typeof C3) {
47+
>t : Symbol(t, Decl(declarationEmitClassMemberNameConflict.ts, 23, 25))
48+
>C3 : Symbol(C3, Decl(declarationEmitClassMemberNameConflict.ts, 17, 1))
49+
50+
};
51+
}
52+
}
53+
54+
export class C4 {
55+
>C4 : Symbol(C4, Decl(declarationEmitClassMemberNameConflict.ts, 26, 1))
56+
57+
set C4(v) { } // has to be the same as the class name
58+
>C4 : Symbol(C4.C4, Decl(declarationEmitClassMemberNameConflict.ts, 28, 17))
59+
>v : Symbol(v, Decl(declarationEmitClassMemberNameConflict.ts, 29, 11))
60+
61+
bar() {
62+
>bar : Symbol(C4.bar, Decl(declarationEmitClassMemberNameConflict.ts, 29, 17))
63+
64+
return function (t: typeof C4) {
65+
>t : Symbol(t, Decl(declarationEmitClassMemberNameConflict.ts, 32, 25))
66+
>C4 : Symbol(C4, Decl(declarationEmitClassMemberNameConflict.ts, 26, 1))
67+
68+
};
69+
}
70+
}

tests/baselines/reference/declarationEmit_classMemberNameConflict.types renamed to tests/baselines/reference/declarationEmitClassMemberNameConflict.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
=== tests/cases/compiler/declarationEmit_classMemberNameConflict.ts ===
1+
=== tests/cases/compiler/declarationEmitClassMemberNameConflict.ts ===
22

33
export class C1 {
44
>C1 : C1

tests/baselines/reference/declarationEmit_classMemberNameConflict2.js renamed to tests/baselines/reference/declarationEmitClassMemberNameConflict2.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//// [declarationEmit_classMemberNameConflict2.ts]
1+
//// [declarationEmitClassMemberNameConflict2.ts]
22

33
const Bar = 'bar';
44

@@ -21,7 +21,7 @@ class Foo {
2121
Hello2 = Hello1;
2222
}
2323

24-
//// [declarationEmit_classMemberNameConflict2.js]
24+
//// [declarationEmitClassMemberNameConflict2.js]
2525
var Bar = 'bar';
2626
var Hello;
2727
(function (Hello) {
@@ -44,7 +44,7 @@ var Foo = (function () {
4444
}());
4545

4646

47-
//// [declarationEmit_classMemberNameConflict2.d.ts]
47+
//// [declarationEmitClassMemberNameConflict2.d.ts]
4848
declare const Bar: string;
4949
declare enum Hello {
5050
World = 0,

0 commit comments

Comments
 (0)