Skip to content

Commit f1fe0b8

Browse files
committed
use better scope
1 parent 55c3ec3 commit f1fe0b8

File tree

1 file changed

+11
-8
lines changed
  • src/compiler/transformers

1 file changed

+11
-8
lines changed

src/compiler/transformers/ts.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ namespace ts {
6161
let currentSourceFile: SourceFile;
6262
let currentNamespace: ModuleDeclaration;
6363
let currentNamespaceContainerName: Identifier;
64-
let currentScope: SourceFile | Block | ModuleBlock | CaseBlock;
64+
let currentScope: SourceFile | Block | ModuleBlock | CaseBlock | ClassDeclaration;
6565
let currentScopeFirstDeclarationsOfName: UnderscoreEscapedMap<Node> | undefined;
6666

6767
/**
@@ -166,6 +166,9 @@ namespace ts {
166166

167167
case SyntaxKind.ClassDeclaration:
168168
case SyntaxKind.FunctionDeclaration:
169+
if (isClassDeclaration(node)) {
170+
currentScope = node;
171+
}
169172
if (hasModifier(node, ModifierFlags.Ambient)) {
170173
break;
171174
}
@@ -1971,13 +1974,13 @@ namespace ts {
19711974
function serializeTypeReferenceNode(node: TypeReferenceNode): SerializedTypeNode {
19721975
// node might be a reference to type variable, which can be scoped to a class declaration, in addition to the regular
19731976
// TypeScript scopes. Walk up the AST to find the next class and use that as the lookup scope.
1974-
let scope: Node = node;
1975-
while (scope.parent && scope !== currentScope) {
1976-
scope = scope.parent;
1977-
if (isClassDeclaration(scope)) {
1978-
break;
1979-
}
1980-
}
1977+
let scope: Node = currentScope;
1978+
// while (scope.parent && scope !== currentScope) {
1979+
// scope = scope.parent;
1980+
// if (isClassDeclaration(scope)) {
1981+
// break;
1982+
// }
1983+
// }
19811984
const kind = resolver.getTypeReferenceSerializationKind(node.typeName, scope);
19821985
switch (kind) {
19831986
case TypeReferenceSerializationKind.Unknown:

0 commit comments

Comments
 (0)