Accepted baselines.

This commit is contained in:
Daniel Rosenwasser 2018-04-13 23:01:34 -07:00
parent b409888cbc
commit 23567ee05d
4 changed files with 465 additions and 0 deletions

View File

@ -0,0 +1,82 @@
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(9,18): error TS2365: Operator '>' cannot be applied to types 'boolean' and 'string'.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(9,20): error TS2693: 'Stuff' only refers to a type, but is being used as a value here.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(22,20): error TS2693: 'Stuff' only refers to a type, but is being used as a value here.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(22,50): error TS1005: ',' expected.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(39,18): error TS2365: Operator '>' cannot be applied to types 'boolean' and 'string'.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(39,30): error TS2693: 'Stuff' only refers to a type, but is being used as a value here.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(39,53): error TS1128: Declaration or statement expected.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(40,3): error TS2339: Property 'returnedProp' does not exist on type 'boolean'.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(41,3): error TS2339: Property 'returnedProp' does not exist on type 'boolean'.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(42,3): error TS2339: Property 'returnedProp' does not exist on type 'boolean'.
==== tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts (10 errors) ====
declare function f<T>(strs: TemplateStringsArray, ...callbacks: Array<(x: T) => any>): void;
interface Stuff {
x: number;
y: string;
z: boolean;
}
export const a = f<Stuff> `
~~~~~~~~~~
~~~~~
!!! error TS2693: 'Stuff' only refers to a type, but is being used as a value here.
hello
~~~~~~~~~
${stuff => stuff.x}
~~~~~~~~~~~~~~~~~~~~~~~
brave
~~~~~~~~~
${stuff => stuff.y}
~~~~~~~~~~~~~~~~~~~~~~~
world
~~~~~~~~~
${stuff => stuff.z}
~~~~~~~~~~~~~~~~~~~~~~~
`;
~
!!! error TS2365: Operator '>' cannot be applied to types 'boolean' and 'string'.
declare function g<Input, T, U, V>(
strs: TemplateStringsArray,
t: (i: Input) => T, u: (i: Input) => U, v: (i: Input) => V): T | U | V;
export const b = g<Stuff, number, string, boolean> `
~~~~~
!!! error TS2693: 'Stuff' only refers to a type, but is being used as a value here.
~
!!! error TS1005: ',' expected.
hello
${stuff => stuff.x}
brave
${stuff => stuff.y}
world
${stuff => stuff.z}
`;
declare let obj: {
prop: <T>(strs: TemplateStringsArray, x: (input: T) => T) => {
returnedObjProp: {
lastOne: T
}
}
}
export const c = obj["prop"]<Stuff> `${(input) => { ...input }}`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2365: Operator '>' cannot be applied to types 'boolean' and 'string'.
~~~~~
!!! error TS2693: 'Stuff' only refers to a type, but is being used as a value here.
~~~
!!! error TS1128: Declaration or statement expected.
c.returnedProp.x;
~~~~~~~~~~~~
!!! error TS2339: Property 'returnedProp' does not exist on type 'boolean'.
c.returnedProp.y;
~~~~~~~~~~~~
!!! error TS2339: Property 'returnedProp' does not exist on type 'boolean'.
c.returnedProp.z;
~~~~~~~~~~~~
!!! error TS2339: Property 'returnedProp' does not exist on type 'boolean'.

View File

