diff --git a/src/lib/es2015.collection.d.ts b/src/lib/es2015.collection.d.ts index 9e27045a5592a..fd4a752cd57e9 100644 --- a/src/lib/es2015.collection.d.ts +++ b/src/lib/es2015.collection.d.ts @@ -64,7 +64,7 @@ interface WeakMap { } interface WeakMapConstructor { - new (entries?: readonly [K, V][] | null): WeakMap; + new (entries?: readonly (readonly [K, V])[] | null): WeakMap; readonly prototype: WeakMap; } declare var WeakMap: WeakMapConstructor; diff --git a/tests/baselines/reference/mapConstructorOnReadonlyTuple.js b/tests/baselines/reference/mapConstructorOnReadonlyTuple.js index af2a3b20b4cb8..4e158e568e477 100644 --- a/tests/baselines/reference/mapConstructorOnReadonlyTuple.js +++ b/tests/baselines/reference/mapConstructorOnReadonlyTuple.js @@ -1,7 +1,10 @@ //// [mapConstructorOnReadonlyTuple.ts] -const pairs = [['1', 1], ['2', 2]] as const -new Map(pairs); +const pairs = [[{}, 1], [{}, 2]] as const; +new Map(pairs); +new WeakMap(pairs); + //// [mapConstructorOnReadonlyTuple.js] -const pairs = [['1', 1], ['2', 2]]; +const pairs = [[{}, 1], [{}, 2]]; new Map(pairs); +new WeakMap(pairs); diff --git a/tests/baselines/reference/mapConstructorOnReadonlyTuple.symbols b/tests/baselines/reference/mapConstructorOnReadonlyTuple.symbols index 29426a8ec8ddb..c577de5c9fd04 100644 --- a/tests/baselines/reference/mapConstructorOnReadonlyTuple.symbols +++ b/tests/baselines/reference/mapConstructorOnReadonlyTuple.symbols @@ -1,5 +1,5 @@ === tests/cases/compiler/mapConstructorOnReadonlyTuple.ts === -const pairs = [['1', 1], ['2', 2]] as const +const pairs = [[{}, 1], [{}, 2]] as const; >pairs : Symbol(pairs, Decl(mapConstructorOnReadonlyTuple.ts, 0, 5)) >const : Symbol(const) @@ -7,3 +7,7 @@ new Map(pairs); >Map : Symbol(Map, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >pairs : Symbol(pairs, Decl(mapConstructorOnReadonlyTuple.ts, 0, 5)) +new WeakMap(pairs); +>WeakMap : Symbol(WeakMap, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>pairs : Symbol(pairs, Decl(mapConstructorOnReadonlyTuple.ts, 0, 5)) + diff --git a/tests/baselines/reference/mapConstructorOnReadonlyTuple.types b/tests/baselines/reference/mapConstructorOnReadonlyTuple.types index 44fc38fa797ab..8a024a3df84ab 100644 --- a/tests/baselines/reference/mapConstructorOnReadonlyTuple.types +++ b/tests/baselines/reference/mapConstructorOnReadonlyTuple.types @@ -1,17 +1,22 @@ === tests/cases/compiler/mapConstructorOnReadonlyTuple.ts === -const pairs = [['1', 1], ['2', 2]] as const ->pairs : readonly [readonly ["1", 1], readonly ["2", 2]] ->[['1', 1], ['2', 2]] as const : readonly [readonly ["1", 1], readonly ["2", 2]] ->[['1', 1], ['2', 2]] : readonly [readonly ["1", 1], readonly ["2", 2]] ->['1', 1] : readonly ["1", 1] ->'1' : "1" +const pairs = [[{}, 1], [{}, 2]] as const; +>pairs : readonly [readonly [{}, 1], readonly [{}, 2]] +>[[{}, 1], [{}, 2]] as const : readonly [readonly [{}, 1], readonly [{}, 2]] +>[[{}, 1], [{}, 2]] : readonly [readonly [{}, 1], readonly [{}, 2]] +>[{}, 1] : readonly [{}, 1] +>{} : {} >1 : 1 ->['2', 2] : readonly ["2", 2] ->'2' : "2" +>[{}, 2] : readonly [{}, 2] +>{} : {} >2 : 2 new Map(pairs); ->new Map(pairs) : Map<"1" | "2", 1 | 2> +>new Map(pairs) : Map<{}, 1 | 2> >Map : MapConstructor ->pairs : readonly [readonly ["1", 1], readonly ["2", 2]] +>pairs : readonly [readonly [{}, 1], readonly [{}, 2]] + +new WeakMap(pairs); +>new WeakMap(pairs) : WeakMap<{}, 1 | 2> +>WeakMap : WeakMapConstructor +>pairs : readonly [readonly [{}, 1], readonly [{}, 2]] diff --git a/tests/cases/compiler/mapConstructorOnReadonlyTuple.ts b/tests/cases/compiler/mapConstructorOnReadonlyTuple.ts index f4914e67def20..2aa2824f4cf82 100644 --- a/tests/cases/compiler/mapConstructorOnReadonlyTuple.ts +++ b/tests/cases/compiler/mapConstructorOnReadonlyTuple.ts @@ -1,4 +1,5 @@ // @target: es2015 -const pairs = [['1', 1], ['2', 2]] as const -new Map(pairs); \ No newline at end of file +const pairs = [[{}, 1], [{}, 2]] as const; +new Map(pairs); +new WeakMap(pairs);