From 09f518243d32453444cb7de850f6af003a742404 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Wed, 27 Jul 2016 15:33:36 -0700 Subject: [PATCH] Re-add concat overload to support inferring tuples --- src/lib/es5.d.ts | 5 ++++ tests/baselines/reference/concatTuples.js | 8 +++++++ .../baselines/reference/concatTuples.symbols | 10 ++++++++ tests/baselines/reference/concatTuples.types | 23 +++++++++++++++++++ tests/cases/compiler/concatTuples.ts | 2 ++ 5 files changed, 48 insertions(+) create mode 100644 tests/baselines/reference/concatTuples.js create mode 100644 tests/baselines/reference/concatTuples.symbols create mode 100644 tests/baselines/reference/concatTuples.types create mode 100644 tests/cases/compiler/concatTuples.ts diff --git a/src/lib/es5.d.ts b/src/lib/es5.d.ts index 6f017c8a343..496df578c19 100644 --- a/src/lib/es5.d.ts +++ b/src/lib/es5.d.ts @@ -1108,6 +1108,11 @@ interface Array { * Removes the last element from an array and returns it. */ pop(): T | undefined; + /** + * Combines two or more arrays. + * @param items Additional items to add to the end of array1. + */ + concat(...items: T[][]): T[]; /** * Combines two or more arrays. * @param items Additional items to add to the end of array1. diff --git a/tests/baselines/reference/concatTuples.js b/tests/baselines/reference/concatTuples.js new file mode 100644 index 00000000000..699c43f210e --- /dev/null +++ b/tests/baselines/reference/concatTuples.js @@ -0,0 +1,8 @@ +//// [concatTuples.ts] +let ijs: [number, number][] = [[1, 2]]; +ijs = ijs.concat([[3, 4], [5, 6]]); + + +//// [concatTuples.js] +var ijs = [[1, 2]]; +ijs = ijs.concat([[3, 4], [5, 6]]); diff --git a/tests/baselines/reference/concatTuples.symbols b/tests/baselines/reference/concatTuples.symbols new file mode 100644 index 00000000000..a6524f3e1ff --- /dev/null +++ b/tests/baselines/reference/concatTuples.symbols @@ -0,0 +1,10 @@ +=== tests/cases/compiler/concatTuples.ts === +let ijs: [number, number][] = [[1, 2]]; +>ijs : Symbol(ijs, Decl(concatTuples.ts, 0, 3)) + +ijs = ijs.concat([[3, 4], [5, 6]]); +>ijs : Symbol(ijs, Decl(concatTuples.ts, 0, 3)) +>ijs.concat : Symbol(Array.concat, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>ijs : Symbol(ijs, Decl(concatTuples.ts, 0, 3)) +>concat : Symbol(Array.concat, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + diff --git a/tests/baselines/reference/concatTuples.types b/tests/baselines/reference/concatTuples.types new file mode 100644 index 00000000000..3923470b78d --- /dev/null +++ b/tests/baselines/reference/concatTuples.types @@ -0,0 +1,23 @@ +=== tests/cases/compiler/concatTuples.ts === +let ijs: [number, number][] = [[1, 2]]; +>ijs : [number, number][] +>[[1, 2]] : [number, number][] +>[1, 2] : [number, number] +>1 : number +>2 : number + +ijs = ijs.concat([[3, 4], [5, 6]]); +>ijs = ijs.concat([[3, 4], [5, 6]]) : [number, number][] +>ijs : [number, number][] +>ijs.concat([[3, 4], [5, 6]]) : [number, number][] +>ijs.concat : { (...items: [number, number][][]): [number, number][]; (...items: ([number, number] | [number, number][])[]): [number, number][]; } +>ijs : [number, number][] +>concat : { (...items: [number, number][][]): [number, number][]; (...items: ([number, number] | [number, number][])[]): [number, number][]; } +>[[3, 4], [5, 6]] : [number, number][] +>[3, 4] : [number, number] +>3 : number +>4 : number +>[5, 6] : [number, number] +>5 : number +>6 : number + diff --git a/tests/cases/compiler/concatTuples.ts b/tests/cases/compiler/concatTuples.ts new file mode 100644 index 00000000000..9a62f22bb63 --- /dev/null +++ b/tests/cases/compiler/concatTuples.ts @@ -0,0 +1,2 @@ +let ijs: [number, number][] = [[1, 2]]; +ijs = ijs.concat([[3, 4], [5, 6]]);