@ -0,0 +1,66 @@
//// [taggedTemplatesWithTypeArguments1.ts]
declare function f<T>(strs: TemplateStringsArray, ...callbacks: Array<(x: T) => any>): void;
interface Stuff {
x: number;
y: string;
z: boolean;
}
export const a = f<Stuff> `
hello
${stuff => stuff.x}
brave
${stuff => stuff.y}
world
${stuff => stuff.z}
`;
declare function g<Input, T, U, V>(
strs: TemplateStringsArray,
t: (i: Input) => T, u: (i: Input) => U, v: (i: Input) => V): T | U | V;
export const b = g<Stuff, number, string, boolean> `
hello
${stuff => stuff.x}
brave
${stuff => stuff.y}
world
${stuff => stuff.z}
`;
declare let obj: {
prop: <T>(strs: TemplateStringsArray, x: (input: T) => T) => {
returnedObjProp: {
lastOne: T
}
}
}
export const c = obj["prop"]<Stuff> `${(input) => { ...input }}`
c.returnedProp.x;
c.returnedProp.y;
c.returnedProp.z;
//// [taggedTemplatesWithTypeArguments1.js]
export const a = f < Stuff > `
hello
${stuff => stuff.x}
brave
${stuff => stuff.y}
world
${stuff => stuff.z}
`;
export const b = g < Stuff, number, string, boolean;
> `
hello
${stuff => stuff.x}
brave
${stuff => stuff.y}
world
${stuff => stuff.z}
`;
export const c = obj["prop"] < Stuff > `${(input) => { input; }}`;
c.returnedProp.x;
c.returnedProp.y;
c.returnedProp.z;

View File

