From c72c5e45ab2cafa1a529fea55b1f677a99017229 Mon Sep 17 00:00:00 2001 From: maheshrijal <62394512+maheshrijal@users.noreply.github.com> Date: Mon, 26 Oct 2026 19:30:06 +0530 Subject: [PATCH 1/2] Fix target library suggestions for readonly interfaces --- tsc/internal/checker/checker.go | 7 +- tsc/internal/checker/utilities.go | 23 ++ ...tLibraryReadonly(target=es2015).errors.txt | 132 +++++++++++ ...rgetLibraryReadonly(target=es2015).symbols | 161 +++++++++++++ ...TargetLibraryReadonly(target=es2015).types | 214 ++++++++++++++++++ ...tLibraryReadonly(target=esnext).errors.txt | 69 ++++++ ...rgetLibraryReadonly(target=esnext).symbols | 203 +++++++++++++++++ ...TargetLibraryReadonly(target=esnext).types | 214 ++++++++++++++++++ ...YourTargetLibraryReadonlyES2015.errors.txt | 58 +++++ ...ngeYourTargetLibraryReadonlyES2015.symbols | 51 +++++ ...hangeYourTargetLibraryReadonlyES2015.types | 77 +++++++ ...ouNeedToChangeYourTargetLibraryReadonly.ts | 53 +++++ ...ToChangeYourTargetLibraryReadonlyES2015.ts | 22 ++ 13 files changed, 1283 insertions(+), 1 deletion(-) create mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).errors.txt create mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).symbols create mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).types create mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).errors.txt create mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).symbols create mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).types create mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.errors.txt create mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.symbols create mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.types create mode 100644 tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts create mode 100644 tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts diff --git a/tsc/internal/checker/checker.go b/tsc/internal/checker/checker.go index 148cf5fde47dd..bd09f1f554e83 100644 --- a/tsc/internal/checker/checker.go +++ b/tsc/internal/checker/checker.go @@ -11830,7 +11830,12 @@ func (c *Checker) reportNonexistentProperty(propNode *ast.Node, containingType * } func (c *Checker) getSuggestedLibForNonExistentProperty(missingProperty string, containingType *Type) string { - container := c.getApparentType(containingType).symbol + t := c.getApparentType(containingType) + if isTupleType(t) { + // Tuple types have no symbol; use their Array or ReadonlyArray base. + t = core.IfElse(t.TargetTupleType().readonly, c.globalReadonlyArrayType, c.globalArrayType) + } + container := t.symbol if container != nil { featureMap := getFeatureMap() if typeFeatures, ok := featureMap[container.Name()]; ok { diff --git a/tsc/internal/checker/utilities.go b/tsc/internal/checker/utilities.go index 3a7e9993ba879..bacce8f971823 100644 --- a/tsc/internal/checker/utilities.go +++ b/tsc/internal/checker/utilities.go @@ -1421,6 +1421,14 @@ var getFeatureMap = sync.OnceValue(func() map[string][]FeatureMapEntry { {lib: "es2022", props: []string{"at"}}, {lib: "es2023", props: []string{"findLastIndex", "findLast", "toReversed", "toSorted", "toSpliced", "with"}}, }, + "ReadonlyArray": { + {lib: "es5", props: []string{}}, + {lib: "es2015", props: []string{"find", "findIndex", "entries", "keys", "values"}}, + {lib: "es2016", props: []string{"includes"}}, + {lib: "es2019", props: []string{"flat", "flatMap"}}, + {lib: "es2022", props: []string{"at"}}, + {lib: "es2023", props: []string{"findLastIndex", "findLast", "toReversed", "toSorted", "toSpliced", "with"}}, + }, "Iterator": { {lib: "es2015", props: []string{}}, }, @@ -1525,6 +1533,9 @@ var getFeatureMap = sync.OnceValue(func() map[string][]FeatureMapEntry { "getOrInsertComputed", }}, }, + "ReadonlyMap": { + {lib: "es2015", props: []string{"entries", "keys", "values"}}, + }, "MapConstructor": { {lib: "es2024", props: []string{"groupBy"}}, }, @@ -1540,6 +1551,18 @@ var getFeatureMap = sync.OnceValue(func() map[string][]FeatureMapEntry { "isDisjointFrom", }}, }, + "ReadonlySet": { + {lib: "es2015", props: []string{"entries", "keys", "values"}}, + {lib: "es2025", props: []string{ + "union", + "intersection", + "difference", + "symmetricDifference", + "isSubsetOf", + "isSupersetOf", + "isDisjointFrom", + }}, + }, "PromiseConstructor": { {lib: "es2015", props: []string{"all", "race", "reject", "resolve"}}, {lib: "es2020", props: []string{"allSettled"}}, diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).errors.txt b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).errors.txt new file mode 100644 index 0000000000000..1db537a5cabd0 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).errors.txt @@ -0,0 +1,132 @@ +doYouNeedToChangeYourTargetLibraryReadonly.ts(7,7): error TS2550: Property 'includes' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2016' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(8,7): error TS2550: Property 'flat' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2019' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(9,7): error TS2550: Property 'flatMap' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2019' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(10,7): error TS2550: Property 'at' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2022' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(11,7): error TS2550: Property 'findLastIndex' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(12,7): error TS2550: Property 'findLast' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(13,7): error TS2550: Property 'toReversed' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(14,7): error TS2550: Property 'toSorted' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(15,7): error TS2550: Property 'toSpliced' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(16,7): error TS2550: Property 'with' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(19,15): error TS2550: Property 'toReversed' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(20,22): error TS2550: Property 'toReversed' does not exist on type 'readonly [1, 2, 3]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(23,7): error TS2550: Property 'toReversed' does not exist on type '[number, string]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(26,11): error TS2550: Property 'toReversed' does not exist on type 'T'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(38,5): error TS2550: Property 'union' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(39,5): error TS2550: Property 'intersection' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(40,5): error TS2550: Property 'difference' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(41,5): error TS2550: Property 'symmetricDifference' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(42,5): error TS2550: Property 'isSubsetOf' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(43,5): error TS2550: Property 'isSupersetOf' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(44,5): error TS2550: Property 'isDisjointFrom' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. +doYouNeedToChangeYourTargetLibraryReadonly.ts(46,7): error TS2339: Property 'fill' does not exist on type 'readonly number[]'. +doYouNeedToChangeYourTargetLibraryReadonly.ts(47,7): error TS2339: Property 'copyWithin' does not exist on type 'readonly number[]'. +doYouNeedToChangeYourTargetLibraryReadonly.ts(48,7): error TS2339: Property 'notAnArrayMethod' does not exist on type 'readonly number[]'. +doYouNeedToChangeYourTargetLibraryReadonly.ts(49,5): error TS2339: Property 'getOrInsert' does not exist on type 'ReadonlyMap'. +doYouNeedToChangeYourTargetLibraryReadonly.ts(50,5): error TS2339: Property 'getOrInsertComputed' does not exist on type 'ReadonlyMap'. + + +==== doYouNeedToChangeYourTargetLibraryReadonly.ts (26 errors) ==== + declare const array: ReadonlyArray; + array.find; + array.findIndex; + array.entries; + array.keys; + array.values; + array.includes; + ~~~~~~~~ +!!! error TS2550: Property 'includes' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2016' or later. + array.flat; + ~~~~ +!!! error TS2550: Property 'flat' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2019' or later. + array.flatMap; + ~~~~~~~ +!!! error TS2550: Property 'flatMap' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2019' or later. + array.at; + ~~ +!!! error TS2550: Property 'at' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2022' or later. + array.findLastIndex; + ~~~~~~~~~~~~~ +!!! error TS2550: Property 'findLastIndex' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. + array.findLast; + ~~~~~~~~ +!!! error TS2550: Property 'findLast' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. + array.toReversed; + ~~~~~~~~~~ +!!! error TS2550: Property 'toReversed' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. + array.toSorted; + ~~~~~~~~ +!!! error TS2550: Property 'toSorted' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. + array.toSpliced; + ~~~~~~~~~ +!!! error TS2550: Property 'toSpliced' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. + array.with; + ~~~~ +!!! error TS2550: Property 'with' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. + + declare const readonlyArray: readonly number[]; + readonlyArray.toReversed; + ~~~~~~~~~~ +!!! error TS2550: Property 'toReversed' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. + ([1, 2, 3] as const).toReversed(); + ~~~~~~~~~~ +!!! error TS2550: Property 'toReversed' does not exist on type 'readonly [1, 2, 3]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. + + declare const tuple: [number, string]; + tuple.toReversed; + ~~~~~~~~~~ +!!! error TS2550: Property 'toReversed' does not exist on type '[number, string]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. + + function f(value: T) { + value.toReversed; + ~~~~~~~~~~ +!!! error TS2550: Property 'toReversed' does not exist on type 'T'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later. + } + + declare const map: ReadonlyMap; + map.entries; + map.keys; + map.values; + + declare const set: ReadonlySet; + set.entries; + set.keys; + set.values; + set.union; + ~~~~~ +!!! error TS2550: Property 'union' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. + set.intersection; + ~~~~~~~~~~~~ +!!! error TS2550: Property 'intersection' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. + set.difference; + ~~~~~~~~~~ +!!! error TS2550: Property 'difference' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. + set.symmetricDifference; + ~~~~~~~~~~~~~~~~~~~ +!!! error TS2550: Property 'symmetricDifference' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. + set.isSubsetOf; + ~~~~~~~~~~ +!!! error TS2550: Property 'isSubsetOf' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. + set.isSupersetOf; + ~~~~~~~~~~~~ +!!! error TS2550: Property 'isSupersetOf' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. + set.isDisjointFrom; + ~~~~~~~~~~~~~~ +!!! error TS2550: Property 'isDisjointFrom' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2025' or later. + + array.fill; + ~~~~ +!!! error TS2339: Property 'fill' does not exist on type 'readonly number[]'. + array.copyWithin; + ~~~~~~~~~~ +!!! error TS2339: Property 'copyWithin' does not exist on type 'readonly number[]'. + array.notAnArrayMethod; + ~~~~~~~~~~~~~~~~ +!!! error TS2339: Property 'notAnArrayMethod' does not exist on type 'readonly number[]'. + map.getOrInsert; + ~~~~~~~~~~~ +!!! error TS2339: Property 'getOrInsert' does not exist on type 'ReadonlyMap'. + map.getOrInsertComputed; + ~~~~~~~~~~~~~~~~~~~ +!!! error TS2339: Property 'getOrInsertComputed' does not exist on type 'ReadonlyMap'. + \ No newline at end of file diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).symbols b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).symbols new file mode 100644 index 0000000000000..6cba99af35833 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).symbols @@ -0,0 +1,161 @@ +//// [tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts] //// + +=== doYouNeedToChangeYourTargetLibraryReadonly.ts === +declare const array: ReadonlyArray; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +array.find; +>array.find : Symbol(ReadonlyArray.find, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>find : Symbol(ReadonlyArray.find, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) + +array.findIndex; +>array.findIndex : Symbol(ReadonlyArray.findIndex, Decl(lib.es2015.core.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>findIndex : Symbol(ReadonlyArray.findIndex, Decl(lib.es2015.core.d.ts, --, --)) + +array.entries; +>array.entries : Symbol(ReadonlyArray.entries, Decl(lib.es2015.iterable.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>entries : Symbol(ReadonlyArray.entries, Decl(lib.es2015.iterable.d.ts, --, --)) + +array.keys; +>array.keys : Symbol(ReadonlyArray.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>keys : Symbol(ReadonlyArray.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +array.values; +>array.values : Symbol(ReadonlyArray.values, Decl(lib.es2015.iterable.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>values : Symbol(ReadonlyArray.values, Decl(lib.es2015.iterable.d.ts, --, --)) + +array.includes; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +array.flat; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +array.flatMap; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +array.at; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +array.findLastIndex; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +array.findLast; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +array.toReversed; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +array.toSorted; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +array.toSpliced; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +array.with; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +declare const readonlyArray: readonly number[]; +>readonlyArray : Symbol(readonlyArray, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 17, 13)) + +readonlyArray.toReversed; +>readonlyArray : Symbol(readonlyArray, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 17, 13)) + +([1, 2, 3] as const).toReversed(); +>const : Symbol(const) + +declare const tuple: [number, string]; +>tuple : Symbol(tuple, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 21, 13)) + +tuple.toReversed; +>tuple : Symbol(tuple, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 21, 13)) + +function f(value: T) { +>f : Symbol(f, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 22, 17)) +>T : Symbol(T, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 11)) +>value : Symbol(value, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 40)) +>T : Symbol(T, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 11)) + + value.toReversed; +>value : Symbol(value, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 40)) +} + +declare const map: ReadonlyMap; +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) +>ReadonlyMap : Symbol(ReadonlyMap, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) + +map.entries; +>map.entries : Symbol(ReadonlyMap.entries, Decl(lib.es2015.iterable.d.ts, --, --)) +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) +>entries : Symbol(ReadonlyMap.entries, Decl(lib.es2015.iterable.d.ts, --, --)) + +map.keys; +>map.keys : Symbol(ReadonlyMap.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) +>keys : Symbol(ReadonlyMap.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +map.values; +>map.values : Symbol(ReadonlyMap.values, Decl(lib.es2015.iterable.d.ts, --, --)) +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) +>values : Symbol(ReadonlyMap.values, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare const set: ReadonlySet; +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>ReadonlySet : Symbol(ReadonlySet, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) + +set.entries; +>set.entries : Symbol(ReadonlySet.entries, Decl(lib.es2015.iterable.d.ts, --, --)) +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>entries : Symbol(ReadonlySet.entries, Decl(lib.es2015.iterable.d.ts, --, --)) + +set.keys; +>set.keys : Symbol(ReadonlySet.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>keys : Symbol(ReadonlySet.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +set.values; +>set.values : Symbol(ReadonlySet.values, Decl(lib.es2015.iterable.d.ts, --, --)) +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>values : Symbol(ReadonlySet.values, Decl(lib.es2015.iterable.d.ts, --, --)) + +set.union; +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) + +set.intersection; +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) + +set.difference; +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) + +set.symmetricDifference; +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) + +set.isSubsetOf; +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) + +set.isSupersetOf; +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) + +set.isDisjointFrom; +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) + +array.fill; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +array.copyWithin; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +array.notAnArrayMethod; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +map.getOrInsert; +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) + +map.getOrInsertComputed; +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) + diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).types b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).types new file mode 100644 index 0000000000000..4116bc4831666 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).types @@ -0,0 +1,214 @@ +//// [tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts] //// + +=== doYouNeedToChangeYourTargetLibraryReadonly.ts === +declare const array: ReadonlyArray; +>array : readonly number[] + +array.find; +>array.find : { (predicate: (value: number, index: number, obj: readonly number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any): number | undefined; } +>array : readonly number[] +>find : { (predicate: (value: number, index: number, obj: readonly number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any): number | undefined; } + +array.findIndex; +>array.findIndex : (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any) => number +>array : readonly number[] +>findIndex : (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any) => number + +array.entries; +>array.entries : () => ArrayIterator<[number, number]> +>array : readonly number[] +>entries : () => ArrayIterator<[number, number]> + +array.keys; +>array.keys : () => ArrayIterator +>array : readonly number[] +>keys : () => ArrayIterator + +array.values; +>array.values : () => ArrayIterator +>array : readonly number[] +>values : () => ArrayIterator + +array.includes; +>array.includes : any +>array : readonly number[] +>includes : any + +array.flat; +>array.flat : any +>array : readonly number[] +>flat : any + +array.flatMap; +>array.flatMap : any +>array : readonly number[] +>flatMap : any + +array.at; +>array.at : any +>array : readonly number[] +>at : any + +array.findLastIndex; +>array.findLastIndex : any +>array : readonly number[] +>findLastIndex : any + +array.findLast; +>array.findLast : any +>array : readonly number[] +>findLast : any + +array.toReversed; +>array.toReversed : any +>array : readonly number[] +>toReversed : any + +array.toSorted; +>array.toSorted : any +>array : readonly number[] +>toSorted : any + +array.toSpliced; +>array.toSpliced : any +>array : readonly number[] +>toSpliced : any + +array.with; +>array.with : any +>array : readonly number[] +>with : any + +declare const readonlyArray: readonly number[]; +>readonlyArray : readonly number[] + +readonlyArray.toReversed; +>readonlyArray.toReversed : any +>readonlyArray : readonly number[] +>toReversed : any + +([1, 2, 3] as const).toReversed(); +>([1, 2, 3] as const).toReversed() : any +>([1, 2, 3] as const).toReversed : any +>([1, 2, 3] as const) : readonly [1, 2, 3] +>[1, 2, 3] as const : readonly [1, 2, 3] +>[1, 2, 3] : readonly [1, 2, 3] +>1 : 1 +>2 : 2 +>3 : 3 +>toReversed : any + +declare const tuple: [number, string]; +>tuple : [number, string] + +tuple.toReversed; +>tuple.toReversed : any +>tuple : [number, string] +>toReversed : any + +function f(value: T) { +>f : (value: T) => void +>value : T + + value.toReversed; +>value.toReversed : any +>value : T +>toReversed : any +} + +declare const map: ReadonlyMap; +>map : ReadonlyMap + +map.entries; +>map.entries : () => MapIterator<[string, number]> +>map : ReadonlyMap +>entries : () => MapIterator<[string, number]> + +map.keys; +>map.keys : () => MapIterator +>map : ReadonlyMap +>keys : () => MapIterator + +map.values; +>map.values : () => MapIterator +>map : ReadonlyMap +>values : () => MapIterator + +declare const set: ReadonlySet; +>set : ReadonlySet + +set.entries; +>set.entries : () => SetIterator<[number, number]> +>set : ReadonlySet +>entries : () => SetIterator<[number, number]> + +set.keys; +>set.keys : () => SetIterator +>set : ReadonlySet +>keys : () => SetIterator + +set.values; +>set.values : () => SetIterator +>set : ReadonlySet +>values : () => SetIterator + +set.union; +>set.union : any +>set : ReadonlySet +>union : any + +set.intersection; +>set.intersection : any +>set : ReadonlySet +>intersection : any + +set.difference; +>set.difference : any +>set : ReadonlySet +>difference : any + +set.symmetricDifference; +>set.symmetricDifference : any +>set : ReadonlySet +>symmetricDifference : any + +set.isSubsetOf; +>set.isSubsetOf : any +>set : ReadonlySet +>isSubsetOf : any + +set.isSupersetOf; +>set.isSupersetOf : any +>set : ReadonlySet +>isSupersetOf : any + +set.isDisjointFrom; +>set.isDisjointFrom : any +>set : ReadonlySet +>isDisjointFrom : any + +array.fill; +>array.fill : any +>array : readonly number[] +>fill : any + +array.copyWithin; +>array.copyWithin : any +>array : readonly number[] +>copyWithin : any + +array.notAnArrayMethod; +>array.notAnArrayMethod : any +>array : readonly number[] +>notAnArrayMethod : any + +map.getOrInsert; +>map.getOrInsert : any +>map : ReadonlyMap +>getOrInsert : any + +map.getOrInsertComputed; +>map.getOrInsertComputed : any +>map : ReadonlyMap +>getOrInsertComputed : any + diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).errors.txt b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).errors.txt new file mode 100644 index 0000000000000..d80c84d68d9ae --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).errors.txt @@ -0,0 +1,69 @@ +doYouNeedToChangeYourTargetLibraryReadonly.ts(46,7): error TS2339: Property 'fill' does not exist on type 'readonly number[]'. +doYouNeedToChangeYourTargetLibraryReadonly.ts(47,7): error TS2339: Property 'copyWithin' does not exist on type 'readonly number[]'. +doYouNeedToChangeYourTargetLibraryReadonly.ts(48,7): error TS2339: Property 'notAnArrayMethod' does not exist on type 'readonly number[]'. +doYouNeedToChangeYourTargetLibraryReadonly.ts(49,5): error TS2339: Property 'getOrInsert' does not exist on type 'ReadonlyMap'. +doYouNeedToChangeYourTargetLibraryReadonly.ts(50,5): error TS2339: Property 'getOrInsertComputed' does not exist on type 'ReadonlyMap'. + + +==== doYouNeedToChangeYourTargetLibraryReadonly.ts (5 errors) ==== + declare const array: ReadonlyArray; + array.find; + array.findIndex; + array.entries; + array.keys; + array.values; + array.includes; + array.flat; + array.flatMap; + array.at; + array.findLastIndex; + array.findLast; + array.toReversed; + array.toSorted; + array.toSpliced; + array.with; + + declare const readonlyArray: readonly number[]; + readonlyArray.toReversed; + ([1, 2, 3] as const).toReversed(); + + declare const tuple: [number, string]; + tuple.toReversed; + + function f(value: T) { + value.toReversed; + } + + declare const map: ReadonlyMap; + map.entries; + map.keys; + map.values; + + declare const set: ReadonlySet; + set.entries; + set.keys; + set.values; + set.union; + set.intersection; + set.difference; + set.symmetricDifference; + set.isSubsetOf; + set.isSupersetOf; + set.isDisjointFrom; + + array.fill; + ~~~~ +!!! error TS2339: Property 'fill' does not exist on type 'readonly number[]'. + array.copyWithin; + ~~~~~~~~~~ +!!! error TS2339: Property 'copyWithin' does not exist on type 'readonly number[]'. + array.notAnArrayMethod; + ~~~~~~~~~~~~~~~~ +!!! error TS2339: Property 'notAnArrayMethod' does not exist on type 'readonly number[]'. + map.getOrInsert; + ~~~~~~~~~~~ +!!! error TS2339: Property 'getOrInsert' does not exist on type 'ReadonlyMap'. + map.getOrInsertComputed; + ~~~~~~~~~~~~~~~~~~~ +!!! error TS2339: Property 'getOrInsertComputed' does not exist on type 'ReadonlyMap'. + \ No newline at end of file diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).symbols b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).symbols new file mode 100644 index 0000000000000..708c78c68a946 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).symbols @@ -0,0 +1,203 @@ +//// [tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts] //// + +=== doYouNeedToChangeYourTargetLibraryReadonly.ts === +declare const array: ReadonlyArray; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --) ... and 3 more) + +array.find; +>array.find : Symbol(ReadonlyArray.find, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>find : Symbol(ReadonlyArray.find, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) + +array.findIndex; +>array.findIndex : Symbol(ReadonlyArray.findIndex, Decl(lib.es2015.core.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>findIndex : Symbol(ReadonlyArray.findIndex, Decl(lib.es2015.core.d.ts, --, --)) + +array.entries; +>array.entries : Symbol(ReadonlyArray.entries, Decl(lib.es2015.iterable.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>entries : Symbol(ReadonlyArray.entries, Decl(lib.es2015.iterable.d.ts, --, --)) + +array.keys; +>array.keys : Symbol(ReadonlyArray.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>keys : Symbol(ReadonlyArray.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +array.values; +>array.values : Symbol(ReadonlyArray.values, Decl(lib.es2015.iterable.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>values : Symbol(ReadonlyArray.values, Decl(lib.es2015.iterable.d.ts, --, --)) + +array.includes; +>array.includes : Symbol(ReadonlyArray.includes, Decl(lib.es2016.array.include.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>includes : Symbol(ReadonlyArray.includes, Decl(lib.es2016.array.include.d.ts, --, --)) + +array.flat; +>array.flat : Symbol(ReadonlyArray.flat, Decl(lib.es2019.array.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>flat : Symbol(ReadonlyArray.flat, Decl(lib.es2019.array.d.ts, --, --)) + +array.flatMap; +>array.flatMap : Symbol(ReadonlyArray.flatMap, Decl(lib.es2019.array.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>flatMap : Symbol(ReadonlyArray.flatMap, Decl(lib.es2019.array.d.ts, --, --)) + +array.at; +>array.at : Symbol(ReadonlyArray.at, Decl(lib.es2022.array.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>at : Symbol(ReadonlyArray.at, Decl(lib.es2022.array.d.ts, --, --)) + +array.findLastIndex; +>array.findLastIndex : Symbol(ReadonlyArray.findLastIndex, Decl(lib.es2023.array.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>findLastIndex : Symbol(ReadonlyArray.findLastIndex, Decl(lib.es2023.array.d.ts, --, --)) + +array.findLast; +>array.findLast : Symbol(ReadonlyArray.findLast, Decl(lib.es2023.array.d.ts, --, --), Decl(lib.es2023.array.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>findLast : Symbol(ReadonlyArray.findLast, Decl(lib.es2023.array.d.ts, --, --), Decl(lib.es2023.array.d.ts, --, --)) + +array.toReversed; +>array.toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) + +array.toSorted; +>array.toSorted : Symbol(ReadonlyArray.toSorted, Decl(lib.es2023.array.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>toSorted : Symbol(ReadonlyArray.toSorted, Decl(lib.es2023.array.d.ts, --, --)) + +array.toSpliced; +>array.toSpliced : Symbol(ReadonlyArray.toSpliced, Decl(lib.es2023.array.d.ts, --, --), Decl(lib.es2023.array.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>toSpliced : Symbol(ReadonlyArray.toSpliced, Decl(lib.es2023.array.d.ts, --, --), Decl(lib.es2023.array.d.ts, --, --)) + +array.with; +>array.with : Symbol(ReadonlyArray.with, Decl(lib.es2023.array.d.ts, --, --)) +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) +>with : Symbol(ReadonlyArray.with, Decl(lib.es2023.array.d.ts, --, --)) + +declare const readonlyArray: readonly number[]; +>readonlyArray : Symbol(readonlyArray, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 17, 13)) + +readonlyArray.toReversed; +>readonlyArray.toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) +>readonlyArray : Symbol(readonlyArray, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 17, 13)) +>toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) + +([1, 2, 3] as const).toReversed(); +>([1, 2, 3] as const).toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) +>const : Symbol(const) +>toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) + +declare const tuple: [number, string]; +>tuple : Symbol(tuple, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 21, 13)) + +tuple.toReversed; +>tuple.toReversed : Symbol(Array.toReversed, Decl(lib.es2023.array.d.ts, --, --)) +>tuple : Symbol(tuple, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 21, 13)) +>toReversed : Symbol(Array.toReversed, Decl(lib.es2023.array.d.ts, --, --)) + +function f(value: T) { +>f : Symbol(f, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 22, 17)) +>T : Symbol(T, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 11)) +>value : Symbol(value, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 40)) +>T : Symbol(T, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 11)) + + value.toReversed; +>value.toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) +>value : Symbol(value, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 40)) +>toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) +} + +declare const map: ReadonlyMap; +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) +>ReadonlyMap : Symbol(ReadonlyMap, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) + +map.entries; +>map.entries : Symbol(ReadonlyMap.entries, Decl(lib.es2015.iterable.d.ts, --, --)) +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) +>entries : Symbol(ReadonlyMap.entries, Decl(lib.es2015.iterable.d.ts, --, --)) + +map.keys; +>map.keys : Symbol(ReadonlyMap.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) +>keys : Symbol(ReadonlyMap.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +map.values; +>map.values : Symbol(ReadonlyMap.values, Decl(lib.es2015.iterable.d.ts, --, --)) +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) +>values : Symbol(ReadonlyMap.values, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare const set: ReadonlySet; +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>ReadonlySet : Symbol(ReadonlySet, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2025.collection.d.ts, --, --)) + +set.entries; +>set.entries : Symbol(ReadonlySet.entries, Decl(lib.es2015.iterable.d.ts, --, --)) +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>entries : Symbol(ReadonlySet.entries, Decl(lib.es2015.iterable.d.ts, --, --)) + +set.keys; +>set.keys : Symbol(ReadonlySet.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>keys : Symbol(ReadonlySet.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +set.values; +>set.values : Symbol(ReadonlySet.values, Decl(lib.es2015.iterable.d.ts, --, --)) +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>values : Symbol(ReadonlySet.values, Decl(lib.es2015.iterable.d.ts, --, --)) + +set.union; +>set.union : Symbol(ReadonlySet.union, Decl(lib.es2025.collection.d.ts, --, --)) +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>union : Symbol(ReadonlySet.union, Decl(lib.es2025.collection.d.ts, --, --)) + +set.intersection; +>set.intersection : Symbol(ReadonlySet.intersection, Decl(lib.es2025.collection.d.ts, --, --)) +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>intersection : Symbol(ReadonlySet.intersection, Decl(lib.es2025.collection.d.ts, --, --)) + +set.difference; +>set.difference : Symbol(ReadonlySet.difference, Decl(lib.es2025.collection.d.ts, --, --)) +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>difference : Symbol(ReadonlySet.difference, Decl(lib.es2025.collection.d.ts, --, --)) + +set.symmetricDifference; +>set.symmetricDifference : Symbol(ReadonlySet.symmetricDifference, Decl(lib.es2025.collection.d.ts, --, --)) +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>symmetricDifference : Symbol(ReadonlySet.symmetricDifference, Decl(lib.es2025.collection.d.ts, --, --)) + +set.isSubsetOf; +>set.isSubsetOf : Symbol(ReadonlySet.isSubsetOf, Decl(lib.es2025.collection.d.ts, --, --)) +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>isSubsetOf : Symbol(ReadonlySet.isSubsetOf, Decl(lib.es2025.collection.d.ts, --, --)) + +set.isSupersetOf; +>set.isSupersetOf : Symbol(ReadonlySet.isSupersetOf, Decl(lib.es2025.collection.d.ts, --, --)) +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>isSupersetOf : Symbol(ReadonlySet.isSupersetOf, Decl(lib.es2025.collection.d.ts, --, --)) + +set.isDisjointFrom; +>set.isDisjointFrom : Symbol(ReadonlySet.isDisjointFrom, Decl(lib.es2025.collection.d.ts, --, --)) +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) +>isDisjointFrom : Symbol(ReadonlySet.isDisjointFrom, Decl(lib.es2025.collection.d.ts, --, --)) + +array.fill; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +array.copyWithin; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +array.notAnArrayMethod; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) + +map.getOrInsert; +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) + +map.getOrInsertComputed; +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) + diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).types b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).types new file mode 100644 index 0000000000000..18abbbe6407fe --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).types @@ -0,0 +1,214 @@ +//// [tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts] //// + +=== doYouNeedToChangeYourTargetLibraryReadonly.ts === +declare const array: ReadonlyArray; +>array : readonly number[] + +array.find; +>array.find : { (predicate: (value: number, index: number, obj: readonly number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any): number | undefined; } +>array : readonly number[] +>find : { (predicate: (value: number, index: number, obj: readonly number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any): number | undefined; } + +array.findIndex; +>array.findIndex : (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any) => number +>array : readonly number[] +>findIndex : (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any) => number + +array.entries; +>array.entries : () => ArrayIterator<[number, number]> +>array : readonly number[] +>entries : () => ArrayIterator<[number, number]> + +array.keys; +>array.keys : () => ArrayIterator +>array : readonly number[] +>keys : () => ArrayIterator + +array.values; +>array.values : () => ArrayIterator +>array : readonly number[] +>values : () => ArrayIterator + +array.includes; +>array.includes : (searchElement: number, fromIndex?: number) => boolean +>array : readonly number[] +>includes : (searchElement: number, fromIndex?: number) => boolean + +array.flat; +>array.flat : (this: A, depth?: D | undefined) => FlatArray[] +>array : readonly number[] +>flat : (this: A, depth?: D | undefined) => FlatArray[] + +array.flatMap; +>array.flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[] +>array : readonly number[] +>flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[] + +array.at; +>array.at : (index: number) => number | undefined +>array : readonly number[] +>at : (index: number) => number | undefined + +array.findLastIndex; +>array.findLastIndex : (predicate: (value: number, index: number, array: readonly number[]) => unknown, thisArg?: any) => number +>array : readonly number[] +>findLastIndex : (predicate: (value: number, index: number, array: readonly number[]) => unknown, thisArg?: any) => number + +array.findLast; +>array.findLast : { (predicate: (value: number, index: number, array: readonly number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, array: readonly number[]) => unknown, thisArg?: any): number | undefined; } +>array : readonly number[] +>findLast : { (predicate: (value: number, index: number, array: readonly number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, array: readonly number[]) => unknown, thisArg?: any): number | undefined; } + +array.toReversed; +>array.toReversed : () => number[] +>array : readonly number[] +>toReversed : () => number[] + +array.toSorted; +>array.toSorted : (compareFn?: ((a: number, b: number) => number) | undefined) => number[] +>array : readonly number[] +>toSorted : (compareFn?: ((a: number, b: number) => number) | undefined) => number[] + +array.toSpliced; +>array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } +>array : readonly number[] +>toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } + +array.with; +>array.with : (index: number, value: number) => number[] +>array : readonly number[] +>with : (index: number, value: number) => number[] + +declare const readonlyArray: readonly number[]; +>readonlyArray : readonly number[] + +readonlyArray.toReversed; +>readonlyArray.toReversed : () => number[] +>readonlyArray : readonly number[] +>toReversed : () => number[] + +([1, 2, 3] as const).toReversed(); +>([1, 2, 3] as const).toReversed() : (1 | 2 | 3)[] +>([1, 2, 3] as const).toReversed : () => (1 | 2 | 3)[] +>([1, 2, 3] as const) : readonly [1, 2, 3] +>[1, 2, 3] as const : readonly [1, 2, 3] +>[1, 2, 3] : readonly [1, 2, 3] +>1 : 1 +>2 : 2 +>3 : 3 +>toReversed : () => (1 | 2 | 3)[] + +declare const tuple: [number, string]; +>tuple : [number, string] + +tuple.toReversed; +>tuple.toReversed : () => (string | number)[] +>tuple : [number, string] +>toReversed : () => (string | number)[] + +function f(value: T) { +>f : (value: T) => void +>value : T + + value.toReversed; +>value.toReversed : () => number[] +>value : T +>toReversed : () => number[] +} + +declare const map: ReadonlyMap; +>map : ReadonlyMap + +map.entries; +>map.entries : () => MapIterator<[string, number]> +>map : ReadonlyMap +>entries : () => MapIterator<[string, number]> + +map.keys; +>map.keys : () => MapIterator +>map : ReadonlyMap +>keys : () => MapIterator + +map.values; +>map.values : () => MapIterator +>map : ReadonlyMap +>values : () => MapIterator + +declare const set: ReadonlySet; +>set : ReadonlySet + +set.entries; +>set.entries : () => SetIterator<[number, number]> +>set : ReadonlySet +>entries : () => SetIterator<[number, number]> + +set.keys; +>set.keys : () => SetIterator +>set : ReadonlySet +>keys : () => SetIterator + +set.values; +>set.values : () => SetIterator +>set : ReadonlySet +>values : () => SetIterator + +set.union; +>set.union : (other: ReadonlySetLike) => Set +>set : ReadonlySet +>union : (other: ReadonlySetLike) => Set + +set.intersection; +>set.intersection : (other: ReadonlySetLike) => Set +>set : ReadonlySet +>intersection : (other: ReadonlySetLike) => Set + +set.difference; +>set.difference : (other: ReadonlySetLike) => Set +>set : ReadonlySet +>difference : (other: ReadonlySetLike) => Set + +set.symmetricDifference; +>set.symmetricDifference : (other: ReadonlySetLike) => Set +>set : ReadonlySet +>symmetricDifference : (other: ReadonlySetLike) => Set + +set.isSubsetOf; +>set.isSubsetOf : (other: ReadonlySetLike) => boolean +>set : ReadonlySet +>isSubsetOf : (other: ReadonlySetLike) => boolean + +set.isSupersetOf; +>set.isSupersetOf : (other: ReadonlySetLike) => boolean +>set : ReadonlySet +>isSupersetOf : (other: ReadonlySetLike) => boolean + +set.isDisjointFrom; +>set.isDisjointFrom : (other: ReadonlySetLike) => boolean +>set : ReadonlySet +>isDisjointFrom : (other: ReadonlySetLike) => boolean + +array.fill; +>array.fill : any +>array : readonly number[] +>fill : any + +array.copyWithin; +>array.copyWithin : any +>array : readonly number[] +>copyWithin : any + +array.notAnArrayMethod; +>array.notAnArrayMethod : any +>array : readonly number[] +>notAnArrayMethod : any + +map.getOrInsert; +>map.getOrInsert : any +>map : ReadonlyMap +>getOrInsert : any + +map.getOrInsertComputed; +>map.getOrInsertComputed : any +>map : ReadonlyMap +>getOrInsertComputed : any + diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.errors.txt b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.errors.txt new file mode 100644 index 0000000000000..bd9878a3ad7a1 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.errors.txt @@ -0,0 +1,58 @@ +doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts(2,7): error TS2550: Property 'find' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. +doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts(3,7): error TS2550: Property 'findIndex' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. +doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts(4,7): error TS2550: Property 'entries' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. +doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts(5,7): error TS2550: Property 'keys' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. +doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts(6,7): error TS2550: Property 'values' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. +doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts(9,5): error TS2550: Property 'entries' does not exist on type 'ReadonlyMap'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. +doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts(10,5): error TS2550: Property 'keys' does not exist on type 'ReadonlyMap'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. +doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts(11,5): error TS2550: Property 'values' does not exist on type 'ReadonlyMap'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. +doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts(14,5): error TS2550: Property 'entries' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. +doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts(15,5): error TS2550: Property 'keys' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. +doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts(16,5): error TS2550: Property 'values' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. +doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts(18,22): error TS2339: Property 'fill' does not exist on type 'readonly [1, 2, 3]'. + + +==== doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts (12 errors) ==== + declare const array: ReadonlyArray; + array.find; + ~~~~ +!!! error TS2550: Property 'find' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. + array.findIndex; + ~~~~~~~~~ +!!! error TS2550: Property 'findIndex' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. + array.entries; + ~~~~~~~ +!!! error TS2550: Property 'entries' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. + array.keys; + ~~~~ +!!! error TS2550: Property 'keys' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. + array.values; + ~~~~~~ +!!! error TS2550: Property 'values' does not exist on type 'readonly number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. + + declare const map: ReadonlyMap; + map.entries; + ~~~~~~~ +!!! error TS2550: Property 'entries' does not exist on type 'ReadonlyMap'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. + map.keys; + ~~~~ +!!! error TS2550: Property 'keys' does not exist on type 'ReadonlyMap'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. + map.values; + ~~~~~~ +!!! error TS2550: Property 'values' does not exist on type 'ReadonlyMap'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. + + declare const set: ReadonlySet; + set.entries; + ~~~~~~~ +!!! error TS2550: Property 'entries' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. + set.keys; + ~~~~ +!!! error TS2550: Property 'keys' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. + set.values; + ~~~~~~ +!!! error TS2550: Property 'values' does not exist on type 'ReadonlySet'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. + + ([1, 2, 3] as const).fill; + ~~~~ +!!! error TS2339: Property 'fill' does not exist on type 'readonly [1, 2, 3]'. + \ No newline at end of file diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.symbols b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.symbols new file mode 100644 index 0000000000000..b4065cd16604a --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.symbols @@ -0,0 +1,51 @@ +//// [tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts] //// + +=== doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts === +declare const array: ReadonlyArray; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 0, 13)) +>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --)) + +array.find; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 0, 13)) + +array.findIndex; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 0, 13)) + +array.entries; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 0, 13)) + +array.keys; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 0, 13)) + +array.values; +>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 0, 13)) + +declare const map: ReadonlyMap; +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 7, 13)) +>ReadonlyMap : Symbol(ReadonlyMap, Decl(lib.es2015.collection.d.ts, --, --)) + +map.entries; +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 7, 13)) + +map.keys; +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 7, 13)) + +map.values; +>map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 7, 13)) + +declare const set: ReadonlySet; +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 12, 13)) +>ReadonlySet : Symbol(ReadonlySet, Decl(lib.es2015.collection.d.ts, --, --)) + +set.entries; +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 12, 13)) + +set.keys; +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 12, 13)) + +set.values; +>set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 12, 13)) + +([1, 2, 3] as const).fill; +>const : Symbol(const) + diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.types b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.types new file mode 100644 index 0000000000000..aa7a3825b6d56 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.types @@ -0,0 +1,77 @@ +//// [tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts] //// + +=== doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts === +declare const array: ReadonlyArray; +>array : readonly number[] + +array.find; +>array.find : any +>array : readonly number[] +>find : any + +array.findIndex; +>array.findIndex : any +>array : readonly number[] +>findIndex : any + +array.entries; +>array.entries : any +>array : readonly number[] +>entries : any + +array.keys; +>array.keys : any +>array : readonly number[] +>keys : any + +array.values; +>array.values : any +>array : readonly number[] +>values : any + +declare const map: ReadonlyMap; +>map : ReadonlyMap + +map.entries; +>map.entries : any +>map : ReadonlyMap +>entries : any + +map.keys; +>map.keys : any +>map : ReadonlyMap +>keys : any + +map.values; +>map.values : any +>map : ReadonlyMap +>values : any + +declare const set: ReadonlySet; +>set : ReadonlySet + +set.entries; +>set.entries : any +>set : ReadonlySet +>entries : any + +set.keys; +>set.keys : any +>set : ReadonlySet +>keys : any + +set.values; +>set.values : any +>set : ReadonlySet +>values : any + +([1, 2, 3] as const).fill; +>([1, 2, 3] as const).fill : any +>([1, 2, 3] as const) : readonly [1, 2, 3] +>[1, 2, 3] as const : readonly [1, 2, 3] +>[1, 2, 3] : readonly [1, 2, 3] +>1 : 1 +>2 : 2 +>3 : 3 +>fill : any + diff --git a/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts b/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts new file mode 100644 index 0000000000000..693c7505e39e6 --- /dev/null +++ b/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts @@ -0,0 +1,53 @@ +// @target: es2015, esnext +// @noEmit: true + +declare const array: ReadonlyArray; +array.find; +array.findIndex; +array.entries; +array.keys; +array.values; +array.includes; +array.flat; +array.flatMap; +array.at; +array.findLastIndex; +array.findLast; +array.toReversed; +array.toSorted; +array.toSpliced; +array.with; + +declare const readonlyArray: readonly number[]; +readonlyArray.toReversed; +([1, 2, 3] as const).toReversed(); + +declare const tuple: [number, string]; +tuple.toReversed; + +function f(value: T) { + value.toReversed; +} + +declare const map: ReadonlyMap; +map.entries; +map.keys; +map.values; + +declare const set: ReadonlySet; +set.entries; +set.keys; +set.values; +set.union; +set.intersection; +set.difference; +set.symmetricDifference; +set.isSubsetOf; +set.isSupersetOf; +set.isDisjointFrom; + +array.fill; +array.copyWithin; +array.notAnArrayMethod; +map.getOrInsert; +map.getOrInsertComputed; diff --git a/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts b/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts new file mode 100644 index 0000000000000..dbc1472b4416f --- /dev/null +++ b/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts @@ -0,0 +1,22 @@ +// @target: es2015 +// @lib: es5, es2015.collection +// @noEmit: true + +declare const array: ReadonlyArray; +array.find; +array.findIndex; +array.entries; +array.keys; +array.values; + +declare const map: ReadonlyMap; +map.entries; +map.keys; +map.values; + +declare const set: ReadonlySet; +set.entries; +set.keys; +set.values; + +([1, 2, 3] as const).fill; From 24ed7b0f9c19b39a36eb55d9f8a3010eff0f0b4d Mon Sep 17 00:00:00 2001 From: maheshrijal <62394512+maheshrijal@users.noreply.github.com> Date: Mon, 26 Oct 2026 20:27:23 +0530 Subject: [PATCH 2/2] Keep readonly library tests focused on diagnostics --- ...rgetLibraryReadonly(target=es2015).symbols | 161 ------------- ...TargetLibraryReadonly(target=es2015).types | 214 ------------------ ...rgetLibraryReadonly(target=esnext).symbols | 203 ----------------- ...TargetLibraryReadonly(target=esnext).types | 214 ------------------ ...ngeYourTargetLibraryReadonlyES2015.symbols | 51 ----- ...hangeYourTargetLibraryReadonlyES2015.types | 77 ------- ...ouNeedToChangeYourTargetLibraryReadonly.ts | 1 + ...ToChangeYourTargetLibraryReadonlyES2015.ts | 1 + 8 files changed, 2 insertions(+), 920 deletions(-) delete mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).symbols delete mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).types delete mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).symbols delete mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).types delete mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.symbols delete mode 100644 tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.types diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).symbols b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).symbols deleted file mode 100644 index 6cba99af35833..0000000000000 --- a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).symbols +++ /dev/null @@ -1,161 +0,0 @@ -//// [tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts] //// - -=== doYouNeedToChangeYourTargetLibraryReadonly.ts === -declare const array: ReadonlyArray; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) - -array.find; ->array.find : Symbol(ReadonlyArray.find, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->find : Symbol(ReadonlyArray.find, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) - -array.findIndex; ->array.findIndex : Symbol(ReadonlyArray.findIndex, Decl(lib.es2015.core.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->findIndex : Symbol(ReadonlyArray.findIndex, Decl(lib.es2015.core.d.ts, --, --)) - -array.entries; ->array.entries : Symbol(ReadonlyArray.entries, Decl(lib.es2015.iterable.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->entries : Symbol(ReadonlyArray.entries, Decl(lib.es2015.iterable.d.ts, --, --)) - -array.keys; ->array.keys : Symbol(ReadonlyArray.keys, Decl(lib.es2015.iterable.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->keys : Symbol(ReadonlyArray.keys, Decl(lib.es2015.iterable.d.ts, --, --)) - -array.values; ->array.values : Symbol(ReadonlyArray.values, Decl(lib.es2015.iterable.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->values : Symbol(ReadonlyArray.values, Decl(lib.es2015.iterable.d.ts, --, --)) - -array.includes; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -array.flat; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -array.flatMap; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -array.at; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -array.findLastIndex; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -array.findLast; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -array.toReversed; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -array.toSorted; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -array.toSpliced; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -array.with; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -declare const readonlyArray: readonly number[]; ->readonlyArray : Symbol(readonlyArray, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 17, 13)) - -readonlyArray.toReversed; ->readonlyArray : Symbol(readonlyArray, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 17, 13)) - -([1, 2, 3] as const).toReversed(); ->const : Symbol(const) - -declare const tuple: [number, string]; ->tuple : Symbol(tuple, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 21, 13)) - -tuple.toReversed; ->tuple : Symbol(tuple, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 21, 13)) - -function f(value: T) { ->f : Symbol(f, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 22, 17)) ->T : Symbol(T, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 11)) ->value : Symbol(value, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 40)) ->T : Symbol(T, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 11)) - - value.toReversed; ->value : Symbol(value, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 40)) -} - -declare const map: ReadonlyMap; ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) ->ReadonlyMap : Symbol(ReadonlyMap, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) - -map.entries; ->map.entries : Symbol(ReadonlyMap.entries, Decl(lib.es2015.iterable.d.ts, --, --)) ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) ->entries : Symbol(ReadonlyMap.entries, Decl(lib.es2015.iterable.d.ts, --, --)) - -map.keys; ->map.keys : Symbol(ReadonlyMap.keys, Decl(lib.es2015.iterable.d.ts, --, --)) ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) ->keys : Symbol(ReadonlyMap.keys, Decl(lib.es2015.iterable.d.ts, --, --)) - -map.values; ->map.values : Symbol(ReadonlyMap.values, Decl(lib.es2015.iterable.d.ts, --, --)) ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) ->values : Symbol(ReadonlyMap.values, Decl(lib.es2015.iterable.d.ts, --, --)) - -declare const set: ReadonlySet; ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->ReadonlySet : Symbol(ReadonlySet, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) - -set.entries; ->set.entries : Symbol(ReadonlySet.entries, Decl(lib.es2015.iterable.d.ts, --, --)) ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->entries : Symbol(ReadonlySet.entries, Decl(lib.es2015.iterable.d.ts, --, --)) - -set.keys; ->set.keys : Symbol(ReadonlySet.keys, Decl(lib.es2015.iterable.d.ts, --, --)) ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->keys : Symbol(ReadonlySet.keys, Decl(lib.es2015.iterable.d.ts, --, --)) - -set.values; ->set.values : Symbol(ReadonlySet.values, Decl(lib.es2015.iterable.d.ts, --, --)) ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->values : Symbol(ReadonlySet.values, Decl(lib.es2015.iterable.d.ts, --, --)) - -set.union; ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) - -set.intersection; ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) - -set.difference; ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) - -set.symmetricDifference; ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) - -set.isSubsetOf; ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) - -set.isSupersetOf; ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) - -set.isDisjointFrom; ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) - -array.fill; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -array.copyWithin; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -array.notAnArrayMethod; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -map.getOrInsert; ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) - -map.getOrInsertComputed; ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) - diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).types b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).types deleted file mode 100644 index 4116bc4831666..0000000000000 --- a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=es2015).types +++ /dev/null @@ -1,214 +0,0 @@ -//// [tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts] //// - -=== doYouNeedToChangeYourTargetLibraryReadonly.ts === -declare const array: ReadonlyArray; ->array : readonly number[] - -array.find; ->array.find : { (predicate: (value: number, index: number, obj: readonly number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any): number | undefined; } ->array : readonly number[] ->find : { (predicate: (value: number, index: number, obj: readonly number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any): number | undefined; } - -array.findIndex; ->array.findIndex : (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any) => number ->array : readonly number[] ->findIndex : (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any) => number - -array.entries; ->array.entries : () => ArrayIterator<[number, number]> ->array : readonly number[] ->entries : () => ArrayIterator<[number, number]> - -array.keys; ->array.keys : () => ArrayIterator ->array : readonly number[] ->keys : () => ArrayIterator - -array.values; ->array.values : () => ArrayIterator ->array : readonly number[] ->values : () => ArrayIterator - -array.includes; ->array.includes : any ->array : readonly number[] ->includes : any - -array.flat; ->array.flat : any ->array : readonly number[] ->flat : any - -array.flatMap; ->array.flatMap : any ->array : readonly number[] ->flatMap : any - -array.at; ->array.at : any ->array : readonly number[] ->at : any - -array.findLastIndex; ->array.findLastIndex : any ->array : readonly number[] ->findLastIndex : any - -array.findLast; ->array.findLast : any ->array : readonly number[] ->findLast : any - -array.toReversed; ->array.toReversed : any ->array : readonly number[] ->toReversed : any - -array.toSorted; ->array.toSorted : any ->array : readonly number[] ->toSorted : any - -array.toSpliced; ->array.toSpliced : any ->array : readonly number[] ->toSpliced : any - -array.with; ->array.with : any ->array : readonly number[] ->with : any - -declare const readonlyArray: readonly number[]; ->readonlyArray : readonly number[] - -readonlyArray.toReversed; ->readonlyArray.toReversed : any ->readonlyArray : readonly number[] ->toReversed : any - -([1, 2, 3] as const).toReversed(); ->([1, 2, 3] as const).toReversed() : any ->([1, 2, 3] as const).toReversed : any ->([1, 2, 3] as const) : readonly [1, 2, 3] ->[1, 2, 3] as const : readonly [1, 2, 3] ->[1, 2, 3] : readonly [1, 2, 3] ->1 : 1 ->2 : 2 ->3 : 3 ->toReversed : any - -declare const tuple: [number, string]; ->tuple : [number, string] - -tuple.toReversed; ->tuple.toReversed : any ->tuple : [number, string] ->toReversed : any - -function f(value: T) { ->f : (value: T) => void ->value : T - - value.toReversed; ->value.toReversed : any ->value : T ->toReversed : any -} - -declare const map: ReadonlyMap; ->map : ReadonlyMap - -map.entries; ->map.entries : () => MapIterator<[string, number]> ->map : ReadonlyMap ->entries : () => MapIterator<[string, number]> - -map.keys; ->map.keys : () => MapIterator ->map : ReadonlyMap ->keys : () => MapIterator - -map.values; ->map.values : () => MapIterator ->map : ReadonlyMap ->values : () => MapIterator - -declare const set: ReadonlySet; ->set : ReadonlySet - -set.entries; ->set.entries : () => SetIterator<[number, number]> ->set : ReadonlySet ->entries : () => SetIterator<[number, number]> - -set.keys; ->set.keys : () => SetIterator ->set : ReadonlySet ->keys : () => SetIterator - -set.values; ->set.values : () => SetIterator ->set : ReadonlySet ->values : () => SetIterator - -set.union; ->set.union : any ->set : ReadonlySet ->union : any - -set.intersection; ->set.intersection : any ->set : ReadonlySet ->intersection : any - -set.difference; ->set.difference : any ->set : ReadonlySet ->difference : any - -set.symmetricDifference; ->set.symmetricDifference : any ->set : ReadonlySet ->symmetricDifference : any - -set.isSubsetOf; ->set.isSubsetOf : any ->set : ReadonlySet ->isSubsetOf : any - -set.isSupersetOf; ->set.isSupersetOf : any ->set : ReadonlySet ->isSupersetOf : any - -set.isDisjointFrom; ->set.isDisjointFrom : any ->set : ReadonlySet ->isDisjointFrom : any - -array.fill; ->array.fill : any ->array : readonly number[] ->fill : any - -array.copyWithin; ->array.copyWithin : any ->array : readonly number[] ->copyWithin : any - -array.notAnArrayMethod; ->array.notAnArrayMethod : any ->array : readonly number[] ->notAnArrayMethod : any - -map.getOrInsert; ->map.getOrInsert : any ->map : ReadonlyMap ->getOrInsert : any - -map.getOrInsertComputed; ->map.getOrInsertComputed : any ->map : ReadonlyMap ->getOrInsertComputed : any - diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).symbols b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).symbols deleted file mode 100644 index 708c78c68a946..0000000000000 --- a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).symbols +++ /dev/null @@ -1,203 +0,0 @@ -//// [tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts] //// - -=== doYouNeedToChangeYourTargetLibraryReadonly.ts === -declare const array: ReadonlyArray; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --) ... and 3 more) - -array.find; ->array.find : Symbol(ReadonlyArray.find, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->find : Symbol(ReadonlyArray.find, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) - -array.findIndex; ->array.findIndex : Symbol(ReadonlyArray.findIndex, Decl(lib.es2015.core.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->findIndex : Symbol(ReadonlyArray.findIndex, Decl(lib.es2015.core.d.ts, --, --)) - -array.entries; ->array.entries : Symbol(ReadonlyArray.entries, Decl(lib.es2015.iterable.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->entries : Symbol(ReadonlyArray.entries, Decl(lib.es2015.iterable.d.ts, --, --)) - -array.keys; ->array.keys : Symbol(ReadonlyArray.keys, Decl(lib.es2015.iterable.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->keys : Symbol(ReadonlyArray.keys, Decl(lib.es2015.iterable.d.ts, --, --)) - -array.values; ->array.values : Symbol(ReadonlyArray.values, Decl(lib.es2015.iterable.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->values : Symbol(ReadonlyArray.values, Decl(lib.es2015.iterable.d.ts, --, --)) - -array.includes; ->array.includes : Symbol(ReadonlyArray.includes, Decl(lib.es2016.array.include.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->includes : Symbol(ReadonlyArray.includes, Decl(lib.es2016.array.include.d.ts, --, --)) - -array.flat; ->array.flat : Symbol(ReadonlyArray.flat, Decl(lib.es2019.array.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->flat : Symbol(ReadonlyArray.flat, Decl(lib.es2019.array.d.ts, --, --)) - -array.flatMap; ->array.flatMap : Symbol(ReadonlyArray.flatMap, Decl(lib.es2019.array.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->flatMap : Symbol(ReadonlyArray.flatMap, Decl(lib.es2019.array.d.ts, --, --)) - -array.at; ->array.at : Symbol(ReadonlyArray.at, Decl(lib.es2022.array.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->at : Symbol(ReadonlyArray.at, Decl(lib.es2022.array.d.ts, --, --)) - -array.findLastIndex; ->array.findLastIndex : Symbol(ReadonlyArray.findLastIndex, Decl(lib.es2023.array.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->findLastIndex : Symbol(ReadonlyArray.findLastIndex, Decl(lib.es2023.array.d.ts, --, --)) - -array.findLast; ->array.findLast : Symbol(ReadonlyArray.findLast, Decl(lib.es2023.array.d.ts, --, --), Decl(lib.es2023.array.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->findLast : Symbol(ReadonlyArray.findLast, Decl(lib.es2023.array.d.ts, --, --), Decl(lib.es2023.array.d.ts, --, --)) - -array.toReversed; ->array.toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) - -array.toSorted; ->array.toSorted : Symbol(ReadonlyArray.toSorted, Decl(lib.es2023.array.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->toSorted : Symbol(ReadonlyArray.toSorted, Decl(lib.es2023.array.d.ts, --, --)) - -array.toSpliced; ->array.toSpliced : Symbol(ReadonlyArray.toSpliced, Decl(lib.es2023.array.d.ts, --, --), Decl(lib.es2023.array.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->toSpliced : Symbol(ReadonlyArray.toSpliced, Decl(lib.es2023.array.d.ts, --, --), Decl(lib.es2023.array.d.ts, --, --)) - -array.with; ->array.with : Symbol(ReadonlyArray.with, Decl(lib.es2023.array.d.ts, --, --)) ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) ->with : Symbol(ReadonlyArray.with, Decl(lib.es2023.array.d.ts, --, --)) - -declare const readonlyArray: readonly number[]; ->readonlyArray : Symbol(readonlyArray, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 17, 13)) - -readonlyArray.toReversed; ->readonlyArray.toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) ->readonlyArray : Symbol(readonlyArray, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 17, 13)) ->toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) - -([1, 2, 3] as const).toReversed(); ->([1, 2, 3] as const).toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) ->const : Symbol(const) ->toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) - -declare const tuple: [number, string]; ->tuple : Symbol(tuple, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 21, 13)) - -tuple.toReversed; ->tuple.toReversed : Symbol(Array.toReversed, Decl(lib.es2023.array.d.ts, --, --)) ->tuple : Symbol(tuple, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 21, 13)) ->toReversed : Symbol(Array.toReversed, Decl(lib.es2023.array.d.ts, --, --)) - -function f(value: T) { ->f : Symbol(f, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 22, 17)) ->T : Symbol(T, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 11)) ->value : Symbol(value, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 40)) ->T : Symbol(T, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 11)) - - value.toReversed; ->value.toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) ->value : Symbol(value, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 24, 40)) ->toReversed : Symbol(ReadonlyArray.toReversed, Decl(lib.es2023.array.d.ts, --, --)) -} - -declare const map: ReadonlyMap; ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) ->ReadonlyMap : Symbol(ReadonlyMap, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) - -map.entries; ->map.entries : Symbol(ReadonlyMap.entries, Decl(lib.es2015.iterable.d.ts, --, --)) ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) ->entries : Symbol(ReadonlyMap.entries, Decl(lib.es2015.iterable.d.ts, --, --)) - -map.keys; ->map.keys : Symbol(ReadonlyMap.keys, Decl(lib.es2015.iterable.d.ts, --, --)) ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) ->keys : Symbol(ReadonlyMap.keys, Decl(lib.es2015.iterable.d.ts, --, --)) - -map.values; ->map.values : Symbol(ReadonlyMap.values, Decl(lib.es2015.iterable.d.ts, --, --)) ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) ->values : Symbol(ReadonlyMap.values, Decl(lib.es2015.iterable.d.ts, --, --)) - -declare const set: ReadonlySet; ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->ReadonlySet : Symbol(ReadonlySet, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2025.collection.d.ts, --, --)) - -set.entries; ->set.entries : Symbol(ReadonlySet.entries, Decl(lib.es2015.iterable.d.ts, --, --)) ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->entries : Symbol(ReadonlySet.entries, Decl(lib.es2015.iterable.d.ts, --, --)) - -set.keys; ->set.keys : Symbol(ReadonlySet.keys, Decl(lib.es2015.iterable.d.ts, --, --)) ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->keys : Symbol(ReadonlySet.keys, Decl(lib.es2015.iterable.d.ts, --, --)) - -set.values; ->set.values : Symbol(ReadonlySet.values, Decl(lib.es2015.iterable.d.ts, --, --)) ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->values : Symbol(ReadonlySet.values, Decl(lib.es2015.iterable.d.ts, --, --)) - -set.union; ->set.union : Symbol(ReadonlySet.union, Decl(lib.es2025.collection.d.ts, --, --)) ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->union : Symbol(ReadonlySet.union, Decl(lib.es2025.collection.d.ts, --, --)) - -set.intersection; ->set.intersection : Symbol(ReadonlySet.intersection, Decl(lib.es2025.collection.d.ts, --, --)) ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->intersection : Symbol(ReadonlySet.intersection, Decl(lib.es2025.collection.d.ts, --, --)) - -set.difference; ->set.difference : Symbol(ReadonlySet.difference, Decl(lib.es2025.collection.d.ts, --, --)) ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->difference : Symbol(ReadonlySet.difference, Decl(lib.es2025.collection.d.ts, --, --)) - -set.symmetricDifference; ->set.symmetricDifference : Symbol(ReadonlySet.symmetricDifference, Decl(lib.es2025.collection.d.ts, --, --)) ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->symmetricDifference : Symbol(ReadonlySet.symmetricDifference, Decl(lib.es2025.collection.d.ts, --, --)) - -set.isSubsetOf; ->set.isSubsetOf : Symbol(ReadonlySet.isSubsetOf, Decl(lib.es2025.collection.d.ts, --, --)) ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->isSubsetOf : Symbol(ReadonlySet.isSubsetOf, Decl(lib.es2025.collection.d.ts, --, --)) - -set.isSupersetOf; ->set.isSupersetOf : Symbol(ReadonlySet.isSupersetOf, Decl(lib.es2025.collection.d.ts, --, --)) ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->isSupersetOf : Symbol(ReadonlySet.isSupersetOf, Decl(lib.es2025.collection.d.ts, --, --)) - -set.isDisjointFrom; ->set.isDisjointFrom : Symbol(ReadonlySet.isDisjointFrom, Decl(lib.es2025.collection.d.ts, --, --)) ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 33, 13)) ->isDisjointFrom : Symbol(ReadonlySet.isDisjointFrom, Decl(lib.es2025.collection.d.ts, --, --)) - -array.fill; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -array.copyWithin; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -array.notAnArrayMethod; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 0, 13)) - -map.getOrInsert; ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) - -map.getOrInsertComputed; ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonly.ts, 28, 13)) - diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).types b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).types deleted file mode 100644 index 18abbbe6407fe..0000000000000 --- a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonly(target=esnext).types +++ /dev/null @@ -1,214 +0,0 @@ -//// [tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts] //// - -=== doYouNeedToChangeYourTargetLibraryReadonly.ts === -declare const array: ReadonlyArray; ->array : readonly number[] - -array.find; ->array.find : { (predicate: (value: number, index: number, obj: readonly number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any): number | undefined; } ->array : readonly number[] ->find : { (predicate: (value: number, index: number, obj: readonly number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any): number | undefined; } - -array.findIndex; ->array.findIndex : (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any) => number ->array : readonly number[] ->findIndex : (predicate: (value: number, index: number, obj: readonly number[]) => unknown, thisArg?: any) => number - -array.entries; ->array.entries : () => ArrayIterator<[number, number]> ->array : readonly number[] ->entries : () => ArrayIterator<[number, number]> - -array.keys; ->array.keys : () => ArrayIterator ->array : readonly number[] ->keys : () => ArrayIterator - -array.values; ->array.values : () => ArrayIterator ->array : readonly number[] ->values : () => ArrayIterator - -array.includes; ->array.includes : (searchElement: number, fromIndex?: number) => boolean ->array : readonly number[] ->includes : (searchElement: number, fromIndex?: number) => boolean - -array.flat; ->array.flat : (this: A, depth?: D | undefined) => FlatArray[] ->array : readonly number[] ->flat : (this: A, depth?: D | undefined) => FlatArray[] - -array.flatMap; ->array.flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[] ->array : readonly number[] ->flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This | undefined) => U[] - -array.at; ->array.at : (index: number) => number | undefined ->array : readonly number[] ->at : (index: number) => number | undefined - -array.findLastIndex; ->array.findLastIndex : (predicate: (value: number, index: number, array: readonly number[]) => unknown, thisArg?: any) => number ->array : readonly number[] ->findLastIndex : (predicate: (value: number, index: number, array: readonly number[]) => unknown, thisArg?: any) => number - -array.findLast; ->array.findLast : { (predicate: (value: number, index: number, array: readonly number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, array: readonly number[]) => unknown, thisArg?: any): number | undefined; } ->array : readonly number[] ->findLast : { (predicate: (value: number, index: number, array: readonly number[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: number, index: number, array: readonly number[]) => unknown, thisArg?: any): number | undefined; } - -array.toReversed; ->array.toReversed : () => number[] ->array : readonly number[] ->toReversed : () => number[] - -array.toSorted; ->array.toSorted : (compareFn?: ((a: number, b: number) => number) | undefined) => number[] ->array : readonly number[] ->toSorted : (compareFn?: ((a: number, b: number) => number) | undefined) => number[] - -array.toSpliced; ->array.toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } ->array : readonly number[] ->toSpliced : { (start: number, deleteCount: number, ...items: number[]): number[]; (start: number, deleteCount?: number): number[]; } - -array.with; ->array.with : (index: number, value: number) => number[] ->array : readonly number[] ->with : (index: number, value: number) => number[] - -declare const readonlyArray: readonly number[]; ->readonlyArray : readonly number[] - -readonlyArray.toReversed; ->readonlyArray.toReversed : () => number[] ->readonlyArray : readonly number[] ->toReversed : () => number[] - -([1, 2, 3] as const).toReversed(); ->([1, 2, 3] as const).toReversed() : (1 | 2 | 3)[] ->([1, 2, 3] as const).toReversed : () => (1 | 2 | 3)[] ->([1, 2, 3] as const) : readonly [1, 2, 3] ->[1, 2, 3] as const : readonly [1, 2, 3] ->[1, 2, 3] : readonly [1, 2, 3] ->1 : 1 ->2 : 2 ->3 : 3 ->toReversed : () => (1 | 2 | 3)[] - -declare const tuple: [number, string]; ->tuple : [number, string] - -tuple.toReversed; ->tuple.toReversed : () => (string | number)[] ->tuple : [number, string] ->toReversed : () => (string | number)[] - -function f(value: T) { ->f : (value: T) => void ->value : T - - value.toReversed; ->value.toReversed : () => number[] ->value : T ->toReversed : () => number[] -} - -declare const map: ReadonlyMap; ->map : ReadonlyMap - -map.entries; ->map.entries : () => MapIterator<[string, number]> ->map : ReadonlyMap ->entries : () => MapIterator<[string, number]> - -map.keys; ->map.keys : () => MapIterator ->map : ReadonlyMap ->keys : () => MapIterator - -map.values; ->map.values : () => MapIterator ->map : ReadonlyMap ->values : () => MapIterator - -declare const set: ReadonlySet; ->set : ReadonlySet - -set.entries; ->set.entries : () => SetIterator<[number, number]> ->set : ReadonlySet ->entries : () => SetIterator<[number, number]> - -set.keys; ->set.keys : () => SetIterator ->set : ReadonlySet ->keys : () => SetIterator - -set.values; ->set.values : () => SetIterator ->set : ReadonlySet ->values : () => SetIterator - -set.union; ->set.union : (other: ReadonlySetLike) => Set ->set : ReadonlySet ->union : (other: ReadonlySetLike) => Set - -set.intersection; ->set.intersection : (other: ReadonlySetLike) => Set ->set : ReadonlySet ->intersection : (other: ReadonlySetLike) => Set - -set.difference; ->set.difference : (other: ReadonlySetLike) => Set ->set : ReadonlySet ->difference : (other: ReadonlySetLike) => Set - -set.symmetricDifference; ->set.symmetricDifference : (other: ReadonlySetLike) => Set ->set : ReadonlySet ->symmetricDifference : (other: ReadonlySetLike) => Set - -set.isSubsetOf; ->set.isSubsetOf : (other: ReadonlySetLike) => boolean ->set : ReadonlySet ->isSubsetOf : (other: ReadonlySetLike) => boolean - -set.isSupersetOf; ->set.isSupersetOf : (other: ReadonlySetLike) => boolean ->set : ReadonlySet ->isSupersetOf : (other: ReadonlySetLike) => boolean - -set.isDisjointFrom; ->set.isDisjointFrom : (other: ReadonlySetLike) => boolean ->set : ReadonlySet ->isDisjointFrom : (other: ReadonlySetLike) => boolean - -array.fill; ->array.fill : any ->array : readonly number[] ->fill : any - -array.copyWithin; ->array.copyWithin : any ->array : readonly number[] ->copyWithin : any - -array.notAnArrayMethod; ->array.notAnArrayMethod : any ->array : readonly number[] ->notAnArrayMethod : any - -map.getOrInsert; ->map.getOrInsert : any ->map : ReadonlyMap ->getOrInsert : any - -map.getOrInsertComputed; ->map.getOrInsertComputed : any ->map : ReadonlyMap ->getOrInsertComputed : any - diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.symbols b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.symbols deleted file mode 100644 index b4065cd16604a..0000000000000 --- a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.symbols +++ /dev/null @@ -1,51 +0,0 @@ -//// [tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts] //// - -=== doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts === -declare const array: ReadonlyArray; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 0, 13)) ->ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --)) - -array.find; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 0, 13)) - -array.findIndex; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 0, 13)) - -array.entries; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 0, 13)) - -array.keys; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 0, 13)) - -array.values; ->array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 0, 13)) - -declare const map: ReadonlyMap; ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 7, 13)) ->ReadonlyMap : Symbol(ReadonlyMap, Decl(lib.es2015.collection.d.ts, --, --)) - -map.entries; ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 7, 13)) - -map.keys; ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 7, 13)) - -map.values; ->map : Symbol(map, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 7, 13)) - -declare const set: ReadonlySet; ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 12, 13)) ->ReadonlySet : Symbol(ReadonlySet, Decl(lib.es2015.collection.d.ts, --, --)) - -set.entries; ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 12, 13)) - -set.keys; ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 12, 13)) - -set.values; ->set : Symbol(set, Decl(doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts, 12, 13)) - -([1, 2, 3] as const).fill; ->const : Symbol(const) - diff --git a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.types b/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.types deleted file mode 100644 index aa7a3825b6d56..0000000000000 --- a/tsc/testdata/baselines/reference/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.types +++ /dev/null @@ -1,77 +0,0 @@ -//// [tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts] //// - -=== doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts === -declare const array: ReadonlyArray; ->array : readonly number[] - -array.find; ->array.find : any ->array : readonly number[] ->find : any - -array.findIndex; ->array.findIndex : any ->array : readonly number[] ->findIndex : any - -array.entries; ->array.entries : any ->array : readonly number[] ->entries : any - -array.keys; ->array.keys : any ->array : readonly number[] ->keys : any - -array.values; ->array.values : any ->array : readonly number[] ->values : any - -declare const map: ReadonlyMap; ->map : ReadonlyMap - -map.entries; ->map.entries : any ->map : ReadonlyMap ->entries : any - -map.keys; ->map.keys : any ->map : ReadonlyMap ->keys : any - -map.values; ->map.values : any ->map : ReadonlyMap ->values : any - -declare const set: ReadonlySet; ->set : ReadonlySet - -set.entries; ->set.entries : any ->set : ReadonlySet ->entries : any - -set.keys; ->set.keys : any ->set : ReadonlySet ->keys : any - -set.values; ->set.values : any ->set : ReadonlySet ->values : any - -([1, 2, 3] as const).fill; ->([1, 2, 3] as const).fill : any ->([1, 2, 3] as const) : readonly [1, 2, 3] ->[1, 2, 3] as const : readonly [1, 2, 3] ->[1, 2, 3] : readonly [1, 2, 3] ->1 : 1 ->2 : 2 ->3 : 3 ->fill : any - diff --git a/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts b/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts index 693c7505e39e6..29df9d9416c11 100644 --- a/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts +++ b/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonly.ts @@ -1,5 +1,6 @@ // @target: es2015, esnext // @noEmit: true +// @noTypesAndSymbols: true declare const array: ReadonlyArray; array.find; diff --git a/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts b/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts index dbc1472b4416f..56f21d178cc96 100644 --- a/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts +++ b/tsc/testdata/tests/cases/compiler/doYouNeedToChangeYourTargetLibraryReadonlyES2015.ts @@ -1,6 +1,7 @@ // @target: es2015 // @lib: es5, es2015.collection // @noEmit: true +// @noTypesAndSymbols: true declare const array: ReadonlyArray; array.find;