Skip to content

Commit 4088bc0

Browse files
Only resolve 'arguments' and function/class expression names if the meaning permits it.
1 parent ac152ed commit 4088bc0

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

src/compiler/checker.ts

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -422,27 +422,33 @@ module ts {
422422
case SyntaxKind.SetAccessor:
423423
case SyntaxKind.FunctionDeclaration:
424424
case SyntaxKind.ArrowFunction:
425-
if (name === "arguments") {
426-
result = argumentsSymbol;
427-
break loop;
425+
if (meaning & SymbolFlags.Value) {
426+
if (name === "arguments") {
427+
result = argumentsSymbol;
428+
break loop;
429+
}
428430
}
429431
break;
430432
case SyntaxKind.FunctionExpression:
431-
if (name === "arguments") {
432-
result = argumentsSymbol;
433-
break loop;
434-
}
435-
let functionName = (<FunctionExpression>location).name;
436-
if (functionName && name === functionName.text) {
437-
result = location.symbol;
438-
break loop;
433+
if (meaning & SymbolFlags.Value) {
434+
if (name === "arguments") {
435+
result = argumentsSymbol;
436+
break loop;
437+
}
438+
let functionName = (<FunctionExpression>location).name;
439+
if (functionName && name === functionName.text) {
440+
result = location.symbol;
441+
break loop;
442+
}
439443
}
440444
break;
441445
case SyntaxKind.ClassExpression:
442-
let className = (<ClassExpression>location).name;
443-
if (className && name === className.text) {
444-
result = location.symbol;
445-
break loop;
446+
if (meaning & (SymbolFlags.Value | SymbolFlags.Type)) {
447+
let className = (<ClassExpression>location).name;
448+
if (className && name === className.text) {
449+
result = location.symbol;
450+
break loop;
451+
}
446452
}
447453
break;
448454
case SyntaxKind.Decorator:

0 commit comments

Comments
 (0)