Test:Incorrect number of type args during err reporting
This commit is contained in:
parent
3fef16008d
commit
156e7e2069
|
@ -0,0 +1,28 @@
|
|||
tests/cases/compiler/incorrectNumberOfTypeArgumentsDuringErrorReporting.ts(18,4): error TS2559: Type 'MyObjA' has no properties in common with type 'ObjA'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/incorrectNumberOfTypeArgumentsDuringErrorReporting.ts (1 errors) ====
|
||||
interface ObjA {
|
||||
y?:string,
|
||||
}
|
||||
|
||||
interface ObjB {[key:string]:any}
|
||||
|
||||
interface Opts<A, B> {a:A, b:B}
|
||||
|
||||
const fn = <
|
||||
A extends ObjA,
|
||||
B extends ObjB = ObjB
|
||||
>(opts:Opts<A, B>):string => 'Z'
|
||||
|
||||
interface MyObjA {
|
||||
x:string,
|
||||
}
|
||||
|
||||
fn<MyObjA>({
|
||||
~~~~~~
|
||||
!!! error TS2559: Type 'MyObjA' has no properties in common with type 'ObjA'.
|
||||
a: {x: 'X', y: 'Y'},
|
||||
b: {},
|
||||
})
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
//// [incorrectNumberOfTypeArgumentsDuringErrorReporting.ts]
|
||||
interface ObjA {
|
||||
y?:string,
|
||||
}
|
||||
|
||||
interface ObjB {[key:string]:any}
|
||||
|
||||
interface Opts<A, B> {a:A, b:B}
|
||||
|
||||
const fn = <
|
||||
A extends ObjA,
|
||||
B extends ObjB = ObjB
|
||||
>(opts:Opts<A, B>):string => 'Z'
|
||||
|
||||
interface MyObjA {
|
||||
x:string,
|
||||
}
|
||||
|
||||
fn<MyObjA>({
|
||||
a: {x: 'X', y: 'Y'},
|
||||
b: {},
|
||||
})
|
||||
|
||||
|
||||
//// [incorrectNumberOfTypeArgumentsDuringErrorReporting.js]
|
||||
var fn = function (opts) { return 'Z'; };
|
||||
fn({
|
||||
a: { x: 'X', y: 'Y' },
|
||||
b: {}
|
||||
});
|
|
@ -0,0 +1,60 @@
|
|||
=== tests/cases/compiler/incorrectNumberOfTypeArgumentsDuringErrorReporting.ts ===
|
||||
interface ObjA {
|
||||
>ObjA : Symbol(ObjA, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 0, 0))
|
||||
|
||||
y?:string,
|
||||
>y : Symbol(ObjA.y, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 0, 16))
|
||||
}
|
||||
|
||||
interface ObjB {[key:string]:any}
|
||||
>ObjB : Symbol(ObjB, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 2, 1))
|
||||
>key : Symbol(key, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 4, 17))
|
||||
|
||||
interface Opts<A, B> {a:A, b:B}
|
||||
>Opts : Symbol(Opts, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 4, 33))
|
||||
>A : Symbol(A, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 6, 15))
|
||||
>B : Symbol(B, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 6, 17))
|
||||
>a : Symbol(Opts.a, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 6, 22))
|
||||
>A : Symbol(A, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 6, 15))
|
||||
>b : Symbol(Opts.b, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 6, 26))
|
||||
>B : Symbol(B, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 6, 17))
|
||||
|
||||
const fn = <
|
||||
>fn : Symbol(fn, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 8, 5))
|
||||
|
||||
A extends ObjA,
|
||||
>A : Symbol(A, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 8, 12))
|
||||
>ObjA : Symbol(ObjA, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 0, 0))
|
||||
|
||||
B extends ObjB = ObjB
|
||||
>B : Symbol(B, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 9, 17))
|
||||
>ObjB : Symbol(ObjB, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 2, 1))
|
||||
>ObjB : Symbol(ObjB, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 2, 1))
|
||||
|
||||
>(opts:Opts<A, B>):string => 'Z'
|
||||
>opts : Symbol(opts, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 11, 2))
|
||||
>Opts : Symbol(Opts, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 4, 33))
|
||||
>A : Symbol(A, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 8, 12))
|
||||
>B : Symbol(B, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 9, 17))
|
||||
|
||||
interface MyObjA {
|
||||
>MyObjA : Symbol(MyObjA, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 11, 32))
|
||||
|
||||
x:string,
|
||||
>x : Symbol(MyObjA.x, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 13, 18))
|
||||
}
|
||||
|
||||
fn<MyObjA>({
|
||||
>fn : Symbol(fn, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 8, 5))
|
||||
>MyObjA : Symbol(MyObjA, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 11, 32))
|
||||
|
||||
a: {x: 'X', y: 'Y'},
|
||||
>a : Symbol(a, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 17, 12))
|
||||
>x : Symbol(x, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 18, 6))
|
||||
>y : Symbol(y, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 18, 13))
|
||||
|
||||
b: {},
|
||||
>b : Symbol(b, Decl(incorrectNumberOfTypeArgumentsDuringErrorReporting.ts, 18, 22))
|
||||
|
||||
})
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
=== tests/cases/compiler/incorrectNumberOfTypeArgumentsDuringErrorReporting.ts ===
|
||||
interface ObjA {
|
||||
>ObjA : ObjA
|
||||
|
||||
y?:string,
|
||||
>y : string
|
||||
}
|
||||
|
||||
interface ObjB {[key:string]:any}
|
||||
>ObjB : ObjB
|
||||
>key : string
|
||||
|
||||
interface Opts<A, B> {a:A, b:B}
|
||||
>Opts : Opts<A, B>
|
||||
>A : A
|
||||
>B : B
|
||||
>a : A
|
||||
>A : A
|
||||
>b : B
|
||||
>B : B
|
||||
|
||||
const fn = <
|
||||
>fn : <A extends ObjA, B extends ObjB = ObjB>(opts: Opts<A, B>) => string
|
||||
>< A extends ObjA, B extends ObjB = ObjB>(opts:Opts<A, B>):string => 'Z' : <A extends ObjA, B extends ObjB = ObjB>(opts: Opts<A, B>) => string
|
||||
|
||||
A extends ObjA,
|
||||
>A : A
|
||||
>ObjA : ObjA
|
||||
|
||||
B extends ObjB = ObjB
|
||||
>B : B
|
||||
>ObjB : ObjB
|
||||
>ObjB : ObjB
|
||||
|
||||
>(opts:Opts<A, B>):string => 'Z'
|
||||
>opts : Opts<A, B>
|
||||
>Opts : Opts<A, B>
|
||||
>A : A
|
||||
>B : B
|
||||
>'Z' : "Z"
|
||||
|
||||
interface MyObjA {
|
||||
>MyObjA : MyObjA
|
||||
|
||||
x:string,
|
||||
>x : string
|
||||
}
|
||||
|
||||
fn<MyObjA>({
|
||||
>fn<MyObjA>({ a: {x: 'X', y: 'Y'}, b: {},}) : any
|
||||
>fn : <A extends ObjA, B extends ObjB = ObjB>(opts: Opts<A, B>) => string
|
||||
>MyObjA : MyObjA
|
||||
>{ a: {x: 'X', y: 'Y'}, b: {},} : { a: { x: string; y: string; }; b: {}; }
|
||||
|
||||
a: {x: 'X', y: 'Y'},
|
||||
>a : { x: string; y: string; }
|
||||
>{x: 'X', y: 'Y'} : { x: string; y: string; }
|
||||
>x : string
|
||||
>'X' : "X"
|
||||
>y : string
|
||||
>'Y' : "Y"
|
||||
|
||||
b: {},
|
||||
>b : {}
|
||||
>{} : {}
|
||||
|
||||
})
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
interface ObjA {
|
||||
y?:string,
|
||||
}
|
||||
|
||||
interface ObjB {[key:string]:any}
|
||||
|
||||
interface Opts<A, B> {a:A, b:B}
|
||||
|
||||
const fn = <
|
||||
A extends ObjA,
|
||||
B extends ObjB = ObjB
|
||||
>(opts:Opts<A, B>):string => 'Z'
|
||||
|
||||
interface MyObjA {
|
||||
x:string,
|
||||
}
|
||||
|
||||
fn<MyObjA>({
|
||||
a: {x: 'X', y: 'Y'},
|
||||
b: {},
|
||||
})
|
Loading…
Reference in a new issue