TypeScript/tests/baselines/reference/specializedSignatureIsSubtypeOfNonSpecializedSignature.types

244 lines
4.4 KiB
Plaintext
Raw Normal View History

2014-08-15 23:33:16 +02:00
=== tests/cases/conformance/types/objectTypeLiteral/callSignatures/specializedSignatureIsSubtypeOfNonSpecializedSignature.ts ===
// Specialized signatures must be a subtype of a non-specialized signature
// All the below should not be errors
function foo(x: 'a');
>foo : { (x: 'a'): any; (x: string): any; }
>x : 'a'
2014-08-15 23:33:16 +02:00
function foo(x: string);
>foo : { (x: 'a'): any; (x: string): any; }
>x : string
2014-08-15 23:33:16 +02:00
function foo(x: any) { }
>foo : { (x: 'a'): any; (x: string): any; }
>x : any
2014-08-15 23:33:16 +02:00
class C {
>C : C
2014-08-15 23:33:16 +02:00
foo(x: 'a');
>foo : { (x: 'a'): any; (x: string): any; }
>x : 'a'
2014-08-15 23:33:16 +02:00
foo(x: string);
>foo : { (x: 'a'): any; (x: string): any; }
>x : string
2014-08-15 23:33:16 +02:00
foo(x: any) { }
>foo : { (x: 'a'): any; (x: string): any; }
>x : any
2014-08-15 23:33:16 +02:00
}
class C2<T> {
>C2 : C2<T>
>T : T
2014-08-15 23:33:16 +02:00
foo(x: 'a');
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : 'a'
2014-08-15 23:33:16 +02:00
foo(x: string);
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : string
2014-08-15 23:33:16 +02:00
foo(x: T);
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : T
>T : T
2014-08-15 23:33:16 +02:00
foo(x: any) { }
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : any
2014-08-15 23:33:16 +02:00
}
class C3<T extends String> {
>C3 : C3<T>
>T : T
>String : String
2014-08-15 23:33:16 +02:00
foo(x: 'a');
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : 'a'
2014-08-15 23:33:16 +02:00
foo(x: string);
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : string
2014-08-15 23:33:16 +02:00
foo(x: T);
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : T
>T : T
2014-08-15 23:33:16 +02:00
foo(x: any) { }
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : any
2014-08-15 23:33:16 +02:00
}
interface I {
>I : I
2014-08-15 23:33:16 +02:00
(x: 'a');
>x : 'a'
2014-08-15 23:33:16 +02:00
(x: number);
>x : number
2014-08-15 23:33:16 +02:00
(x: string);
>x : string
2014-08-15 23:33:16 +02:00
foo(x: 'a');
>foo : { (x: 'a'): any; (x: string): any; (x: number): any; }
>x : 'a'
2014-08-15 23:33:16 +02:00
foo(x: string);
>foo : { (x: 'a'): any; (x: string): any; (x: number): any; }
>x : string
2014-08-15 23:33:16 +02:00
foo(x: number);
>foo : { (x: 'a'): any; (x: string): any; (x: number): any; }
>x : number
2014-08-15 23:33:16 +02:00
}
interface I2<T> {
>I2 : I2<T>
>T : T
2014-08-15 23:33:16 +02:00
(x: 'a');
>x : 'a'
2014-08-15 23:33:16 +02:00
(x: T);
>x : T
>T : T
2014-08-15 23:33:16 +02:00
(x: string);
>x : string
2014-08-15 23:33:16 +02:00
foo(x: 'a');
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : 'a'
2014-08-15 23:33:16 +02:00
foo(x: string);
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : string
2014-08-15 23:33:16 +02:00
foo(x: T);
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : T
>T : T
2014-08-15 23:33:16 +02:00
}
interface I3<T extends String> {
>I3 : I3<T>
>T : T
>String : String
2014-08-15 23:33:16 +02:00
(x: 'a');
>x : 'a'
2014-08-15 23:33:16 +02:00
(x: string);
>x : string
2014-08-15 23:33:16 +02:00
(x: T);
>x : T
>T : T
2014-08-15 23:33:16 +02:00
foo(x: 'a');
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : 'a'
2014-08-15 23:33:16 +02:00
foo(x: string);
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : string
2014-08-15 23:33:16 +02:00
foo(x: T);
>foo : { (x: 'a'): any; (x: string): any; (x: T): any; }
>x : T
>T : T
2014-08-15 23:33:16 +02:00
}
var a: {
>a : { (x: string): any; (x: 'a'): any; (x: number): any; foo(x: string): any; foo(x: 'a'): any; foo(x: number): any; }
2014-08-15 23:33:16 +02:00
(x: string);
>x : string
2014-08-15 23:33:16 +02:00
(x: 'a');
>x : 'a'
2014-08-15 23:33:16 +02:00
(x: number);
>x : number
2014-08-15 23:33:16 +02:00
foo(x: string);
>foo : { (x: string): any; (x: 'a'): any; (x: number): any; }
>x : string
2014-08-15 23:33:16 +02:00
foo(x: 'a');
>foo : { (x: string): any; (x: 'a'): any; (x: number): any; }
>x : 'a'
2014-08-15 23:33:16 +02:00
foo(x: number);
>foo : { (x: string): any; (x: 'a'): any; (x: number): any; }
>x : number
2014-08-15 23:33:16 +02:00
}
var a2: {
>a2 : { (x: 'a'): any; (x: string): any; <T>(x: T): any; foo(x: string): any; foo(x: 'a'): any; foo<T>(x: T): any; }
2014-08-15 23:33:16 +02:00
(x: 'a');
>x : 'a'
2014-08-15 23:33:16 +02:00
(x: string);
>x : string
2014-08-15 23:33:16 +02:00
<T>(x: T);
>T : T
>x : T
>T : T
2014-08-15 23:33:16 +02:00
foo(x: string);
>foo : { (x: string): any; (x: 'a'): any; <T>(x: T): any; }
>x : string
2014-08-15 23:33:16 +02:00
foo(x: 'a');
>foo : { (x: string): any; (x: 'a'): any; <T>(x: T): any; }
>x : 'a'
2014-08-15 23:33:16 +02:00
foo<T>(x: T);
>foo : { (x: string): any; (x: 'a'): any; <T>(x: T): any; }
>T : T
>x : T
>T : T
2014-08-15 23:33:16 +02:00
}
var a3: {
>a3 : { (x: 'a'): any; <T>(x: T): any; (x: string): any; foo(x: string): any; foo(x: 'a'): any; foo<T extends String>(x: T): any; }
2014-08-15 23:33:16 +02:00
(x: 'a');
>x : 'a'
2014-08-15 23:33:16 +02:00
<T>(x: T);
>T : T
>x : T
>T : T
2014-08-15 23:33:16 +02:00
(x: string);
>x : string
2014-08-15 23:33:16 +02:00
foo(x: string);
>foo : { (x: string): any; (x: 'a'): any; <T extends String>(x: T): any; }
>x : string
2014-08-15 23:33:16 +02:00
foo(x: 'a');
>foo : { (x: string): any; (x: 'a'): any; <T extends String>(x: T): any; }
>x : 'a'
2014-08-15 23:33:16 +02:00
foo<T extends String>(x: T);
>foo : { (x: string): any; (x: 'a'): any; <T extends String>(x: T): any; }
>T : T
>String : String
>x : T
>T : T
2014-08-15 23:33:16 +02:00
}