@ -0,0 +1,136 @@
=== tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts ===
declare function f<T>(strs: TemplateStringsArray, ...callbacks: Array<(x: T) => any>): void;
>f : Symbol(f, Decl(taggedTemplatesWithTypeArguments1.ts, 0, 0))
>T : Symbol(T, Decl(taggedTemplatesWithTypeArguments1.ts, 0, 19))
>strs : Symbol(strs, Decl(taggedTemplatesWithTypeArguments1.ts, 0, 22))
>TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.es5.d.ts, --, --))
>callbacks : Symbol(callbacks, Decl(taggedTemplatesWithTypeArguments1.ts, 0, 49))
>Array : Symbol(Array, Decl(lib.es2016.array.include.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --) ... and 1 more)
>x : Symbol(x, Decl(taggedTemplatesWithTypeArguments1.ts, 0, 71))
>T : Symbol(T, Decl(taggedTemplatesWithTypeArguments1.ts, 0, 19))
interface Stuff {
>Stuff : Symbol(Stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 0, 92))
x: number;
>x : Symbol(Stuff.x, Decl(taggedTemplatesWithTypeArguments1.ts, 2, 17))
y: string;
>y : Symbol(Stuff.y, Decl(taggedTemplatesWithTypeArguments1.ts, 3, 14))
z: boolean;
>z : Symbol(Stuff.z, Decl(taggedTemplatesWithTypeArguments1.ts, 4, 14))
}
export const a = f<Stuff> `
>a : Symbol(a, Decl(taggedTemplatesWithTypeArguments1.ts, 8, 12))
>f : Symbol(f, Decl(taggedTemplatesWithTypeArguments1.ts, 0, 0))
hello
${stuff => stuff.x}
>stuff : Symbol(stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 10, 6))
>stuff : Symbol(stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 10, 6))
brave
${stuff => stuff.y}
>stuff : Symbol(stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 12, 6))
>stuff : Symbol(stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 12, 6))
world
${stuff => stuff.z}
>stuff : Symbol(stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 14, 6))
>stuff : Symbol(stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 14, 6))
`;
declare function g<Input, T, U, V>(
>g : Symbol(g, Decl(taggedTemplatesWithTypeArguments1.ts, 15, 2))
>Input : Symbol(Input, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 19))
>T : Symbol(T, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 25))
>U : Symbol(U, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 28))
>V : Symbol(V, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 31))
strs: TemplateStringsArray,
>strs : Symbol(strs, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 35))
>TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.es5.d.ts, --, --))
t: (i: Input) => T, u: (i: Input) => U, v: (i: Input) => V): T | U | V;
>t : Symbol(t, Decl(taggedTemplatesWithTypeArguments1.ts, 18, 31))
>i : Symbol(i, Decl(taggedTemplatesWithTypeArguments1.ts, 19, 8))
>Input : Symbol(Input, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 19))
>T : Symbol(T, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 25))
>u : Symbol(u, Decl(taggedTemplatesWithTypeArguments1.ts, 19, 23))
>i : Symbol(i, Decl(taggedTemplatesWithTypeArguments1.ts, 19, 28))
>Input : Symbol(Input, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 19))
>U : Symbol(U, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 28))
>v : Symbol(v, Decl(taggedTemplatesWithTypeArguments1.ts, 19, 43))
>i : Symbol(i, Decl(taggedTemplatesWithTypeArguments1.ts, 19, 48))
>Input : Symbol(Input, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 19))
>V : Symbol(V, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 31))
>T : Symbol(T, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 25))
>U : Symbol(U, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 28))
>V : Symbol(V, Decl(taggedTemplatesWithTypeArguments1.ts, 17, 31))
export const b = g<Stuff, number, string, boolean> `
>b : Symbol(b, Decl(taggedTemplatesWithTypeArguments1.ts, 21, 12))
>g : Symbol(g, Decl(taggedTemplatesWithTypeArguments1.ts, 15, 2))
>number : Symbol(number, Decl(taggedTemplatesWithTypeArguments1.ts, 21, 25))
>string : Symbol(string, Decl(taggedTemplatesWithTypeArguments1.ts, 21, 33))
>boolean : Symbol(boolean, Decl(taggedTemplatesWithTypeArguments1.ts, 21, 41))
hello
${stuff => stuff.x}
>stuff : Symbol(stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 23, 6))
>stuff : Symbol(stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 23, 6))
brave
${stuff => stuff.y}
>stuff : Symbol(stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 25, 6))
>stuff : Symbol(stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 25, 6))
world
${stuff => stuff.z}
>stuff : Symbol(stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 27, 6))
>stuff : Symbol(stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 27, 6))
`;
declare let obj: {
>obj : Symbol(obj, Decl(taggedTemplatesWithTypeArguments1.ts, 30, 11))
prop: <T>(strs: TemplateStringsArray, x: (input: T) => T) => {
>prop : Symbol(prop, Decl(taggedTemplatesWithTypeArguments1.ts, 30, 18))
>T : Symbol(T, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 11))
>strs : Symbol(strs, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 14))
>TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.es5.d.ts, --, --))
>x : Symbol(x, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 41))
>input : Symbol(input, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 46))
>T : Symbol(T, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 11))
>T : Symbol(T, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 11))
returnedObjProp: {
>returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66))
lastOne: T
>lastOne : Symbol(lastOne, Decl(taggedTemplatesWithTypeArguments1.ts, 32, 26))
>T : Symbol(T, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 11))
}
}
}
export const c = obj["prop"]<Stuff> `${(input) => { ...input }}`
>c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 38, 12))
>obj : Symbol(obj, Decl(taggedTemplatesWithTypeArguments1.ts, 30, 11))
>"prop" : Symbol(prop, Decl(taggedTemplatesWithTypeArguments1.ts, 30, 18))
>input : Symbol(input, Decl(taggedTemplatesWithTypeArguments1.ts, 38, 40))
>input : Symbol(input, Decl(taggedTemplatesWithTypeArguments1.ts, 38, 40))
c.returnedProp.x;
>c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 38, 12))
c.returnedProp.y;
>c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 38, 12))
c.returnedProp.z;
>c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 38, 12))

View File

