TypeScript/tests/baselines/reference/overloadBindingAcrossDeclarationBoundaries.types
2015-04-15 16:44:20 -07:00

122 lines
1.8 KiB
Plaintext

=== tests/cases/compiler/overloadBindingAcrossDeclarationBoundaries.ts ===
interface Opt1 {
>Opt1 : Opt1
p?: any;
>p : any
}
interface Opt2 {
>Opt2 : Opt2
q?: any;
>q : any
}
interface Opt3 {
>Opt3 : Opt3
r?: any;
>r : any
}
interface Opt4 {
>Opt4 : Opt4
s?: any;
>s : any
}
interface A {
>A : A
a(o: Opt1): Opt1;
>a : { (o: Opt1): Opt1; (o: Opt2): Opt2; (o: Opt3): Opt3; (o: Opt4): Opt4; }
>o : Opt1
>Opt1 : Opt1
>Opt1 : Opt1
a(o: Opt2): Opt2;
>a : { (o: Opt1): Opt1; (o: Opt2): Opt2; (o: Opt3): Opt3; (o: Opt4): Opt4; }
>o : Opt2
>Opt2 : Opt2
>Opt2 : Opt2
(o: Opt1): Opt1;
>o : Opt1
>Opt1 : Opt1
>Opt1 : Opt1
(o: Opt2): Opt2;
>o : Opt2
>Opt2 : Opt2
>Opt2 : Opt2
new (o: Opt1): Opt1;
>o : Opt1
>Opt1 : Opt1
>Opt1 : Opt1
new (o: Opt2): Opt2;
>o : Opt2
>Opt2 : Opt2
>Opt2 : Opt2
}
interface A {
>A : A
a(o: Opt3): Opt3;
>a : { (o: Opt1): Opt1; (o: Opt2): Opt2; (o: Opt3): Opt3; (o: Opt4): Opt4; }
>o : Opt3
>Opt3 : Opt3
>Opt3 : Opt3
a(o: Opt4): Opt4;
>a : { (o: Opt1): Opt1; (o: Opt2): Opt2; (o: Opt3): Opt3; (o: Opt4): Opt4; }
>o : Opt4
>Opt4 : Opt4
>Opt4 : Opt4
(o: Opt3): Opt3;
>o : Opt3
>Opt3 : Opt3
>Opt3 : Opt3
(o: Opt4): Opt4;
>o : Opt4
>Opt4 : Opt4
>Opt4 : Opt4
new (o: Opt3): Opt3;
>o : Opt3
>Opt3 : Opt3
>Opt3 : Opt3
new (o: Opt4): Opt4;
>o : Opt4
>Opt4 : Opt4
>Opt4 : Opt4
}
var a: A;
>a : A
>A : A
// These should all be Opt3
var a1 = a.a({});
>a1 : Opt3
>a.a({}) : Opt3
>a.a : { (o: Opt1): Opt1; (o: Opt2): Opt2; (o: Opt3): Opt3; (o: Opt4): Opt4; }
>a : A
>a : { (o: Opt1): Opt1; (o: Opt2): Opt2; (o: Opt3): Opt3; (o: Opt4): Opt4; }
>{} : {}
var a1 = a({});
>a1 : Opt3
>a({}) : Opt3
>a : A
>{} : {}
var a1 = new a({});
>a1 : Opt3
>new a({}) : Opt3
>a : A
>{} : {}