@@ -268,8 +268,8 @@ namespace ts {
268268 getSuggestionForNonexistentSymbol: (location, name, meaning) => getSuggestionForNonexistentSymbol(location, escapeLeadingUnderscores(name), meaning),
269269 getBaseConstraintOfType,
270270 getDefaultFromTypeParameter: type => type && type.flags & TypeFlags.TypeParameter ? getDefaultFromTypeParameter(type as TypeParameter) : undefined,
271- resolveName(name, location, meaning) {
272- return resolveName(location, escapeLeadingUnderscores(name), meaning, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined, /*isUse*/ false);
271+ resolveName(name, location, meaning, excludeGlobals ) {
272+ return resolveName(location, escapeLeadingUnderscores(name), meaning, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined, /*isUse*/ false, excludeGlobals );
273273 },
274274 getJsxNamespace: () => unescapeLeadingUnderscores(getJsxNamespace()),
275275 getAccessibleSymbolChain,
@@ -952,8 +952,9 @@ namespace ts {
952952 nameNotFoundMessage: DiagnosticMessage | undefined,
953953 nameArg: __String | Identifier,
954954 isUse: boolean,
955+ excludeGlobals = false,
955956 suggestedNameNotFoundMessage?: DiagnosticMessage): Symbol {
956- return resolveNameHelper(location, name, meaning, nameNotFoundMessage, nameArg, isUse, getSymbol, suggestedNameNotFoundMessage);
957+ return resolveNameHelper(location, name, meaning, nameNotFoundMessage, nameArg, isUse, excludeGlobals, getSymbol, suggestedNameNotFoundMessage);
957958 }
958959
959960 function resolveNameHelper(
@@ -963,6 +964,7 @@ namespace ts {
963964 nameNotFoundMessage: DiagnosticMessage,
964965 nameArg: __String | Identifier,
965966 isUse: boolean,
967+ excludeGlobals: boolean,
966968 lookup: typeof getSymbol,
967969 suggestedNameNotFoundMessage?: DiagnosticMessage): Symbol {
968970 const originalLocation = location; // needed for did-you-mean error reporting, which gathers candidates starting from the original location
@@ -1209,7 +1211,9 @@ namespace ts {
12091211 }
12101212 }
12111213
1212- result = lookup(globals, name, meaning);
1214+ if (!excludeGlobals) {
1215+ result = lookup(globals, name, meaning);
1216+ }
12131217 }
12141218
12151219 if (!result) {
@@ -11889,6 +11893,7 @@ namespace ts {
1188911893 Diagnostics.Cannot_find_name_0,
1189011894 node,
1189111895 !isWriteOnlyAccess(node),
11896+ /*excludeGlobals*/ false,
1189211897 Diagnostics.Cannot_find_name_0_Did_you_mean_1) || unknownSymbol;
1189311898 }
1189411899 return links.resolvedSymbol;
@@ -16068,7 +16073,7 @@ namespace ts {
1606816073
1606916074 function getSuggestionForNonexistentSymbol(location: Node, outerName: __String, meaning: SymbolFlags): string {
1607016075 Debug.assert(outerName !== undefined, "outername should always be defined");
16071- const result = resolveNameHelper(location, outerName, meaning, /*nameNotFoundMessage*/ undefined, outerName, /*isUse*/ false, (symbols, name, meaning) => {
16076+ const result = resolveNameHelper(location, outerName, meaning, /*nameNotFoundMessage*/ undefined, outerName, /*isUse*/ false, /*excludeGlobals*/ false, (symbols, name, meaning) => {
1607216077 Debug.assertEqual(outerName, name, "name should equal outerName");
1607316078 const symbol = getSymbol(symbols, name, meaning);
1607416079 // Sometimes the symbol is found when location is a return type of a function: `typeof x` and `x` is declared in the body of the function
0 commit comments