From a59f77ffb41efa059ece19665147e562841b987f Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Wed, 9 Aug 2017 15:45:28 -0700 Subject: [PATCH] Test:type predicate uses correct index to report errors --- .../reference/thisTypeInTypePredicate.js | 7 ++++++ .../reference/thisTypeInTypePredicate.symbols | 18 +++++++++++++++ .../reference/thisTypeInTypePredicate.types | 23 +++++++++++++++++++ .../types/thisType/thisTypeInTypePredicate.ts | 2 ++ 4 files changed, 50 insertions(+) create mode 100644 tests/baselines/reference/thisTypeInTypePredicate.js create mode 100644 tests/baselines/reference/thisTypeInTypePredicate.symbols create mode 100644 tests/baselines/reference/thisTypeInTypePredicate.types create mode 100644 tests/cases/conformance/types/thisType/thisTypeInTypePredicate.ts diff --git a/tests/baselines/reference/thisTypeInTypePredicate.js b/tests/baselines/reference/thisTypeInTypePredicate.js new file mode 100644 index 00000000000..1b9a48daeea --- /dev/null +++ b/tests/baselines/reference/thisTypeInTypePredicate.js @@ -0,0 +1,7 @@ +//// [thisTypeInTypePredicate.ts] +declare function filter(f: (this: void, x: any) => x is S): S[]; +const numbers = filter((x): x is number => 'number' == typeof x) + + +//// [thisTypeInTypePredicate.js] +var numbers = filter(function (x) { return 'number' == typeof x; }); diff --git a/tests/baselines/reference/thisTypeInTypePredicate.symbols b/tests/baselines/reference/thisTypeInTypePredicate.symbols new file mode 100644 index 00000000000..ff18f450a0e --- /dev/null +++ b/tests/baselines/reference/thisTypeInTypePredicate.symbols @@ -0,0 +1,18 @@ +=== tests/cases/conformance/types/thisType/thisTypeInTypePredicate.ts === +declare function filter(f: (this: void, x: any) => x is S): S[]; +>filter : Symbol(filter, Decl(thisTypeInTypePredicate.ts, 0, 0)) +>S : Symbol(S, Decl(thisTypeInTypePredicate.ts, 0, 24)) +>f : Symbol(f, Decl(thisTypeInTypePredicate.ts, 0, 27)) +>this : Symbol(this, Decl(thisTypeInTypePredicate.ts, 0, 31)) +>x : Symbol(x, Decl(thisTypeInTypePredicate.ts, 0, 42)) +>x : Symbol(x, Decl(thisTypeInTypePredicate.ts, 0, 42)) +>S : Symbol(S, Decl(thisTypeInTypePredicate.ts, 0, 24)) +>S : Symbol(S, Decl(thisTypeInTypePredicate.ts, 0, 24)) + +const numbers = filter((x): x is number => 'number' == typeof x) +>numbers : Symbol(numbers, Decl(thisTypeInTypePredicate.ts, 1, 5)) +>filter : Symbol(filter, Decl(thisTypeInTypePredicate.ts, 0, 0)) +>x : Symbol(x, Decl(thisTypeInTypePredicate.ts, 1, 32)) +>x : Symbol(x, Decl(thisTypeInTypePredicate.ts, 1, 32)) +>x : Symbol(x, Decl(thisTypeInTypePredicate.ts, 1, 32)) + diff --git a/tests/baselines/reference/thisTypeInTypePredicate.types b/tests/baselines/reference/thisTypeInTypePredicate.types new file mode 100644 index 00000000000..cc92ce811b8 --- /dev/null +++ b/tests/baselines/reference/thisTypeInTypePredicate.types @@ -0,0 +1,23 @@ +=== tests/cases/conformance/types/thisType/thisTypeInTypePredicate.ts === +declare function filter(f: (this: void, x: any) => x is S): S[]; +>filter : (f: (this: void, x: any) => x is S) => S[] +>S : S +>f : (this: void, x: any) => x is S +>this : void +>x : any +>x : any +>S : S +>S : S + +const numbers = filter((x): x is number => 'number' == typeof x) +>numbers : number[] +>filter((x): x is number => 'number' == typeof x) : number[] +>filter : (f: (this: void, x: any) => x is S) => S[] +>(x): x is number => 'number' == typeof x : (this: void, x: any) => x is number +>x : any +>x : any +>'number' == typeof x : boolean +>'number' : "number" +>typeof x : "string" | "number" | "boolean" | "symbol" | "undefined" | "object" | "function" +>x : any + diff --git a/tests/cases/conformance/types/thisType/thisTypeInTypePredicate.ts b/tests/cases/conformance/types/thisType/thisTypeInTypePredicate.ts new file mode 100644 index 00000000000..ed0ebc75a22 --- /dev/null +++ b/tests/cases/conformance/types/thisType/thisTypeInTypePredicate.ts @@ -0,0 +1,2 @@ +declare function filter(f: (this: void, x: any) => x is S): S[]; +const numbers = filter((x): x is number => 'number' == typeof x)