Skip to content

Commit f0f58da

Browse files
committed
JS: Also emit 'this' variable for class scopes
1 parent 4a3b86c commit f0f58da

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1545,8 +1545,9 @@ private Label visit(AClass ac, Label key, Node scopeNode, boolean isClassExpress
15451545
if (!isClassExpression) {
15461546
visit(ac.getId(), key, 0, IdContext.VAR_AND_TYPE_DECL);
15471547
}
1548+
scopeManager.enterScope(scopeNode);
1549+
scopeManager.addVariables("this"); // 'this' in static field initialiers refers to the class
15481550
if (ac.hasId() || ac.hasTypeParameters()) {
1549-
scopeManager.enterScope(scopeNode);
15501551
if (isClassExpression && ac.hasId()) {
15511552
scopeManager.addVariables(ac.getId().getName());
15521553
scopeManager.addTypeName(ac.getId().getName());
@@ -1569,9 +1570,7 @@ private Label visit(AClass ac, Label key, Node scopeNode, boolean isClassExpress
15691570
addDefaultConstructor(ac);
15701571
}
15711572
visit(ac.getBody(), key, 2);
1572-
if (ac.hasId() || ac.hasTypeParameters()) {
1573-
scopeManager.leaveScope();
1574-
}
1573+
scopeManager.leaveScope();
15751574
emitNodeSymbol(ac, key);
15761575
return key;
15771576
}

0 commit comments

Comments
 (0)