diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 6314f98bcff7c..69f4983ca72bd 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -319,6 +319,7 @@ namespace ts { const globalThisSymbol = createSymbol(SymbolFlags.Module, "globalThis" as __String, CheckFlags.Readonly); globalThisSymbol.exports = globals; + globalThisSymbol.declarations = []; globals.set(globalThisSymbol.escapedName, globalThisSymbol); const argumentsSymbol = createSymbol(SymbolFlags.Property, "arguments" as __String); diff --git a/tests/baselines/reference/extendGlobalThis.symbols b/tests/baselines/reference/extendGlobalThis.symbols index 944d7b237157b..91cd0bf2530c3 100644 --- a/tests/baselines/reference/extendGlobalThis.symbols +++ b/tests/baselines/reference/extendGlobalThis.symbols @@ -3,7 +3,7 @@ declare global { >global : Symbol(global, Decl(extension.d.ts, 0, 0)) namespace globalThis { ->globalThis : Symbol(globalThis) +>globalThis : Symbol(globalThis, Decl(extension.d.ts, 0, 16)) var test: string; >test : Symbol(test, Decl(extension.d.ts, 2, 11)) @@ -16,7 +16,7 @@ export {} import "./extention"; globalThis.tests = "a-b"; ->globalThis : Symbol(globalThis) +>globalThis : Symbol(globalThis, Decl(extension.d.ts, 0, 16)) console.log(globalThis.test.split("-")); >console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) @@ -24,7 +24,7 @@ console.log(globalThis.test.split("-")); >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) >globalThis.test.split : Symbol(String.split, Decl(lib.es5.d.ts, --, --)) >globalThis.test : Symbol(test, Decl(extension.d.ts, 2, 11)) ->globalThis : Symbol(globalThis) +>globalThis : Symbol(globalThis, Decl(extension.d.ts, 0, 16)) >test : Symbol(test, Decl(extension.d.ts, 2, 11)) >split : Symbol(String.split, Decl(lib.es5.d.ts, --, --)) diff --git a/tests/baselines/reference/extendGlobalThis2.errors.txt b/tests/baselines/reference/extendGlobalThis2.errors.txt new file mode 100644 index 0000000000000..09e78cba92da8 --- /dev/null +++ b/tests/baselines/reference/extendGlobalThis2.errors.txt @@ -0,0 +1,10 @@ +tests/cases/compiler/extendGlobalThis2.ts(1,11): error TS2397: Declaration name conflicts with built-in global identifier 'globalThis'. + + +==== tests/cases/compiler/extendGlobalThis2.ts (1 errors) ==== + namespace globalThis { + ~~~~~~~~~~ +!!! error TS2397: Declaration name conflicts with built-in global identifier 'globalThis'. + export function foo() { console.log("x"); } + } + \ No newline at end of file diff --git a/tests/baselines/reference/extendGlobalThis2.js b/tests/baselines/reference/extendGlobalThis2.js new file mode 100644 index 0000000000000..63f06536ce516 --- /dev/null +++ b/tests/baselines/reference/extendGlobalThis2.js @@ -0,0 +1,12 @@ +//// [extendGlobalThis2.ts] +namespace globalThis { + export function foo() { console.log("x"); } +} + + +//// [extendGlobalThis2.js] +var globalThis; +(function (globalThis) { + function foo() { console.log("x"); } + globalThis.foo = foo; +})(globalThis || (globalThis = {})); diff --git a/tests/baselines/reference/extendGlobalThis2.symbols b/tests/baselines/reference/extendGlobalThis2.symbols new file mode 100644 index 0000000000000..f16727a674b4e --- /dev/null +++ b/tests/baselines/reference/extendGlobalThis2.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/extendGlobalThis2.ts === +namespace globalThis { +>globalThis : Symbol(globalThis, Decl(extendGlobalThis2.ts, 0, 0)) + + export function foo() { console.log("x"); } +>foo : Symbol(foo, Decl(extendGlobalThis2.ts, 0, 22)) +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +} + diff --git a/tests/baselines/reference/extendGlobalThis2.types b/tests/baselines/reference/extendGlobalThis2.types new file mode 100644 index 0000000000000..4a06219474245 --- /dev/null +++ b/tests/baselines/reference/extendGlobalThis2.types @@ -0,0 +1,13 @@ +=== tests/cases/compiler/extendGlobalThis2.ts === +namespace globalThis { +>globalThis : typeof globalThis + + export function foo() { console.log("x"); } +>foo : () => void +>console.log("x") : void +>console.log : (message?: any, ...optionalParams: any[]) => void +>console : Console +>log : (message?: any, ...optionalParams: any[]) => void +>"x" : "x" +} + diff --git a/tests/baselines/reference/globalThisPropertyAssignment.symbols b/tests/baselines/reference/globalThisPropertyAssignment.symbols index 1ae4dd5af6387..3bc852cbba175 100644 --- a/tests/baselines/reference/globalThisPropertyAssignment.symbols +++ b/tests/baselines/reference/globalThisPropertyAssignment.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es2019/globalThisPropertyAssignment.js === this.x = 1 >this.x : Symbol(x, Decl(globalThisPropertyAssignment.js, 0, 0)) ->this : Symbol(globalThis) +>this : Symbol(globalThis, Decl(globalThisPropertyAssignment.js, 3, 12)) >x : Symbol(x, Decl(globalThisPropertyAssignment.js, 0, 0)) var y = 2 @@ -14,6 +14,6 @@ window.z = 3 // should work in JS (even though it's a secondary declaration) globalThis.alpha = 4 >globalThis.alpha : Symbol(alpha, Decl(globalThisPropertyAssignment.js, 3, 12)) ->globalThis : Symbol(globalThis) +>globalThis : Symbol(globalThis, Decl(globalThisPropertyAssignment.js, 3, 12)) >alpha : Symbol(alpha, Decl(globalThisPropertyAssignment.js, 3, 12)) diff --git a/tests/cases/compiler/extendGlobalThis2.ts b/tests/cases/compiler/extendGlobalThis2.ts new file mode 100644 index 0000000000000..4949c91cf22eb --- /dev/null +++ b/tests/cases/compiler/extendGlobalThis2.ts @@ -0,0 +1,3 @@ +namespace globalThis { + export function foo() { console.log("x"); } +}