Skip to content

Commit bd74b7a

Browse files
committed
Check toplevel flag before bind
1 parent 340a718 commit bd74b7a

File tree

4 files changed

+133
-5
lines changed

4 files changed

+133
-5
lines changed

src/compiler/binder.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1809,11 +1809,14 @@ namespace ts {
18091809
const declName = getNameOfDeclaration(typeAlias);
18101810
if ((isJSDocEnumTag(typeAlias) || !typeAlias.fullName) && declName && isPropertyAccessEntityNameExpression(declName.parent)) {
18111811
// typdef anchored to an A.B.C assignment - we need to bind into B's namespace under name C
1812-
bindPotentiallyMissingNamespaces(file.symbol, declName.parent, getIsTopLevelNamespaceishAssignment(declName.parent), !!findAncestor(declName, d => isPropertyAccessExpression(d) && d.name.escapedText === "prototype"));
1813-
const oldContainer = container;
1814-
container = isPropertyAccessExpression(declName.parent.expression) ? declName.parent.expression.name : declName.parent.expression;
1815-
declareModuleMember(typeAlias, SymbolFlags.TypeAlias, SymbolFlags.TypeAliasExcludes);
1816-
container = oldContainer;
1812+
const isTL = getIsTopLevelNamespaceishAssignment(declName.parent);
1813+
if (isTL) {
1814+
bindPotentiallyMissingNamespaces(file.symbol, declName.parent, isTL, !!findAncestor(declName, d => isPropertyAccessExpression(d) && d.name.escapedText === "prototype"));
1815+
const oldContainer = container;
1816+
container = isPropertyAccessExpression(declName.parent.expression) ? declName.parent.expression.name : declName.parent.expression;
1817+
declareModuleMember(typeAlias, SymbolFlags.TypeAlias, SymbolFlags.TypeAliasExcludes);
1818+
container = oldContainer;
1819+
}
18171820
}
18181821
else if (isJSDocEnumTag(typeAlias) || !typeAlias.fullName || typeAlias.fullName.kind === SyntaxKind.Identifier) {
18191822
parent = typeAlias.parent;
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
=== tests/cases/compiler/index.js ===
2+
function defineCommonExtensionSymbols(apiPrivate) {
3+
>defineCommonExtensionSymbols : Symbol(defineCommonExtensionSymbols, Decl(index.js, 0, 0))
4+
>apiPrivate : Symbol(apiPrivate, Decl(index.js, 0, 38))
5+
6+
/** @enum {string} */
7+
apiPrivate.Events = {
8+
>apiPrivate : Symbol(apiPrivate, Decl(index.js, 0, 38))
9+
10+
ButtonClicked: 'button-clicked-',
11+
>ButtonClicked : Symbol(ButtonClicked, Decl(index.js, 2, 25))
12+
13+
PanelObjectSelected: 'panel-objectSelected-',
14+
>PanelObjectSelected : Symbol(PanelObjectSelected, Decl(index.js, 3, 39))
15+
16+
NetworkRequestFinished: 'network-request-finished',
17+
>NetworkRequestFinished : Symbol(NetworkRequestFinished, Decl(index.js, 4, 51))
18+
19+
OpenResource: 'open-resource',
20+
>OpenResource : Symbol(OpenResource, Decl(index.js, 5, 57))
21+
22+
PanelSearch: 'panel-search-',
23+
>PanelSearch : Symbol(PanelSearch, Decl(index.js, 6, 36))
24+
25+
RecordingStarted: 'trace-recording-started-',
26+
>RecordingStarted : Symbol(RecordingStarted, Decl(index.js, 7, 35))
27+
28+
RecordingStopped: 'trace-recording-stopped-',
29+
>RecordingStopped : Symbol(RecordingStopped, Decl(index.js, 8, 51))
30+
31+
ResourceAdded: 'resource-added',
32+
>ResourceAdded : Symbol(ResourceAdded, Decl(index.js, 9, 51))
33+
34+
ResourceContentCommitted: 'resource-content-committed',
35+
>ResourceContentCommitted : Symbol(ResourceContentCommitted, Decl(index.js, 10, 38))
36+
37+
ViewShown: 'view-shown-',
38+
>ViewShown : Symbol(ViewShown, Decl(index.js, 11, 61))
39+
40+
ViewHidden: 'view-hidden-'
41+
>ViewHidden : Symbol(ViewHidden, Decl(index.js, 12, 31))
42+
43+
};
44+
}
45+
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
=== tests/cases/compiler/index.js ===
2+
function defineCommonExtensionSymbols(apiPrivate) {
3+
>defineCommonExtensionSymbols : (apiPrivate: any) => void
4+
>apiPrivate : any
5+
6+
/** @enum {string} */
7+
apiPrivate.Events = {
8+
>apiPrivate.Events = { ButtonClicked: 'button-clicked-', PanelObjectSelected: 'panel-objectSelected-', NetworkRequestFinished: 'network-request-finished', OpenResource: 'open-resource', PanelSearch: 'panel-search-', RecordingStarted: 'trace-recording-started-', RecordingStopped: 'trace-recording-stopped-', ResourceAdded: 'resource-added', ResourceContentCommitted: 'resource-content-committed', ViewShown: 'view-shown-', ViewHidden: 'view-hidden-' } : { ButtonClicked: string; PanelObjectSelected: string; NetworkRequestFinished: string; OpenResource: string; PanelSearch: string; RecordingStarted: string; RecordingStopped: string; ResourceAdded: string; ResourceContentCommitted: string; ViewShown: string; ViewHidden: string; }
9+
>apiPrivate.Events : any
10+
>apiPrivate : any
11+
>Events : any
12+
>{ ButtonClicked: 'button-clicked-', PanelObjectSelected: 'panel-objectSelected-', NetworkRequestFinished: 'network-request-finished', OpenResource: 'open-resource', PanelSearch: 'panel-search-', RecordingStarted: 'trace-recording-started-', RecordingStopped: 'trace-recording-stopped-', ResourceAdded: 'resource-added', ResourceContentCommitted: 'resource-content-committed', ViewShown: 'view-shown-', ViewHidden: 'view-hidden-' } : { ButtonClicked: string; PanelObjectSelected: string; NetworkRequestFinished: string; OpenResource: string; PanelSearch: string; RecordingStarted: string; RecordingStopped: string; ResourceAdded: string; ResourceContentCommitted: string; ViewShown: string; ViewHidden: string; }
13+
14+
ButtonClicked: 'button-clicked-',
15+
>ButtonClicked : string
16+
>'button-clicked-' : "button-clicked-"
17+
18+
PanelObjectSelected: 'panel-objectSelected-',
19+
>PanelObjectSelected : string
20+
>'panel-objectSelected-' : "panel-objectSelected-"
21+
22+
NetworkRequestFinished: 'network-request-finished',
23+
>NetworkRequestFinished : string
24+
>'network-request-finished' : "network-request-finished"
25+
26+
OpenResource: 'open-resource',
27+
>OpenResource : string
28+
>'open-resource' : "open-resource"
29+
30+
PanelSearch: 'panel-search-',
31+
>PanelSearch : string
32+
>'panel-search-' : "panel-search-"
33+
34+
RecordingStarted: 'trace-recording-started-',
35+
>RecordingStarted : string
36+
>'trace-recording-started-' : "trace-recording-started-"
37+
38+
RecordingStopped: 'trace-recording-stopped-',
39+
>RecordingStopped : string
40+
>'trace-recording-stopped-' : "trace-recording-stopped-"
41+
42+
ResourceAdded: 'resource-added',
43+
>ResourceAdded : string
44+
>'resource-added' : "resource-added"
45+
46+
ResourceContentCommitted: 'resource-content-committed',
47+
>ResourceContentCommitted : string
48+
>'resource-content-committed' : "resource-content-committed"
49+
50+
ViewShown: 'view-shown-',
51+
>ViewShown : string
52+
>'view-shown-' : "view-shown-"
53+
54+
ViewHidden: 'view-hidden-'
55+
>ViewHidden : string
56+
>'view-hidden-' : "view-hidden-"
57+
58+
};
59+
}
60+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// @noEmit: true
2+
// @checkJs: true
3+
// @allowJs: true
4+
// @filename: index.js
5+
function defineCommonExtensionSymbols(apiPrivate) {
6+
/** @enum {string} */
7+
apiPrivate.Events = {
8+
ButtonClicked: 'button-clicked-',
9+
PanelObjectSelected: 'panel-objectSelected-',
10+
NetworkRequestFinished: 'network-request-finished',
11+
OpenResource: 'open-resource',
12+
PanelSearch: 'panel-search-',
13+
RecordingStarted: 'trace-recording-started-',
14+
RecordingStopped: 'trace-recording-stopped-',
15+
ResourceAdded: 'resource-added',
16+
ResourceContentCommitted: 'resource-content-committed',
17+
ViewShown: 'view-shown-',
18+
ViewHidden: 'view-hidden-'
19+
};
20+
}

0 commit comments

Comments
 (0)