mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-04-17 01:49:41 -05:00
Fix "Cannot find name 'global'. Did you mean 'global'?" (#42262)
* Add tests for "Cannot find name 'global'. Did you mean 'global'?" * Fix "Cannot find name 'global'. Did you mean 'global'?" * Add an additional test case for spelling suggestions of "global". * Name the boolean for suggestions being global scope augmentations.
This commit is contained in:
@@ -2028,6 +2028,10 @@ namespace ts {
|
||||
let suggestion: Symbol | undefined;
|
||||
if (suggestedNameNotFoundMessage && suggestionCount < maximumSuggestionCount) {
|
||||
suggestion = getSuggestedSymbolForNonexistentSymbol(originalLocation, name, meaning);
|
||||
const isGlobalScopeAugmentationDeclaration = suggestion && suggestion.valueDeclaration && isAmbientModule(suggestion.valueDeclaration) && isGlobalScopeAugmentation(suggestion.valueDeclaration);
|
||||
if (isGlobalScopeAugmentationDeclaration) {
|
||||
suggestion = undefined;
|
||||
}
|
||||
if (suggestion) {
|
||||
const suggestionName = symbolToString(suggestion);
|
||||
const diagnostic = error(errorLocation, suggestedNameNotFoundMessage, diagnosticName(nameArg!), suggestionName);
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
tests/cases/compiler/spellingSuggestionGlobal1.ts(3,1): error TS2304: Cannot find name 'global'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/spellingSuggestionGlobal1.ts (1 errors) ====
|
||||
export {}
|
||||
declare global { const x: any }
|
||||
global.x // should not suggest `global` (GH#42209)
|
||||
~~~~~~
|
||||
!!! error TS2304: Cannot find name 'global'.
|
||||
|
||||
10
tests/baselines/reference/spellingSuggestionGlobal1.js
Normal file
10
tests/baselines/reference/spellingSuggestionGlobal1.js
Normal file
@@ -0,0 +1,10 @@
|
||||
//// [spellingSuggestionGlobal1.ts]
|
||||
export {}
|
||||
declare global { const x: any }
|
||||
global.x // should not suggest `global` (GH#42209)
|
||||
|
||||
|
||||
//// [spellingSuggestionGlobal1.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
global.x; // should not suggest `global` (GH#42209)
|
||||
@@ -0,0 +1,8 @@
|
||||
=== tests/cases/compiler/spellingSuggestionGlobal1.ts ===
|
||||
export {}
|
||||
declare global { const x: any }
|
||||
>global : Symbol(global, Decl(spellingSuggestionGlobal1.ts, 0, 9))
|
||||
>x : Symbol(x, Decl(spellingSuggestionGlobal1.ts, 1, 22))
|
||||
|
||||
global.x // should not suggest `global` (GH#42209)
|
||||
|
||||
11
tests/baselines/reference/spellingSuggestionGlobal1.types
Normal file
11
tests/baselines/reference/spellingSuggestionGlobal1.types
Normal file
@@ -0,0 +1,11 @@
|
||||
=== tests/cases/compiler/spellingSuggestionGlobal1.ts ===
|
||||
export {}
|
||||
declare global { const x: any }
|
||||
>global : typeof global
|
||||
>x : any
|
||||
|
||||
global.x // should not suggest `global` (GH#42209)
|
||||
>global.x : any
|
||||
>global : any
|
||||
>x : any
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
tests/cases/compiler/spellingSuggestionGlobal2.ts(4,1): error TS2552: Cannot find name 'global'. Did you mean 'globals'?
|
||||
|
||||
|
||||
==== tests/cases/compiler/spellingSuggestionGlobal2.ts (1 errors) ====
|
||||
export {}
|
||||
declare global { const x: any }
|
||||
const globals = { x: true }
|
||||
global.x // should suggest `globals` (GH#42209)
|
||||
~~~~~~
|
||||
!!! error TS2552: Cannot find name 'global'. Did you mean 'globals'?
|
||||
!!! related TS2728 tests/cases/compiler/spellingSuggestionGlobal2.ts:3:7: 'globals' is declared here.
|
||||
|
||||
12
tests/baselines/reference/spellingSuggestionGlobal2.js
Normal file
12
tests/baselines/reference/spellingSuggestionGlobal2.js
Normal file
@@ -0,0 +1,12 @@
|
||||
//// [spellingSuggestionGlobal2.ts]
|
||||
export {}
|
||||
declare global { const x: any }
|
||||
const globals = { x: true }
|
||||
global.x // should suggest `globals` (GH#42209)
|
||||
|
||||
|
||||
//// [spellingSuggestionGlobal2.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
var globals = { x: true };
|
||||
global.x; // should suggest `globals` (GH#42209)
|
||||
12
tests/baselines/reference/spellingSuggestionGlobal2.symbols
Normal file
12
tests/baselines/reference/spellingSuggestionGlobal2.symbols
Normal file
@@ -0,0 +1,12 @@
|
||||
=== tests/cases/compiler/spellingSuggestionGlobal2.ts ===
|
||||
export {}
|
||||
declare global { const x: any }
|
||||
>global : Symbol(global, Decl(spellingSuggestionGlobal2.ts, 0, 9))
|
||||
>x : Symbol(x, Decl(spellingSuggestionGlobal2.ts, 1, 22))
|
||||
|
||||
const globals = { x: true }
|
||||
>globals : Symbol(globals, Decl(spellingSuggestionGlobal2.ts, 2, 5))
|
||||
>x : Symbol(x, Decl(spellingSuggestionGlobal2.ts, 2, 17))
|
||||
|
||||
global.x // should suggest `globals` (GH#42209)
|
||||
|
||||
17
tests/baselines/reference/spellingSuggestionGlobal2.types
Normal file
17
tests/baselines/reference/spellingSuggestionGlobal2.types
Normal file
@@ -0,0 +1,17 @@
|
||||
=== tests/cases/compiler/spellingSuggestionGlobal2.ts ===
|
||||
export {}
|
||||
declare global { const x: any }
|
||||
>global : typeof global
|
||||
>x : any
|
||||
|
||||
const globals = { x: true }
|
||||
>globals : { x: boolean; }
|
||||
>{ x: true } : { x: boolean; }
|
||||
>x : boolean
|
||||
>true : true
|
||||
|
||||
global.x // should suggest `globals` (GH#42209)
|
||||
>global.x : any
|
||||
>global : any
|
||||
>x : any
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
tests/cases/compiler/spellingSuggestionGlobal3.ts(2,1): error TS2552: Cannot find name 'globals'. Did you mean 'global'?
|
||||
|
||||
|
||||
==== tests/cases/compiler/spellingSuggestionGlobal3.ts (1 errors) ====
|
||||
const global = { x: true }
|
||||
globals.x // should suggest `global` (GH#42209)
|
||||
~~~~~~~
|
||||
!!! error TS2552: Cannot find name 'globals'. Did you mean 'global'?
|
||||
!!! related TS2728 tests/cases/compiler/spellingSuggestionGlobal3.ts:1:7: 'global' is declared here.
|
||||
|
||||
8
tests/baselines/reference/spellingSuggestionGlobal3.js
Normal file
8
tests/baselines/reference/spellingSuggestionGlobal3.js
Normal file
@@ -0,0 +1,8 @@
|
||||
//// [spellingSuggestionGlobal3.ts]
|
||||
const global = { x: true }
|
||||
globals.x // should suggest `global` (GH#42209)
|
||||
|
||||
|
||||
//// [spellingSuggestionGlobal3.js]
|
||||
var global = { x: true };
|
||||
globals.x; // should suggest `global` (GH#42209)
|
||||
@@ -0,0 +1,7 @@
|
||||
=== tests/cases/compiler/spellingSuggestionGlobal3.ts ===
|
||||
const global = { x: true }
|
||||
>global : Symbol(global, Decl(spellingSuggestionGlobal3.ts, 0, 5))
|
||||
>x : Symbol(x, Decl(spellingSuggestionGlobal3.ts, 0, 16))
|
||||
|
||||
globals.x // should suggest `global` (GH#42209)
|
||||
|
||||
12
tests/baselines/reference/spellingSuggestionGlobal3.types
Normal file
12
tests/baselines/reference/spellingSuggestionGlobal3.types
Normal file
@@ -0,0 +1,12 @@
|
||||
=== tests/cases/compiler/spellingSuggestionGlobal3.ts ===
|
||||
const global = { x: true }
|
||||
>global : { x: boolean; }
|
||||
>{ x: true } : { x: boolean; }
|
||||
>x : boolean
|
||||
>true : true
|
||||
|
||||
globals.x // should suggest `global` (GH#42209)
|
||||
>globals.x : any
|
||||
>globals : any
|
||||
>x : any
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
tests/cases/compiler/spellingSuggestionGlobal4.ts(3,1): error TS2304: Cannot find name 'global'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/spellingSuggestionGlobal4.ts (1 errors) ====
|
||||
export {}
|
||||
declare global { var x: any }
|
||||
global.x // should not suggest `global` (GH#42209)
|
||||
~~~~~~
|
||||
!!! error TS2304: Cannot find name 'global'.
|
||||
|
||||
10
tests/baselines/reference/spellingSuggestionGlobal4.js
Normal file
10
tests/baselines/reference/spellingSuggestionGlobal4.js
Normal file
@@ -0,0 +1,10 @@
|
||||
//// [spellingSuggestionGlobal4.ts]
|
||||
export {}
|
||||
declare global { var x: any }
|
||||
global.x // should not suggest `global` (GH#42209)
|
||||
|
||||
|
||||
//// [spellingSuggestionGlobal4.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
global.x; // should not suggest `global` (GH#42209)
|
||||
@@ -0,0 +1,8 @@
|
||||
=== tests/cases/compiler/spellingSuggestionGlobal4.ts ===
|
||||
export {}
|
||||
declare global { var x: any }
|
||||
>global : Symbol(global, Decl(spellingSuggestionGlobal4.ts, 0, 9))
|
||||
>x : Symbol(x, Decl(spellingSuggestionGlobal4.ts, 1, 20))
|
||||
|
||||
global.x // should not suggest `global` (GH#42209)
|
||||
|
||||
11
tests/baselines/reference/spellingSuggestionGlobal4.types
Normal file
11
tests/baselines/reference/spellingSuggestionGlobal4.types
Normal file
@@ -0,0 +1,11 @@
|
||||
=== tests/cases/compiler/spellingSuggestionGlobal4.ts ===
|
||||
export {}
|
||||
declare global { var x: any }
|
||||
>global : typeof global
|
||||
>x : any
|
||||
|
||||
global.x // should not suggest `global` (GH#42209)
|
||||
>global.x : any
|
||||
>global : any
|
||||
>x : any
|
||||
|
||||
3
tests/cases/compiler/spellingSuggestionGlobal1.ts
Normal file
3
tests/cases/compiler/spellingSuggestionGlobal1.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export {}
|
||||
declare global { const x: any }
|
||||
global.x // should not suggest `global` (GH#42209)
|
||||
4
tests/cases/compiler/spellingSuggestionGlobal2.ts
Normal file
4
tests/cases/compiler/spellingSuggestionGlobal2.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export {}
|
||||
declare global { const x: any }
|
||||
const globals = { x: true }
|
||||
global.x // should suggest `globals` (GH#42209)
|
||||
2
tests/cases/compiler/spellingSuggestionGlobal3.ts
Normal file
2
tests/cases/compiler/spellingSuggestionGlobal3.ts
Normal file
@@ -0,0 +1,2 @@
|
||||
const global = { x: true }
|
||||
globals.x // should suggest `global` (GH#42209)
|
||||
3
tests/cases/compiler/spellingSuggestionGlobal4.ts
Normal file
3
tests/cases/compiler/spellingSuggestionGlobal4.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export {}
|
||||
declare global { var x: any }
|
||||
global.x // should not suggest `global` (GH#42209)
|
||||
Reference in New Issue
Block a user