From 4c6e802772dbfbccfe5d8b86150366533729da61 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 13 May 2022 14:45:42 -0700 Subject: [PATCH 1/4] Remove bigint from Object.freeze in es5.d.ts `BigInt` isn't resolved whenever `lib < es2020`, but it's not an error when `target < es2020`. I have a few ideas for improving this situation but for the RC I'm going to remove `bigint` from Object.freeze's signature. --- src/lib/es5.d.ts | 2 +- .../contextualSignatureInObjectFreeze.js | 13 +++++++++++++ .../contextualSignatureInObjectFreeze.symbols | 13 +++++++++++++ .../contextualSignatureInObjectFreeze.types | 16 ++++++++++++++++ .../contextualSignatureInObjectFreeze.ts | 7 +++++++ 5 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/contextualSignatureInObjectFreeze.js create mode 100644 tests/baselines/reference/contextualSignatureInObjectFreeze.symbols create mode 100644 tests/baselines/reference/contextualSignatureInObjectFreeze.types create mode 100644 tests/cases/compiler/contextualSignatureInObjectFreeze.ts diff --git a/src/lib/es5.d.ts b/src/lib/es5.d.ts index 75b9539cc7592..26ba191eb6933 100644 --- a/src/lib/es5.d.ts +++ b/src/lib/es5.d.ts @@ -210,7 +210,7 @@ interface ObjectConstructor { * Prevents the modification of existing property attributes and values, and prevents the addition of new properties. * @param o Object on which to lock the attributes. */ - freeze(o: T): Readonly; + freeze(o: T): Readonly; /** * Prevents the modification of existing property attributes and values, and prevents the addition of new properties. diff --git a/tests/baselines/reference/contextualSignatureInObjectFreeze.js b/tests/baselines/reference/contextualSignatureInObjectFreeze.js new file mode 100644 index 0000000000000..e25ef7ab24799 --- /dev/null +++ b/tests/baselines/reference/contextualSignatureInObjectFreeze.js @@ -0,0 +1,13 @@ +//// [contextualSignatureInObjectFreeze.ts] +// #49101 + +Object.freeze({ + f: function () { } +}) + + +//// [contextualSignatureInObjectFreeze.js] +// #49101 +Object.freeze({ + f: function () { } +}); diff --git a/tests/baselines/reference/contextualSignatureInObjectFreeze.symbols b/tests/baselines/reference/contextualSignatureInObjectFreeze.symbols new file mode 100644 index 0000000000000..68e9d81c60076 --- /dev/null +++ b/tests/baselines/reference/contextualSignatureInObjectFreeze.symbols @@ -0,0 +1,13 @@ +=== tests/cases/compiler/contextualSignatureInObjectFreeze.ts === +// #49101 + +Object.freeze({ +>Object.freeze : Symbol(ObjectConstructor.freeze, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>freeze : Symbol(ObjectConstructor.freeze, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + + f: function () { } +>f : Symbol(f, Decl(contextualSignatureInObjectFreeze.ts, 2, 15)) + +}) + diff --git a/tests/baselines/reference/contextualSignatureInObjectFreeze.types b/tests/baselines/reference/contextualSignatureInObjectFreeze.types new file mode 100644 index 0000000000000..3d40afe1f0854 --- /dev/null +++ b/tests/baselines/reference/contextualSignatureInObjectFreeze.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/contextualSignatureInObjectFreeze.ts === +// #49101 + +Object.freeze({ +>Object.freeze({ f: function () { }}) : Readonly<{ f: () => void; }> +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object : ObjectConstructor +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>{ f: function () { }} : { f: () => void; } + + f: function () { } +>f : () => void +>function () { } : () => void + +}) + diff --git a/tests/cases/compiler/contextualSignatureInObjectFreeze.ts b/tests/cases/compiler/contextualSignatureInObjectFreeze.ts new file mode 100644 index 0000000000000..1f2c561c13da5 --- /dev/null +++ b/tests/cases/compiler/contextualSignatureInObjectFreeze.ts @@ -0,0 +1,7 @@ +// #49101 +// @target: es2020 +// @lib: es2019 + +Object.freeze({ + f: function () { } +}) From 6d5bf6a5eec2e792ed6a2e7f46fea8e5e704c7bf Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 13 May 2022 15:12:02 -0700 Subject: [PATCH 2/4] Update other baselines --- .../reference/circularContextualReturnType.types | 8 ++++---- .../reference/jsEnumTagOnObjectFrozen.types | 4 ++-- .../reference/keyofAndIndexedAccess.types | 4 ++-- tests/baselines/reference/objectFreeze.types | 16 ++++++++-------- .../baselines/reference/objectFromEntries.types | 8 ++++---- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/tests/baselines/reference/circularContextualReturnType.types b/tests/baselines/reference/circularContextualReturnType.types index 883cf67ba574c..939d9b73db098 100644 --- a/tests/baselines/reference/circularContextualReturnType.types +++ b/tests/baselines/reference/circularContextualReturnType.types @@ -3,9 +3,9 @@ Object.freeze({ >Object.freeze({ foo() { return Object.freeze('a'); },}) : Readonly<{ foo(): string; }> ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >{ foo() { return Object.freeze('a'); },} : { foo(): string; } foo() { @@ -13,9 +13,9 @@ Object.freeze({ return Object.freeze('a'); >Object.freeze('a') : string ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >'a' : "a" }, diff --git a/tests/baselines/reference/jsEnumTagOnObjectFrozen.types b/tests/baselines/reference/jsEnumTagOnObjectFrozen.types index 12d79352452f4..2aa4bad8ebf07 100644 --- a/tests/baselines/reference/jsEnumTagOnObjectFrozen.types +++ b/tests/baselines/reference/jsEnumTagOnObjectFrozen.types @@ -49,9 +49,9 @@ cbThing(type => { const Thing = Object.freeze({ >Thing : Readonly<{ a: "thing"; b: "chill"; }> >Object.freeze({ a: "thing", b: "chill"}) : Readonly<{ a: "thing"; b: "chill"; }> ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >{ a: "thing", b: "chill"} : { a: "thing"; b: "chill"; } a: "thing", diff --git a/tests/baselines/reference/keyofAndIndexedAccess.types b/tests/baselines/reference/keyofAndIndexedAccess.types index fc4603b997ff7..ad49919b41653 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.types +++ b/tests/baselines/reference/keyofAndIndexedAccess.types @@ -1876,9 +1876,9 @@ class SampleClass

{ >this : this >props : Readonly

>Object.freeze(props) : Readonly

->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >props : P } } diff --git a/tests/baselines/reference/objectFreeze.types b/tests/baselines/reference/objectFreeze.types index b39293e109230..7ee685168b5fb 100644 --- a/tests/baselines/reference/objectFreeze.types +++ b/tests/baselines/reference/objectFreeze.types @@ -2,9 +2,9 @@ const f = Object.freeze(function foo(a: number, b: string) { return false; }); >f : (a: number, b: string) => false >Object.freeze(function foo(a: number, b: string) { return false; }) : (a: number, b: string) => false ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >function foo(a: number, b: string) { return false; } : (a: number, b: string) => false >foo : (a: number, b: string) => false >a : number @@ -26,9 +26,9 @@ class C { constructor(a: number) { } } const c = Object.freeze(C); >c : typeof C >Object.freeze(C) : typeof C ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >C : typeof C new c(1); @@ -39,9 +39,9 @@ new c(1); const a = Object.freeze([1, 2, 3]); >a : readonly number[] >Object.freeze([1, 2, 3]) : readonly number[] ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >[1, 2, 3] : number[] >1 : 1 >2 : 2 @@ -62,9 +62,9 @@ a[0] = a[2].toString(); const o = Object.freeze({ a: 1, b: "string", c: true }); >o : Readonly<{ a: 1; b: "string"; c: true; }> >Object.freeze({ a: 1, b: "string", c: true }) : Readonly<{ a: 1; b: "string"; c: true; }> ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >{ a: 1, b: "string", c: true } : { a: 1; b: "string"; c: true; } >a : 1 >1 : 1 diff --git a/tests/baselines/reference/objectFromEntries.types b/tests/baselines/reference/objectFromEntries.types index 0701b9ed5258d..c1326f93b0986 100644 --- a/tests/baselines/reference/objectFromEntries.types +++ b/tests/baselines/reference/objectFromEntries.types @@ -43,9 +43,9 @@ const o3 = Object.fromEntries(new Map([[Symbol("key"), "value"]])); const frozenArray = Object.freeze([['a', 1], ['b', 2], ['c', 3]]); >frozenArray : readonly (string | number)[][] >Object.freeze([['a', 1], ['b', 2], ['c', 3]]) : readonly (string | number)[][] ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >[['a', 1], ['b', 2], ['c', 3]] : (string | number)[][] >['a', 1] : (string | number)[] >'a' : "a" @@ -68,9 +68,9 @@ const o4 = Object.fromEntries(frozenArray); const frozenArray2: readonly [string, number][] = Object.freeze([['a', 1], ['b', 2], ['c', 3]]); >frozenArray2 : readonly [string, number][] >Object.freeze([['a', 1], ['b', 2], ['c', 3]]) : readonly [string, number][] ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >[['a', 1], ['b', 2], ['c', 3]] : [string, number][] >['a', 1] : [string, number] >'a' : "a" From e1958f7a233ef5107358498cb065a28d4fa808fa Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 13 May 2022 16:37:12 -0700 Subject: [PATCH 3/4] No errors for missing apparent type of bigint,symbol for any target --- src/compiler/checker.ts | 14 +++++++------- src/lib/es5.d.ts | 2 +- .../reference/bigintMissingES2020.errors.txt | 12 ------------ .../reference/bigintMissingESNext.errors.txt | 12 ------------ .../reference/circularContextualReturnType.types | 8 ++++---- .../contextualSignatureInObjectFreeze.types | 4 ++-- .../reference/jsEnumTagOnObjectFrozen.types | 4 ++-- .../reference/keyofAndIndexedAccess.types | 4 ++-- tests/baselines/reference/objectFreeze.types | 16 ++++++++-------- .../baselines/reference/objectFromEntries.types | 8 ++++---- 10 files changed, 30 insertions(+), 54 deletions(-) delete mode 100644 tests/baselines/reference/bigintMissingES2020.errors.txt delete mode 100644 tests/baselines/reference/bigintMissingESNext.errors.txt diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 6b532e7ac092f..2e2c75eb384e4 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -12298,9 +12298,9 @@ namespace ts { t.flags & TypeFlags.Intersection ? getApparentTypeOfIntersectionType(t as IntersectionType) : t.flags & TypeFlags.StringLike ? globalStringType : t.flags & TypeFlags.NumberLike ? globalNumberType : - t.flags & TypeFlags.BigIntLike ? getGlobalBigIntType(/*reportErrors*/ languageVersion >= ScriptTarget.ES2020) : + t.flags & TypeFlags.BigIntLike ? getGlobalBigIntType() : t.flags & TypeFlags.BooleanLike ? globalBooleanType : - t.flags & TypeFlags.ESSymbolLike ? getGlobalESSymbolType(/*reportErrors*/ languageVersion >= ScriptTarget.ES2015) : + t.flags & TypeFlags.ESSymbolLike ? getGlobalESSymbolType() : t.flags & TypeFlags.NonPrimitive ? emptyObjectType : t.flags & TypeFlags.Index ? keyofConstraintType : t.flags & TypeFlags.Unknown && !strictNullChecks ? emptyObjectType : @@ -14026,8 +14026,8 @@ namespace ts { return deferredGlobalESSymbolConstructorTypeSymbol ||= getGlobalTypeSymbol("SymbolConstructor" as __String, reportErrors); } - function getGlobalESSymbolType(reportErrors: boolean) { - return (deferredGlobalESSymbolType ||= getGlobalType("Symbol" as __String, /*arity*/ 0, reportErrors)) || emptyObjectType; + function getGlobalESSymbolType() { + return (deferredGlobalESSymbolType ||= getGlobalType("Symbol" as __String, /*arity*/ 0, /*reportErrors*/ false)) || emptyObjectType; } function getGlobalPromiseType(reportErrors: boolean) { @@ -14109,8 +14109,8 @@ namespace ts { return deferredGlobalAwaitedSymbol === unknownSymbol ? undefined : deferredGlobalAwaitedSymbol; } - function getGlobalBigIntType(reportErrors: boolean) { - return (deferredGlobalBigIntType ||= getGlobalType("BigInt" as __String, /*arity*/ 0, reportErrors)) || emptyObjectType; + function getGlobalBigIntType() { + return (deferredGlobalBigIntType ||= getGlobalType("BigInt" as __String, /*arity*/ 0, /*reportErrors*/ false)) || emptyObjectType; } /** @@ -18553,7 +18553,7 @@ namespace ts { if ((globalStringType === source && stringType === target) || (globalNumberType === source && numberType === target) || (globalBooleanType === source && booleanType === target) || - (getGlobalESSymbolType(/*reportErrors*/ false) === source && esSymbolType === target)) { + (getGlobalESSymbolType() === source && esSymbolType === target)) { reportError(Diagnostics._0_is_a_primitive_but_1_is_a_wrapper_object_Prefer_using_0_when_possible, targetType, sourceType); } } diff --git a/src/lib/es5.d.ts b/src/lib/es5.d.ts index 26ba191eb6933..75b9539cc7592 100644 --- a/src/lib/es5.d.ts +++ b/src/lib/es5.d.ts @@ -210,7 +210,7 @@ interface ObjectConstructor { * Prevents the modification of existing property attributes and values, and prevents the addition of new properties. * @param o Object on which to lock the attributes. */ - freeze(o: T): Readonly; + freeze(o: T): Readonly; /** * Prevents the modification of existing property attributes and values, and prevents the addition of new properties. diff --git a/tests/baselines/reference/bigintMissingES2020.errors.txt b/tests/baselines/reference/bigintMissingES2020.errors.txt deleted file mode 100644 index 768ee7214c8ac..0000000000000 --- a/tests/baselines/reference/bigintMissingES2020.errors.txt +++ /dev/null @@ -1,12 +0,0 @@ -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/bigintMissingESNext.errors.txt b/tests/baselines/reference/bigintMissingESNext.errors.txt deleted file mode 100644 index 381223a9451ce..0000000000000 --- a/tests/baselines/reference/bigintMissingESNext.errors.txt +++ /dev/null @@ -1,12 +0,0 @@ -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/circularContextualReturnType.types b/tests/baselines/reference/circularContextualReturnType.types index 939d9b73db098..883cf67ba574c 100644 --- a/tests/baselines/reference/circularContextualReturnType.types +++ b/tests/baselines/reference/circularContextualReturnType.types @@ -3,9 +3,9 @@ Object.freeze({ >Object.freeze({ foo() { return Object.freeze('a'); },}) : Readonly<{ foo(): string; }> ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >{ foo() { return Object.freeze('a'); },} : { foo(): string; } foo() { @@ -13,9 +13,9 @@ Object.freeze({ return Object.freeze('a'); >Object.freeze('a') : string ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >'a' : "a" }, diff --git a/tests/baselines/reference/contextualSignatureInObjectFreeze.types b/tests/baselines/reference/contextualSignatureInObjectFreeze.types index 3d40afe1f0854..a2d8418cbf0b0 100644 --- a/tests/baselines/reference/contextualSignatureInObjectFreeze.types +++ b/tests/baselines/reference/contextualSignatureInObjectFreeze.types @@ -3,9 +3,9 @@ Object.freeze({ >Object.freeze({ f: function () { }}) : Readonly<{ f: () => void; }> ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >{ f: function () { }} : { f: () => void; } f: function () { } diff --git a/tests/baselines/reference/jsEnumTagOnObjectFrozen.types b/tests/baselines/reference/jsEnumTagOnObjectFrozen.types index 2aa4bad8ebf07..12d79352452f4 100644 --- a/tests/baselines/reference/jsEnumTagOnObjectFrozen.types +++ b/tests/baselines/reference/jsEnumTagOnObjectFrozen.types @@ -49,9 +49,9 @@ cbThing(type => { const Thing = Object.freeze({ >Thing : Readonly<{ a: "thing"; b: "chill"; }> >Object.freeze({ a: "thing", b: "chill"}) : Readonly<{ a: "thing"; b: "chill"; }> ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >{ a: "thing", b: "chill"} : { a: "thing"; b: "chill"; } a: "thing", diff --git a/tests/baselines/reference/keyofAndIndexedAccess.types b/tests/baselines/reference/keyofAndIndexedAccess.types index ad49919b41653..fc4603b997ff7 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.types +++ b/tests/baselines/reference/keyofAndIndexedAccess.types @@ -1876,9 +1876,9 @@ class SampleClass

{ >this : this >props : Readonly

>Object.freeze(props) : Readonly

->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >props : P } } diff --git a/tests/baselines/reference/objectFreeze.types b/tests/baselines/reference/objectFreeze.types index 7ee685168b5fb..b39293e109230 100644 --- a/tests/baselines/reference/objectFreeze.types +++ b/tests/baselines/reference/objectFreeze.types @@ -2,9 +2,9 @@ const f = Object.freeze(function foo(a: number, b: string) { return false; }); >f : (a: number, b: string) => false >Object.freeze(function foo(a: number, b: string) { return false; }) : (a: number, b: string) => false ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >function foo(a: number, b: string) { return false; } : (a: number, b: string) => false >foo : (a: number, b: string) => false >a : number @@ -26,9 +26,9 @@ class C { constructor(a: number) { } } const c = Object.freeze(C); >c : typeof C >Object.freeze(C) : typeof C ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >C : typeof C new c(1); @@ -39,9 +39,9 @@ new c(1); const a = Object.freeze([1, 2, 3]); >a : readonly number[] >Object.freeze([1, 2, 3]) : readonly number[] ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >[1, 2, 3] : number[] >1 : 1 >2 : 2 @@ -62,9 +62,9 @@ a[0] = a[2].toString(); const o = Object.freeze({ a: 1, b: "string", c: true }); >o : Readonly<{ a: 1; b: "string"; c: true; }> >Object.freeze({ a: 1, b: "string", c: true }) : Readonly<{ a: 1; b: "string"; c: true; }> ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >{ a: 1, b: "string", c: true } : { a: 1; b: "string"; c: true; } >a : 1 >1 : 1 diff --git a/tests/baselines/reference/objectFromEntries.types b/tests/baselines/reference/objectFromEntries.types index c1326f93b0986..0701b9ed5258d 100644 --- a/tests/baselines/reference/objectFromEntries.types +++ b/tests/baselines/reference/objectFromEntries.types @@ -43,9 +43,9 @@ const o3 = Object.fromEntries(new Map([[Symbol("key"), "value"]])); const frozenArray = Object.freeze([['a', 1], ['b', 2], ['c', 3]]); >frozenArray : readonly (string | number)[][] >Object.freeze([['a', 1], ['b', 2], ['c', 3]]) : readonly (string | number)[][] ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >[['a', 1], ['b', 2], ['c', 3]] : (string | number)[][] >['a', 1] : (string | number)[] >'a' : "a" @@ -68,9 +68,9 @@ const o4 = Object.fromEntries(frozenArray); const frozenArray2: readonly [string, number][] = Object.freeze([['a', 1], ['b', 2], ['c', 3]]); >frozenArray2 : readonly [string, number][] >Object.freeze([['a', 1], ['b', 2], ['c', 3]]) : readonly [string, number][] ->Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; (o: T): Readonly; } >[['a', 1], ['b', 2], ['c', 3]] : [string, number][] >['a', 1] : [string, number] >'a' : "a" From 86fc8dbd0ba22006c189f4a897a22309a0e3ed63 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 13 May 2022 16:38:35 -0700 Subject: [PATCH 4/4] Update test text --- tests/baselines/reference/bigintMissingES2020.js | 4 ++-- tests/baselines/reference/bigintMissingES2020.symbols | 2 +- tests/baselines/reference/bigintMissingES2020.types | 2 +- tests/baselines/reference/bigintMissingESNext.js | 4 ++-- tests/baselines/reference/bigintMissingESNext.symbols | 2 +- tests/baselines/reference/bigintMissingESNext.types | 2 +- tests/cases/conformance/es2020/bigintMissingES2020.ts | 2 +- tests/cases/conformance/es2020/bigintMissingESNext.ts | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/baselines/reference/bigintMissingES2020.js b/tests/baselines/reference/bigintMissingES2020.js index 83e2cde68e062..01e8c02089500 100644 --- a/tests/baselines/reference/bigintMissingES2020.js +++ b/tests/baselines/reference/bigintMissingES2020.js @@ -4,10 +4,10 @@ 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 error when bigint is used even when ES2020 lib is not present //// [bigintMissingES2020.js] test(); test(); -// should have global error when bigint is used but ES2020 lib is not present +// no error when bigint is used even when ES2020 lib is not present diff --git a/tests/baselines/reference/bigintMissingES2020.symbols b/tests/baselines/reference/bigintMissingES2020.symbols index 0757f97759e70..61438c691223f 100644 --- a/tests/baselines/reference/bigintMissingES2020.symbols +++ b/tests/baselines/reference/bigintMissingES2020.symbols @@ -13,5 +13,5 @@ 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 +// no error when bigint is used even when ES2020 lib is not present diff --git a/tests/baselines/reference/bigintMissingES2020.types b/tests/baselines/reference/bigintMissingES2020.types index 36b26c3a43d01..1be5a9eb27c7c 100644 --- a/tests/baselines/reference/bigintMissingES2020.types +++ b/tests/baselines/reference/bigintMissingES2020.types @@ -12,5 +12,5 @@ test<{t?: string}, bigint>(); >test : () => void >t : string -// should have global error when bigint is used but ES2020 lib is not present +// no error when bigint is used even when ES2020 lib is not present diff --git a/tests/baselines/reference/bigintMissingESNext.js b/tests/baselines/reference/bigintMissingESNext.js index 5029ca536c28a..300fbe5db5f4f 100644 --- a/tests/baselines/reference/bigintMissingESNext.js +++ b/tests/baselines/reference/bigintMissingESNext.js @@ -4,10 +4,10 @@ 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 error when bigint is used even when ES2020 lib is not present //// [bigintMissingESNext.js] test(); test(); -// should have global error when bigint is used but ES2020 lib is not present +// no error when bigint is used even when ES2020 lib is not present diff --git a/tests/baselines/reference/bigintMissingESNext.symbols b/tests/baselines/reference/bigintMissingESNext.symbols index bd500ba04b04e..a517f40d9717f 100644 --- a/tests/baselines/reference/bigintMissingESNext.symbols +++ b/tests/baselines/reference/bigintMissingESNext.symbols @@ -13,5 +13,5 @@ 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 +// no error when bigint is used even when ES2020 lib is not present diff --git a/tests/baselines/reference/bigintMissingESNext.types b/tests/baselines/reference/bigintMissingESNext.types index 6665aac1d5c9b..d34f9e5250e09 100644 --- a/tests/baselines/reference/bigintMissingESNext.types +++ b/tests/baselines/reference/bigintMissingESNext.types @@ -12,5 +12,5 @@ test<{t?: string}, bigint>(); >test : () => void >t : string -// should have global error when bigint is used but ES2020 lib is not present +// 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 index dc2f459e034f5..bd378f411eb96 100644 --- a/tests/cases/conformance/es2020/bigintMissingES2020.ts +++ b/tests/cases/conformance/es2020/bigintMissingES2020.ts @@ -5,4 +5,4 @@ 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 error when bigint is used even when ES2020 lib is not present diff --git a/tests/cases/conformance/es2020/bigintMissingESNext.ts b/tests/cases/conformance/es2020/bigintMissingESNext.ts index f3d90f64bde45..8ea758777cc79 100644 --- a/tests/cases/conformance/es2020/bigintMissingESNext.ts +++ b/tests/cases/conformance/es2020/bigintMissingESNext.ts @@ -5,4 +5,4 @@ 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 error when bigint is used even when ES2020 lib is not present