diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 711cb06bdead9..181701fd3658a 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -10349,7 +10349,7 @@ namespace ts { t.flags & TypeFlags.Intersection ? getApparentTypeOfIntersectionType(t) : t.flags & TypeFlags.StringLike ? globalStringType : t.flags & TypeFlags.NumberLike ? globalNumberType : - t.flags & TypeFlags.BigIntLike ? getGlobalBigIntType(/*reportErrors*/ languageVersion >= ScriptTarget.ESNext) : + t.flags & TypeFlags.BigIntLike ? getGlobalBigIntType(/*reportErrors*/ languageVersion >= ScriptTarget.ES2020) : t.flags & TypeFlags.BooleanLike ? globalBooleanType : t.flags & TypeFlags.ESSymbolLike ? getGlobalESSymbolType(/*reportErrors*/ languageVersion >= ScriptTarget.ES2015) : t.flags & TypeFlags.NonPrimitive ? emptyObjectType : diff --git a/tests/baselines/reference/bigintMissingES2019.js b/tests/baselines/reference/bigintMissingES2019.js new file mode 100644 index 0000000000000..85c82e8da6768 --- /dev/null +++ b/tests/baselines/reference/bigintMissingES2019.js @@ -0,0 +1,13 @@ +//// [bigintMissingES2019.ts] +declare function test(): void; + +test<{t?: string}, object>(); +test<{t?: string}, bigint>(); + +// no error when bigint is used even when ES2020 lib is not present + + +//// [bigintMissingES2019.js] +test(); +test(); +// no error when bigint is used even when ES2020 lib is not present diff --git a/tests/baselines/reference/bigintMissingES2019.symbols b/tests/baselines/reference/bigintMissingES2019.symbols new file mode 100644 index 0000000000000..d0f2102df04ef --- /dev/null +++ b/tests/baselines/reference/bigintMissingES2019.symbols @@ -0,0 +1,17 @@ +=== tests/cases/conformance/es2020/bigintMissingES2019.ts === +declare function test(): void; +>test : Symbol(test, Decl(bigintMissingES2019.ts, 0, 0)) +>A : Symbol(A, Decl(bigintMissingES2019.ts, 0, 22)) +>B : Symbol(B, Decl(bigintMissingES2019.ts, 0, 24)) +>A : Symbol(A, Decl(bigintMissingES2019.ts, 0, 22)) + +test<{t?: string}, object>(); +>test : Symbol(test, Decl(bigintMissingES2019.ts, 0, 0)) +>t : Symbol(t, Decl(bigintMissingES2019.ts, 2, 6)) + +test<{t?: string}, bigint>(); +>test : Symbol(test, Decl(bigintMissingES2019.ts, 0, 0)) +>t : Symbol(t, Decl(bigintMissingES2019.ts, 3, 6)) + +// no error when bigint is used even when ES2020 lib is not present + diff --git a/tests/baselines/reference/bigintMissingES2019.types b/tests/baselines/reference/bigintMissingES2019.types new file mode 100644 index 0000000000000..a757652768d7a --- /dev/null +++ b/tests/baselines/reference/bigintMissingES2019.types @@ -0,0 +1,16 @@ +=== tests/cases/conformance/es2020/bigintMissingES2019.ts === +declare function test(): void; +>test : () => void + +test<{t?: string}, object>(); +>test<{t?: string}, object>() : void +>test : () => void +>t : string + +test<{t?: string}, bigint>(); +>test<{t?: string}, bigint>() : void +>test : () => void +>t : string + +// no error when bigint is used even when ES2020 lib is not present + diff --git a/tests/baselines/reference/bigintMissingES2020.errors.txt b/tests/baselines/reference/bigintMissingES2020.errors.txt new file mode 100644 index 0000000000000..768ee7214c8ac --- /dev/null +++ b/tests/baselines/reference/bigintMissingES2020.errors.txt @@ -0,0 +1,12 @@ +error TS2318: Cannot find global type 'BigInt'. + + +!!! error TS2318: Cannot find global type 'BigInt'. +==== tests/cases/conformance/es2020/bigintMissingES2020.ts (0 errors) ==== + declare function test(): void; + + test<{t?: string}, object>(); + test<{t?: string}, bigint>(); + + // should have global error when bigint is used but ES2020 lib is not present + \ No newline at end of file diff --git a/tests/baselines/reference/bigintMissingES2020.js b/tests/baselines/reference/bigintMissingES2020.js new file mode 100644 index 0000000000000..83e2cde68e062 --- /dev/null +++ b/tests/baselines/reference/bigintMissingES2020.js @@ -0,0 +1,13 @@ +//// [bigintMissingES2020.ts] +declare function test(): void; + +test<{t?: string}, object>(); +test<{t?: string}, bigint>(); + +// should have global error when bigint is used but ES2020 lib is not present + + +//// [bigintMissingES2020.js] +test(); +test(); +// should have global error when bigint is used but ES2020 lib is not present diff --git a/tests/baselines/reference/bigintMissingES2020.symbols b/tests/baselines/reference/bigintMissingES2020.symbols new file mode 100644 index 0000000000000..0757f97759e70 --- /dev/null +++ b/tests/baselines/reference/bigintMissingES2020.symbols @@ -0,0 +1,17 @@ +=== tests/cases/conformance/es2020/bigintMissingES2020.ts === +declare function test(): void; +>test : Symbol(test, Decl(bigintMissingES2020.ts, 0, 0)) +>A : Symbol(A, Decl(bigintMissingES2020.ts, 0, 22)) +>B : Symbol(B, Decl(bigintMissingES2020.ts, 0, 24)) +>A : Symbol(A, Decl(bigintMissingES2020.ts, 0, 22)) + +test<{t?: string}, object>(); +>test : Symbol(test, Decl(bigintMissingES2020.ts, 0, 0)) +>t : Symbol(t, Decl(bigintMissingES2020.ts, 2, 6)) + +test<{t?: string}, bigint>(); +>test : Symbol(test, Decl(bigintMissingES2020.ts, 0, 0)) +>t : Symbol(t, Decl(bigintMissingES2020.ts, 3, 6)) + +// should have global error when bigint is used but ES2020 lib is not present + diff --git a/tests/baselines/reference/bigintMissingES2020.types b/tests/baselines/reference/bigintMissingES2020.types new file mode 100644 index 0000000000000..36b26c3a43d01 --- /dev/null +++ b/tests/baselines/reference/bigintMissingES2020.types @@ -0,0 +1,16 @@ +=== tests/cases/conformance/es2020/bigintMissingES2020.ts === +declare function test(): void; +>test : () => void + +test<{t?: string}, object>(); +>test<{t?: string}, object>() : void +>test : () => void +>t : string + +test<{t?: string}, bigint>(); +>test<{t?: string}, bigint>() : void +>test : () => void +>t : string + +// should have global error when bigint is used but ES2020 lib is not present + diff --git a/tests/baselines/reference/bigintMissingESNext.errors.txt b/tests/baselines/reference/bigintMissingESNext.errors.txt new file mode 100644 index 0000000000000..381223a9451ce --- /dev/null +++ b/tests/baselines/reference/bigintMissingESNext.errors.txt @@ -0,0 +1,12 @@ +error TS2318: Cannot find global type 'BigInt'. + + +!!! error TS2318: Cannot find global type 'BigInt'. +==== tests/cases/conformance/es2020/bigintMissingESNext.ts (0 errors) ==== + declare function test(): void; + + test<{t?: string}, object>(); + test<{t?: string}, bigint>(); + + // should have global error when bigint is used but ES2020 lib is not present + \ No newline at end of file diff --git a/tests/baselines/reference/bigintMissingESNext.js b/tests/baselines/reference/bigintMissingESNext.js new file mode 100644 index 0000000000000..5029ca536c28a --- /dev/null +++ b/tests/baselines/reference/bigintMissingESNext.js @@ -0,0 +1,13 @@ +//// [bigintMissingESNext.ts] +declare function test(): void; + +test<{t?: string}, object>(); +test<{t?: string}, bigint>(); + +// should have global error when bigint is used but ES2020 lib is not present + + +//// [bigintMissingESNext.js] +test(); +test(); +// should have global error when bigint is used but ES2020 lib is not present diff --git a/tests/baselines/reference/bigintMissingESNext.symbols b/tests/baselines/reference/bigintMissingESNext.symbols new file mode 100644 index 0000000000000..bd500ba04b04e --- /dev/null +++ b/tests/baselines/reference/bigintMissingESNext.symbols @@ -0,0 +1,17 @@ +=== tests/cases/conformance/es2020/bigintMissingESNext.ts === +declare function test(): void; +>test : Symbol(test, Decl(bigintMissingESNext.ts, 0, 0)) +>A : Symbol(A, Decl(bigintMissingESNext.ts, 0, 22)) +>B : Symbol(B, Decl(bigintMissingESNext.ts, 0, 24)) +>A : Symbol(A, Decl(bigintMissingESNext.ts, 0, 22)) + +test<{t?: string}, object>(); +>test : Symbol(test, Decl(bigintMissingESNext.ts, 0, 0)) +>t : Symbol(t, Decl(bigintMissingESNext.ts, 2, 6)) + +test<{t?: string}, bigint>(); +>test : Symbol(test, Decl(bigintMissingESNext.ts, 0, 0)) +>t : Symbol(t, Decl(bigintMissingESNext.ts, 3, 6)) + +// should have global error when bigint is used but ES2020 lib is not present + diff --git a/tests/baselines/reference/bigintMissingESNext.types b/tests/baselines/reference/bigintMissingESNext.types new file mode 100644 index 0000000000000..6665aac1d5c9b --- /dev/null +++ b/tests/baselines/reference/bigintMissingESNext.types @@ -0,0 +1,16 @@ +=== tests/cases/conformance/es2020/bigintMissingESNext.ts === +declare function test(): void; +>test : () => void + +test<{t?: string}, object>(); +>test<{t?: string}, object>() : void +>test : () => void +>t : string + +test<{t?: string}, bigint>(); +>test<{t?: string}, bigint>() : void +>test : () => void +>t : string + +// should have global error when bigint is used but ES2020 lib is not present + diff --git a/tests/cases/conformance/es2020/bigintMissingES2019.ts b/tests/cases/conformance/es2020/bigintMissingES2019.ts new file mode 100644 index 0000000000000..eb43cef7986fb --- /dev/null +++ b/tests/cases/conformance/es2020/bigintMissingES2019.ts @@ -0,0 +1,8 @@ +// @target: es2019 +// @lib: dom,es2019 +declare function test(): void; + +test<{t?: string}, object>(); +test<{t?: string}, bigint>(); + +// no error when bigint is used even when ES2020 lib is not present diff --git a/tests/cases/conformance/es2020/bigintMissingES2020.ts b/tests/cases/conformance/es2020/bigintMissingES2020.ts new file mode 100644 index 0000000000000..dc2f459e034f5 --- /dev/null +++ b/tests/cases/conformance/es2020/bigintMissingES2020.ts @@ -0,0 +1,8 @@ +// @target: es2020 +// @lib: dom,es2017 +declare function test(): void; + +test<{t?: string}, object>(); +test<{t?: string}, bigint>(); + +// should have global error when bigint is used but ES2020 lib is not present diff --git a/tests/cases/conformance/es2020/bigintMissingESNext.ts b/tests/cases/conformance/es2020/bigintMissingESNext.ts new file mode 100644 index 0000000000000..f3d90f64bde45 --- /dev/null +++ b/tests/cases/conformance/es2020/bigintMissingESNext.ts @@ -0,0 +1,8 @@ +// @target: esnext +// @lib: dom,es2017 +declare function test(): void; + +test<{t?: string}, object>(); +test<{t?: string}, bigint>(); + +// should have global error when bigint is used but ES2020 lib is not present