From 9ff425b574e5c38847931655374cd70325b6cf3d Mon Sep 17 00:00:00 2001 From: Rostislav Galimsky Date: Wed, 14 Sep 2016 20:05:12 +0300 Subject: [PATCH 1/8] Fix issue 10843 --- lib/lib.es2015.core.d.ts | 2 +- lib/lib.es6.d.ts | 2 +- src/lib/es2015.core.d.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/lib.es2015.core.d.ts b/lib/lib.es2015.core.d.ts index c7c7afb821b..c92a44c2312 100644 --- a/lib/lib.es2015.core.d.ts +++ b/lib/lib.es2015.core.d.ts @@ -37,7 +37,7 @@ interface Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: T) => boolean, thisArg?: any): number; + findIndex(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): number; /** * Returns the this object after filling the section identified by start and end with value diff --git a/lib/lib.es6.d.ts b/lib/lib.es6.d.ts index 8e9de3f4ec9..a7faa4789a6 100644 --- a/lib/lib.es6.d.ts +++ b/lib/lib.es6.d.ts @@ -4143,7 +4143,7 @@ interface Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: T) => boolean, thisArg?: any): number; + findIndex(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): number; /** * Returns the this object after filling the section identified by start and end with value diff --git a/src/lib/es2015.core.d.ts b/src/lib/es2015.core.d.ts index 15fbb1b77c5..7395039b1c9 100644 --- a/src/lib/es2015.core.d.ts +++ b/src/lib/es2015.core.d.ts @@ -21,7 +21,7 @@ interface Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: T) => boolean, thisArg?: any): number; + findIndex(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): number; /** * Returns the this object after filling the section identified by start and end with value @@ -368,7 +368,7 @@ interface ReadonlyArray { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: T) => boolean, thisArg?: any): number; + findIndex(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): number; } interface RegExp { From 6aa2427cded86b7dad8a58afab6806a75cf8fc85 Mon Sep 17 00:00:00 2001 From: Rostislav Galimsky Date: Wed, 14 Sep 2016 20:05:57 +0300 Subject: [PATCH 2/8] add test for issue 10843 --- tests/baselines/reference/findIndex.js | 10 ++++++++++ tests/baselines/reference/findIndex.symbols | 11 +++++++++++ tests/baselines/reference/findIndex.types | 16 ++++++++++++++++ .../conformance/es6/arrayMethods/findIndex.ts | 5 +++++ 4 files changed, 42 insertions(+) create mode 100644 tests/baselines/reference/findIndex.js create mode 100644 tests/baselines/reference/findIndex.symbols create mode 100644 tests/baselines/reference/findIndex.types create mode 100644 tests/cases/conformance/es6/arrayMethods/findIndex.ts diff --git a/tests/baselines/reference/findIndex.js b/tests/baselines/reference/findIndex.js new file mode 100644 index 00000000000..434ee095bb0 --- /dev/null +++ b/tests/baselines/reference/findIndex.js @@ -0,0 +1,10 @@ +//// [findIndex.ts] + +[].findIndex(function(elem, i, arr) { + return true; +}); + +//// [findIndex.js] +[].findIndex(function (elem, i, arr) { + return true; +}); diff --git a/tests/baselines/reference/findIndex.symbols b/tests/baselines/reference/findIndex.symbols new file mode 100644 index 00000000000..bebbaf6ff85 --- /dev/null +++ b/tests/baselines/reference/findIndex.symbols @@ -0,0 +1,11 @@ +=== tests/cases/conformance/es6/arrayMethods/findIndex.ts === + +[].findIndex(function(elem, i, arr) { +>[].findIndex : Symbol(Array.findIndex, Decl(lib.es2015.core.d.ts, --, --)) +>findIndex : Symbol(Array.findIndex, Decl(lib.es2015.core.d.ts, --, --)) +>elem : Symbol(elem, Decl(findIndex.ts, 1, 22)) +>i : Symbol(i, Decl(findIndex.ts, 1, 27)) +>arr : Symbol(arr, Decl(findIndex.ts, 1, 30)) + + return true; +}); diff --git a/tests/baselines/reference/findIndex.types b/tests/baselines/reference/findIndex.types new file mode 100644 index 00000000000..8538e1c7be3 --- /dev/null +++ b/tests/baselines/reference/findIndex.types @@ -0,0 +1,16 @@ +=== tests/cases/conformance/es6/arrayMethods/findIndex.ts === + +[].findIndex(function(elem, i, arr) { +>[].findIndex(function(elem, i, arr) { return true;}) : number +>[].findIndex : (predicate: (value: any, index: number, obj: any[]) => boolean, thisArg?: any) => number +>[] : undefined[] +>findIndex : (predicate: (value: any, index: number, obj: any[]) => boolean, thisArg?: any) => number +>function(elem, i, arr) { return true;} : (elem: any, i: number, arr: any[]) => boolean +>elem : any +>i : number +>arr : any[] + + return true; +>true : boolean + +}); diff --git a/tests/cases/conformance/es6/arrayMethods/findIndex.ts b/tests/cases/conformance/es6/arrayMethods/findIndex.ts new file mode 100644 index 00000000000..c726c654acb --- /dev/null +++ b/tests/cases/conformance/es6/arrayMethods/findIndex.ts @@ -0,0 +1,5 @@ +//@target: ES6 + +[].findIndex(function(elem, i, arr) { + return true; +}); \ No newline at end of file From 2468d440d9a8f318774e73dc096edeb5d9807a31 Mon Sep 17 00:00:00 2001 From: Gabe Moothart Date: Wed, 14 Sep 2016 11:06:28 -0700 Subject: [PATCH 3/8] Add readonly typings for Set and Map Similar to ReadonlyArray, these typings remove the mutation methods from Set and Map so that they can only be initialized by the constructor. --- src/lib/es2015.collection.d.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/lib/es2015.collection.d.ts b/src/lib/es2015.collection.d.ts index bde1c6d5811..9b0a484ce36 100644 --- a/src/lib/es2015.collection.d.ts +++ b/src/lib/es2015.collection.d.ts @@ -15,6 +15,21 @@ interface MapConstructor { } declare var Map: MapConstructor; +interface ReadonlyMap { + forEach( + callbackfn: (value: V, index: K, map: ReadonlyMap) => void, + thisArg?: any): void; + get(key: K): V|undefined; + has(key: K): boolean; + readonly size: number; +} + +interface ReadonlyMapConstructor { + new(entries?: [K, V][]): ReadonlyMap; + readonly prototype: ReadonlyMap; +} +declare var ReadonlyMap: ReadonlyMapConstructor; + interface WeakMap { delete(key: K): boolean; get(key: K): V | undefined; @@ -45,6 +60,19 @@ interface SetConstructor { } declare var Set: SetConstructor; +interface ReadonlySet { + forEach(callbackfn: (value: T, index: T, set: ReadonlySet) => void, thisArg?: any): + void; + has(value: T): boolean; + readonly size: number; +} + +interface ReadonlySetConstructor { + new(values?: T[]): ReadonlySet; + readonly prototype: ReadonlySet; +} +declare var ReadonlySet: ReadonlySetConstructor; + interface WeakSet { add(value: T): this; delete(value: T): boolean; From 7c8a6cea9cfa01058c196101065e338360c8092c Mon Sep 17 00:00:00 2001 From: Rostislav Galimsky Date: Thu, 15 Sep 2016 08:06:41 +0300 Subject: [PATCH 4/8] revert tests --- tests/baselines/reference/findIndex.js | 10 ---------- tests/baselines/reference/findIndex.symbols | 11 ----------- tests/baselines/reference/findIndex.types | 16 ---------------- .../conformance/es6/arrayMethods/findIndex.ts | 5 ----- 4 files changed, 42 deletions(-) delete mode 100644 tests/baselines/reference/findIndex.js delete mode 100644 tests/baselines/reference/findIndex.symbols delete mode 100644 tests/baselines/reference/findIndex.types delete mode 100644 tests/cases/conformance/es6/arrayMethods/findIndex.ts diff --git a/tests/baselines/reference/findIndex.js b/tests/baselines/reference/findIndex.js deleted file mode 100644 index 434ee095bb0..00000000000 --- a/tests/baselines/reference/findIndex.js +++ /dev/null @@ -1,10 +0,0 @@ -//// [findIndex.ts] - -[].findIndex(function(elem, i, arr) { - return true; -}); - -//// [findIndex.js] -[].findIndex(function (elem, i, arr) { - return true; -}); diff --git a/tests/baselines/reference/findIndex.symbols b/tests/baselines/reference/findIndex.symbols deleted file mode 100644 index bebbaf6ff85..00000000000 --- a/tests/baselines/reference/findIndex.symbols +++ /dev/null @@ -1,11 +0,0 @@ -=== tests/cases/conformance/es6/arrayMethods/findIndex.ts === - -[].findIndex(function(elem, i, arr) { ->[].findIndex : Symbol(Array.findIndex, Decl(lib.es2015.core.d.ts, --, --)) ->findIndex : Symbol(Array.findIndex, Decl(lib.es2015.core.d.ts, --, --)) ->elem : Symbol(elem, Decl(findIndex.ts, 1, 22)) ->i : Symbol(i, Decl(findIndex.ts, 1, 27)) ->arr : Symbol(arr, Decl(findIndex.ts, 1, 30)) - - return true; -}); diff --git a/tests/baselines/reference/findIndex.types b/tests/baselines/reference/findIndex.types deleted file mode 100644 index 8538e1c7be3..00000000000 --- a/tests/baselines/reference/findIndex.types +++ /dev/null @@ -1,16 +0,0 @@ -=== tests/cases/conformance/es6/arrayMethods/findIndex.ts === - -[].findIndex(function(elem, i, arr) { ->[].findIndex(function(elem, i, arr) { return true;}) : number ->[].findIndex : (predicate: (value: any, index: number, obj: any[]) => boolean, thisArg?: any) => number ->[] : undefined[] ->findIndex : (predicate: (value: any, index: number, obj: any[]) => boolean, thisArg?: any) => number ->function(elem, i, arr) { return true;} : (elem: any, i: number, arr: any[]) => boolean ->elem : any ->i : number ->arr : any[] - - return true; ->true : boolean - -}); diff --git a/tests/cases/conformance/es6/arrayMethods/findIndex.ts b/tests/cases/conformance/es6/arrayMethods/findIndex.ts deleted file mode 100644 index c726c654acb..00000000000 --- a/tests/cases/conformance/es6/arrayMethods/findIndex.ts +++ /dev/null @@ -1,5 +0,0 @@ -//@target: ES6 - -[].findIndex(function(elem, i, arr) { - return true; -}); \ No newline at end of file From 62f7c8a23d1ccac64c903b713417aede55f03f7c Mon Sep 17 00:00:00 2001 From: Rostislav Galimsky Date: Thu, 15 Sep 2016 08:29:55 +0300 Subject: [PATCH 5/8] revert fix for generated files --- lib/lib.es2015.core.d.ts | 2 +- lib/lib.es6.d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/lib.es2015.core.d.ts b/lib/lib.es2015.core.d.ts index c92a44c2312..c7c7afb821b 100644 --- a/lib/lib.es2015.core.d.ts +++ b/lib/lib.es2015.core.d.ts @@ -37,7 +37,7 @@ interface Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): number; + findIndex(predicate: (value: T) => boolean, thisArg?: any): number; /** * Returns the this object after filling the section identified by start and end with value diff --git a/lib/lib.es6.d.ts b/lib/lib.es6.d.ts index a7faa4789a6..8e9de3f4ec9 100644 --- a/lib/lib.es6.d.ts +++ b/lib/lib.es6.d.ts @@ -4143,7 +4143,7 @@ interface Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): number; + findIndex(predicate: (value: T) => boolean, thisArg?: any): number; /** * Returns the this object after filling the section identified by start and end with value From df5e176e179aee42a2f67517aafbecf88b0d27b4 Mon Sep 17 00:00:00 2001 From: Rostislav Galimsky Date: Thu, 15 Sep 2016 08:39:45 +0300 Subject: [PATCH 6/8] update findIndex for es5 typed arrays --- src/lib/es5.d.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/lib/es5.d.ts b/src/lib/es5.d.ts index e4cbe323c68..4ddf6213ee7 100644 --- a/src/lib/es5.d.ts +++ b/src/lib/es5.d.ts @@ -1539,7 +1539,7 @@ interface Int8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. @@ -1812,7 +1812,7 @@ interface Uint8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. @@ -2086,7 +2086,7 @@ interface Uint8ClampedArray { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. @@ -2359,7 +2359,7 @@ interface Int16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. @@ -2633,7 +2633,7 @@ interface Uint16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. @@ -2906,7 +2906,7 @@ interface Int32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. @@ -3179,7 +3179,7 @@ interface Uint32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. @@ -3452,7 +3452,7 @@ interface Float32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. @@ -3726,7 +3726,7 @@ interface Float64Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. From e2ee3c5c152c1f1facba341f551c1550a7cdab71 Mon Sep 17 00:00:00 2001 From: Gabe Moothart Date: Thu, 15 Sep 2016 10:33:06 -0700 Subject: [PATCH 7/8] Removed constructor typings which can't be used Also corrected some parameter names. --- src/lib/es2015.collection.d.ts | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/lib/es2015.collection.d.ts b/src/lib/es2015.collection.d.ts index 9b0a484ce36..4cdb2d187a5 100644 --- a/src/lib/es2015.collection.d.ts +++ b/src/lib/es2015.collection.d.ts @@ -1,7 +1,7 @@ interface Map { clear(): void; delete(key: K): boolean; - forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; + forEach(callbackfn: (value: V, key: K, map: Map) => void, thisArg?: any): void; get(key: K): V | undefined; has(key: K): boolean; set(key: K, value?: V): this; @@ -17,19 +17,13 @@ declare var Map: MapConstructor; interface ReadonlyMap { forEach( - callbackfn: (value: V, index: K, map: ReadonlyMap) => void, + callbackfn: (value: V, key: K, map: ReadonlyMap) => void, thisArg?: any): void; get(key: K): V|undefined; has(key: K): boolean; readonly size: number; } -interface ReadonlyMapConstructor { - new(entries?: [K, V][]): ReadonlyMap; - readonly prototype: ReadonlyMap; -} -declare var ReadonlyMap: ReadonlyMapConstructor; - interface WeakMap { delete(key: K): boolean; get(key: K): V | undefined; @@ -48,7 +42,7 @@ interface Set { add(value: T): this; clear(): void; delete(value: T): boolean; - forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; + forEach(callbackfn: (value: T, value2: T, set: Set) => void, thisArg?: any): void; has(value: T): boolean; readonly size: number; } @@ -61,18 +55,12 @@ interface SetConstructor { declare var Set: SetConstructor; interface ReadonlySet { - forEach(callbackfn: (value: T, index: T, set: ReadonlySet) => void, thisArg?: any): + forEach(callbackfn: (value: T, value2: T, set: ReadonlySet) => void, thisArg?: any): void; has(value: T): boolean; readonly size: number; } -interface ReadonlySetConstructor { - new(values?: T[]): ReadonlySet; - readonly prototype: ReadonlySet; -} -declare var ReadonlySet: ReadonlySetConstructor; - interface WeakSet { add(value: T): this; delete(value: T): boolean; From a9d4b3016ab02ca7fedeb884f9fdc36c7b695d39 Mon Sep 17 00:00:00 2001 From: Gabe Moothart Date: Thu, 15 Sep 2016 10:47:19 -0700 Subject: [PATCH 8/8] indenting --- src/lib/es2015.collection.d.ts | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/lib/es2015.collection.d.ts b/src/lib/es2015.collection.d.ts index 4cdb2d187a5..6a2c43cd050 100644 --- a/src/lib/es2015.collection.d.ts +++ b/src/lib/es2015.collection.d.ts @@ -16,12 +16,10 @@ interface MapConstructor { declare var Map: MapConstructor; interface ReadonlyMap { - forEach( - callbackfn: (value: V, key: K, map: ReadonlyMap) => void, - thisArg?: any): void; - get(key: K): V|undefined; - has(key: K): boolean; - readonly size: number; + forEach(callbackfn: (value: V, key: K, map: ReadonlyMap) => void, thisArg?: any): void; + get(key: K): V|undefined; + has(key: K): boolean; + readonly size: number; } interface WeakMap { @@ -55,10 +53,9 @@ interface SetConstructor { declare var Set: SetConstructor; interface ReadonlySet { - forEach(callbackfn: (value: T, value2: T, set: ReadonlySet) => void, thisArg?: any): - void; - has(value: T): boolean; - readonly size: number; + forEach(callbackfn: (value: T, value2: T, set: ReadonlySet) => void, thisArg?: any): void; + has(value: T): boolean; + readonly size: number; } interface WeakSet {