From 949f8d23f6025825933785f7733846edd9814a93 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 19 Jul 2018 18:29:39 -0700 Subject: [PATCH] Accept new baselines --- tests/baselines/reference/genericRestTypes.js | 19 +++++++ .../reference/genericRestTypes.symbols | 55 +++++++++++++++++++ .../reference/genericRestTypes.types | 55 +++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 tests/baselines/reference/genericRestTypes.js create mode 100644 tests/baselines/reference/genericRestTypes.symbols create mode 100644 tests/baselines/reference/genericRestTypes.types diff --git a/tests/baselines/reference/genericRestTypes.js b/tests/baselines/reference/genericRestTypes.js new file mode 100644 index 00000000000..f932032af56 --- /dev/null +++ b/tests/baselines/reference/genericRestTypes.js @@ -0,0 +1,19 @@ +//// [genericRestTypes.ts] +// Repro from #25793 + +// Gets the parameters of a function type as a tuple +type Parameters any> = T extends (...args: infer U) => any ? U : never; +// Removes the first element from a tuple +type Tail = ((...args: T) => any) extends ((head: any, ...tail: infer U) => any) ? U : never; + +type MyFunctionType = (foo: number, bar: string) => boolean; + +type Explicit = (...args: Tail>) => ReturnType; // (bar: string) => boolean + +type Bind1 any> = (...args: Tail>) => ReturnType; +type Generic = Bind1; // (bar: string) => boolean + + +//// [genericRestTypes.js] +"use strict"; +// Repro from #25793 diff --git a/tests/baselines/reference/genericRestTypes.symbols b/tests/baselines/reference/genericRestTypes.symbols new file mode 100644 index 00000000000..77bc400b5db --- /dev/null +++ b/tests/baselines/reference/genericRestTypes.symbols @@ -0,0 +1,55 @@ +=== tests/cases/compiler/genericRestTypes.ts === +// Repro from #25793 + +// Gets the parameters of a function type as a tuple +type Parameters any> = T extends (...args: infer U) => any ? U : never; +>Parameters : Symbol(Parameters, Decl(genericRestTypes.ts, 0, 0)) +>T : Symbol(T, Decl(genericRestTypes.ts, 3, 16)) +>args : Symbol(args, Decl(genericRestTypes.ts, 3, 27)) +>T : Symbol(T, Decl(genericRestTypes.ts, 3, 16)) +>args : Symbol(args, Decl(genericRestTypes.ts, 3, 64)) +>U : Symbol(U, Decl(genericRestTypes.ts, 3, 78)) +>U : Symbol(U, Decl(genericRestTypes.ts, 3, 78)) + +// Removes the first element from a tuple +type Tail = ((...args: T) => any) extends ((head: any, ...tail: infer U) => any) ? U : never; +>Tail : Symbol(Tail, Decl(genericRestTypes.ts, 3, 101)) +>T : Symbol(T, Decl(genericRestTypes.ts, 5, 10)) +>args : Symbol(args, Decl(genericRestTypes.ts, 5, 31)) +>T : Symbol(T, Decl(genericRestTypes.ts, 5, 10)) +>head : Symbol(head, Decl(genericRestTypes.ts, 5, 61)) +>tail : Symbol(tail, Decl(genericRestTypes.ts, 5, 71)) +>U : Symbol(U, Decl(genericRestTypes.ts, 5, 86)) +>U : Symbol(U, Decl(genericRestTypes.ts, 5, 86)) + +type MyFunctionType = (foo: number, bar: string) => boolean; +>MyFunctionType : Symbol(MyFunctionType, Decl(genericRestTypes.ts, 5, 110)) +>foo : Symbol(foo, Decl(genericRestTypes.ts, 7, 23)) +>bar : Symbol(bar, Decl(genericRestTypes.ts, 7, 35)) + +type Explicit = (...args: Tail>) => ReturnType; // (bar: string) => boolean +>Explicit : Symbol(Explicit, Decl(genericRestTypes.ts, 7, 60)) +>args : Symbol(args, Decl(genericRestTypes.ts, 9, 17)) +>Tail : Symbol(Tail, Decl(genericRestTypes.ts, 3, 101)) +>Parameters : Symbol(Parameters, Decl(genericRestTypes.ts, 0, 0)) +>MyFunctionType : Symbol(MyFunctionType, Decl(genericRestTypes.ts, 5, 110)) +>ReturnType : Symbol(ReturnType, Decl(lib.es5.d.ts, --, --)) +>MyFunctionType : Symbol(MyFunctionType, Decl(genericRestTypes.ts, 5, 110)) + +type Bind1 any> = (...args: Tail>) => ReturnType; +>Bind1 : Symbol(Bind1, Decl(genericRestTypes.ts, 9, 90)) +>T : Symbol(T, Decl(genericRestTypes.ts, 11, 11)) +>head : Symbol(head, Decl(genericRestTypes.ts, 11, 22)) +>tail : Symbol(tail, Decl(genericRestTypes.ts, 11, 32)) +>args : Symbol(args, Decl(genericRestTypes.ts, 11, 60)) +>Tail : Symbol(Tail, Decl(genericRestTypes.ts, 3, 101)) +>Parameters : Symbol(Parameters, Decl(genericRestTypes.ts, 0, 0)) +>T : Symbol(T, Decl(genericRestTypes.ts, 11, 11)) +>ReturnType : Symbol(ReturnType, Decl(lib.es5.d.ts, --, --)) +>T : Symbol(T, Decl(genericRestTypes.ts, 11, 11)) + +type Generic = Bind1; // (bar: string) => boolean +>Generic : Symbol(Generic, Decl(genericRestTypes.ts, 11, 107)) +>Bind1 : Symbol(Bind1, Decl(genericRestTypes.ts, 9, 90)) +>MyFunctionType : Symbol(MyFunctionType, Decl(genericRestTypes.ts, 5, 110)) + diff --git a/tests/baselines/reference/genericRestTypes.types b/tests/baselines/reference/genericRestTypes.types new file mode 100644 index 00000000000..6fc523bd7c9 --- /dev/null +++ b/tests/baselines/reference/genericRestTypes.types @@ -0,0 +1,55 @@ +=== tests/cases/compiler/genericRestTypes.ts === +// Repro from #25793 + +// Gets the parameters of a function type as a tuple +type Parameters any> = T extends (...args: infer U) => any ? U : never; +>Parameters : Parameters +>T : T +>args : any[] +>T : T +>args : U +>U : U +>U : U + +// Removes the first element from a tuple +type Tail = ((...args: T) => any) extends ((head: any, ...tail: infer U) => any) ? U : never; +>Tail : Tail +>T : T +>args : T +>T : T +>head : any +>tail : U +>U : U +>U : U + +type MyFunctionType = (foo: number, bar: string) => boolean; +>MyFunctionType : MyFunctionType +>foo : number +>bar : string + +type Explicit = (...args: Tail>) => ReturnType; // (bar: string) => boolean +>Explicit : Explicit +>args : [string] +>Tail : Tail +>Parameters : Parameters +>MyFunctionType : MyFunctionType +>ReturnType : ReturnType +>MyFunctionType : MyFunctionType + +type Bind1 any> = (...args: Tail>) => ReturnType; +>Bind1 : Bind1 +>T : T +>head : any +>tail : any[] +>args : Tail> +>Tail : Tail +>Parameters : Parameters +>T : T +>ReturnType : ReturnType +>T : T + +type Generic = Bind1; // (bar: string) => boolean +>Generic : Bind1 +>Bind1 : Bind1 +>MyFunctionType : MyFunctionType +