@ -0,0 +1,181 @@
=== tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts ===
declare function f<T>(strs: TemplateStringsArray, ...callbacks: Array<(x: T) => any>): void;
>f : <T>(strs: TemplateStringsArray, ...callbacks: ((x: T) => any)[]) => void
>T : T
>strs : TemplateStringsArray
>TemplateStringsArray : TemplateStringsArray
>callbacks : ((x: T) => any)[]
>Array : T[]
>x : T
>T : T
interface Stuff {
>Stuff : Stuff
x: number;
>x : number
y: string;
>y : string
z: boolean;
>z : boolean
}
export const a = f<Stuff> `
>a : boolean
>f<Stuff> ` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : boolean
>f<Stuff : boolean
>f : <T>(strs: TemplateStringsArray, ...callbacks: ((x: T) => any)[]) => void
>Stuff : any
>` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : string
hello
${stuff => stuff.x}
>stuff => stuff.x : (stuff: any) => any
>stuff : any
>stuff.x : any
>stuff : any
>x : any
brave
${stuff => stuff.y}
>stuff => stuff.y : (stuff: any) => any
>stuff : any
>stuff.y : any
>stuff : any
>y : any
world
${stuff => stuff.z}
>stuff => stuff.z : (stuff: any) => any
>stuff : any
>stuff.z : any
>stuff : any
>z : any
`;
declare function g<Input, T, U, V>(
>g : <Input, T, U, V>(strs: TemplateStringsArray, t: (i: Input) => T, u: (i: Input) => U, v: (i: Input) => V) => T | U | V
>Input : Input
>T : T
>U : U
>V : V
strs: TemplateStringsArray,
>strs : TemplateStringsArray
>TemplateStringsArray : TemplateStringsArray
t: (i: Input) => T, u: (i: Input) => U, v: (i: Input) => V): T | U | V;
>t : (i: Input) => T
>i : Input
>Input : Input
>T : T
>u : (i: Input) => U
>i : Input
>Input : Input
>U : U
>v : (i: Input) => V
>i : Input
>Input : Input
>V : V
>T : T
>U : U
>V : V
export const b = g<Stuff, number, string, boolean> `
>b : boolean
>g<Stuff : boolean
>g : <Input, T, U, V>(strs: TemplateStringsArray, t: (i: Input) => T, u: (i: Input) => U, v: (i: Input) => V) => T | U | V
>Stuff : any
>number : any
>string : any
>boolean : any
>> ` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : boolean
> : any
>` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : string
hello
${stuff => stuff.x}
>stuff => stuff.x : (stuff: any) => any
>stuff : any
>stuff.x : any
>stuff : any
>x : any
brave
${stuff => stuff.y}
>stuff => stuff.y : (stuff: any) => any
>stuff : any
>stuff.y : any
>stuff : any
>y : any
world
${stuff => stuff.z}
>stuff => stuff.z : (stuff: any) => any
>stuff : any
>stuff.z : any
>stuff : any
>z : any
`;
declare let obj: {
>obj : { prop: <T>(strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: { lastOne: T; }; }; }
prop: <T>(strs: TemplateStringsArray, x: (input: T) => T) => {
>prop : <T>(strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: { lastOne: T; }; }
>T : T
>strs : TemplateStringsArray
>TemplateStringsArray : TemplateStringsArray
>x : (input: T) => T
>input : T
>T : T
>T : T
returnedObjProp: {
>returnedObjProp : { lastOne: T; }
lastOne: T
>lastOne : T
>T : T
}
}
}
export const c = obj["prop"]<Stuff> `${(input) => { ...input }}`
>c : boolean
>obj["prop"]<Stuff> `${(input) => { ...input }}` : boolean
>obj["prop"]<Stuff : boolean
>obj["prop"] : <T>(strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: { lastOne: T; }; }
>obj : { prop: <T>(strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: { lastOne: T; }; }; }
>"prop" : "prop"
>Stuff : any
>`${(input) => { ...input }}` : string
>(input) => { ...input } : (input: any) => void
>input : any
>input : any
c.returnedProp.x;
>c.returnedProp.x : any
>c.returnedProp : any
>c : boolean
>returnedProp : any
>x : any
c.returnedProp.y;
>c.returnedProp.y : any
>c.returnedProp : any
>c : boolean
>returnedProp : any
>y : any
c.returnedProp.z;
>c.returnedProp.z : any
>c.returnedProp : any
>c : boolean
>returnedProp : any
>z : any