mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Accepted baselines.
This commit is contained in:
@@ -1,10 +0,0 @@
|
||||
tests/cases/compiler/functionOverloads22.ts(2,10): error TS2394: Overload signature is not compatible with function implementation.
|
||||
|
||||
|
||||
==== tests/cases/compiler/functionOverloads22.ts (1 errors) ====
|
||||
function foo(bar:number):{a:number;}[];
|
||||
function foo(bar:string):{a:number; b:string;}[];
|
||||
~~~
|
||||
!!! error TS2394: Overload signature is not compatible with function implementation.
|
||||
function foo(bar:any):{a:any;b?:any;}[] { return [{a:""}] }
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
=== tests/cases/compiler/functionOverloads22.ts ===
|
||||
function foo(bar:number):{a:number;}[];
|
||||
>foo : Symbol(foo, Decl(functionOverloads22.ts, 0, 0), Decl(functionOverloads22.ts, 0, 39), Decl(functionOverloads22.ts, 1, 49))
|
||||
>bar : Symbol(bar, Decl(functionOverloads22.ts, 0, 13))
|
||||
>a : Symbol(a, Decl(functionOverloads22.ts, 0, 26))
|
||||
|
||||
function foo(bar:string):{a:number; b:string;}[];
|
||||
>foo : Symbol(foo, Decl(functionOverloads22.ts, 0, 0), Decl(functionOverloads22.ts, 0, 39), Decl(functionOverloads22.ts, 1, 49))
|
||||
>bar : Symbol(bar, Decl(functionOverloads22.ts, 1, 13))
|
||||
>a : Symbol(a, Decl(functionOverloads22.ts, 1, 26))
|
||||
>b : Symbol(b, Decl(functionOverloads22.ts, 1, 35))
|
||||
|
||||
function foo(bar:any):{a:any;b?:any;}[] { return [{a:""}] }
|
||||
>foo : Symbol(foo, Decl(functionOverloads22.ts, 0, 0), Decl(functionOverloads22.ts, 0, 39), Decl(functionOverloads22.ts, 1, 49))
|
||||
>bar : Symbol(bar, Decl(functionOverloads22.ts, 2, 13))
|
||||
>a : Symbol(a, Decl(functionOverloads22.ts, 2, 23))
|
||||
>b : Symbol(b, Decl(functionOverloads22.ts, 2, 29))
|
||||
>a : Symbol(a, Decl(functionOverloads22.ts, 2, 51))
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
=== tests/cases/compiler/functionOverloads22.ts ===
|
||||
function foo(bar:number):{a:number;}[];
|
||||
>foo : { (bar: number): { a: number; }[]; (bar: string): { a: number; b: string; }[]; }
|
||||
>bar : number
|
||||
>a : number
|
||||
|
||||
function foo(bar:string):{a:number; b:string;}[];
|
||||
>foo : { (bar: number): { a: number; }[]; (bar: string): { a: number; b: string; }[]; }
|
||||
>bar : string
|
||||
>a : number
|
||||
>b : string
|
||||
|
||||
function foo(bar:any):{a:any;b?:any;}[] { return [{a:""}] }
|
||||
>foo : { (bar: number): { a: number; }[]; (bar: string): { a: number; b: string; }[]; }
|
||||
>bar : any
|
||||
>a : any
|
||||
>b : any
|
||||
>[{a:""}] : { a: string; }[]
|
||||
>{a:""} : { a: string; }
|
||||
>a : string
|
||||
>"" : string
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
tests/cases/compiler/functionOverloads43.ts(1,10): error TS2394: Overload signature is not compatible with function implementation.
|
||||
|
||||
|
||||
==== tests/cases/compiler/functionOverloads43.ts (1 errors) ====
|
||||
function foo(bar: { a:number }[]): number;
|
||||
~~~
|
||||
!!! error TS2394: Overload signature is not compatible with function implementation.
|
||||
function foo(bar: { a:string }[]): string;
|
||||
function foo([x]: { a:number | string }[]): string | number {
|
||||
if (x) {
|
||||
return x.a;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
var x = foo([{a: "str"}]);
|
||||
var y = foo([{a: 100}]);
|
||||
@@ -0,0 +1,39 @@
|
||||
=== tests/cases/compiler/functionOverloads43.ts ===
|
||||
function foo(bar: { a:number }[]): number;
|
||||
>foo : Symbol(foo, Decl(functionOverloads43.ts, 0, 0), Decl(functionOverloads43.ts, 0, 42), Decl(functionOverloads43.ts, 1, 42))
|
||||
>bar : Symbol(bar, Decl(functionOverloads43.ts, 0, 13))
|
||||
>a : Symbol(a, Decl(functionOverloads43.ts, 0, 19))
|
||||
|
||||
function foo(bar: { a:string }[]): string;
|
||||
>foo : Symbol(foo, Decl(functionOverloads43.ts, 0, 0), Decl(functionOverloads43.ts, 0, 42), Decl(functionOverloads43.ts, 1, 42))
|
||||
>bar : Symbol(bar, Decl(functionOverloads43.ts, 1, 13))
|
||||
>a : Symbol(a, Decl(functionOverloads43.ts, 1, 19))
|
||||
|
||||
function foo([x]: { a:number | string }[]): string | number {
|
||||
>foo : Symbol(foo, Decl(functionOverloads43.ts, 0, 0), Decl(functionOverloads43.ts, 0, 42), Decl(functionOverloads43.ts, 1, 42))
|
||||
>x : Symbol(x, Decl(functionOverloads43.ts, 2, 14))
|
||||
>a : Symbol(a, Decl(functionOverloads43.ts, 2, 19))
|
||||
|
||||
if (x) {
|
||||
>x : Symbol(x, Decl(functionOverloads43.ts, 2, 14))
|
||||
|
||||
return x.a;
|
||||
>x.a : Symbol(a, Decl(functionOverloads43.ts, 2, 19))
|
||||
>x : Symbol(x, Decl(functionOverloads43.ts, 2, 14))
|
||||
>a : Symbol(a, Decl(functionOverloads43.ts, 2, 19))
|
||||
}
|
||||
|
||||
return undefined;
|
||||
>undefined : Symbol(undefined)
|
||||
}
|
||||
|
||||
var x = foo([{a: "str"}]);
|
||||
>x : Symbol(x, Decl(functionOverloads43.ts, 10, 3))
|
||||
>foo : Symbol(foo, Decl(functionOverloads43.ts, 0, 0), Decl(functionOverloads43.ts, 0, 42), Decl(functionOverloads43.ts, 1, 42))
|
||||
>a : Symbol(a, Decl(functionOverloads43.ts, 10, 14))
|
||||
|
||||
var y = foo([{a: 100}]);
|
||||
>y : Symbol(y, Decl(functionOverloads43.ts, 11, 3))
|
||||
>foo : Symbol(foo, Decl(functionOverloads43.ts, 0, 0), Decl(functionOverloads43.ts, 0, 42), Decl(functionOverloads43.ts, 1, 42))
|
||||
>a : Symbol(a, Decl(functionOverloads43.ts, 11, 14))
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
=== tests/cases/compiler/functionOverloads43.ts ===
|
||||
function foo(bar: { a:number }[]): number;
|
||||
>foo : { (bar: { a: number; }[]): number; (bar: { a: string; }[]): string; }
|
||||
>bar : { a: number; }[]
|
||||
>a : number
|
||||
|
||||
function foo(bar: { a:string }[]): string;
|
||||
>foo : { (bar: { a: number; }[]): number; (bar: { a: string; }[]): string; }
|
||||
>bar : { a: string; }[]
|
||||
>a : string
|
||||
|
||||
function foo([x]: { a:number | string }[]): string | number {
|
||||
>foo : { (bar: { a: number; }[]): number; (bar: { a: string; }[]): string; }
|
||||
>x : { a: number | string; }
|
||||
>a : number | string
|
||||
|
||||
if (x) {
|
||||
>x : { a: number | string; }
|
||||
|
||||
return x.a;
|
||||
>x.a : number | string
|
||||
>x : { a: number | string; }
|
||||
>a : number | string
|
||||
}
|
||||
|
||||
return undefined;
|
||||
>undefined : undefined
|
||||
}
|
||||
|
||||
var x = foo([{a: "str"}]);
|
||||
>x : string
|
||||
>foo([{a: "str"}]) : string
|
||||
>foo : { (bar: { a: number; }[]): number; (bar: { a: string; }[]): string; }
|
||||
>[{a: "str"}] : { a: string; }[]
|
||||
>{a: "str"} : { a: string; }
|
||||
>a : string
|
||||
>"str" : string
|
||||
|
||||
var y = foo([{a: 100}]);
|
||||
>y : number
|
||||
>foo([{a: 100}]) : number
|
||||
>foo : { (bar: { a: number; }[]): number; (bar: { a: string; }[]): string; }
|
||||
>[{a: 100}] : { a: number; }[]
|
||||
>{a: 100} : { a: number; }
|
||||
>a : number
|
||||
>100 : number
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
tests/cases/compiler/functionOverloads45.ts(5,10): error TS2394: Overload signature is not compatible with function implementation.
|
||||
tests/cases/compiler/functionOverloads45.ts(11,10): error TS2394: Overload signature is not compatible with function implementation.
|
||||
|
||||
|
||||
==== tests/cases/compiler/functionOverloads45.ts (2 errors) ====
|
||||
interface Animal { animal }
|
||||
interface Dog extends Animal { dog }
|
||||
interface Cat extends Animal { cat }
|
||||
|
||||
function foo1(bar: { a:number }[]): Cat;
|
||||
~~~~
|
||||
!!! error TS2394: Overload signature is not compatible with function implementation.
|
||||
function foo1(bar: { a:string }[]): Dog;
|
||||
function foo1([x]: { a:number | string }[]): Animal {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function foo2(bar: { a:number }[]): Cat;
|
||||
~~~~
|
||||
!!! error TS2394: Overload signature is not compatible with function implementation.
|
||||
function foo2(bar: { a:string }[]): Dog;
|
||||
function foo2([x]: { a:number | string }[]): Cat | Dog {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
|
||||
var x1 = foo1([{a: "str"}]);
|
||||
var y1 = foo1([{a: 100}]);
|
||||
|
||||
var x2 = foo2([{a: "str"}]);
|
||||
var y2 = foo2([{a: 100}]);
|
||||
@@ -0,0 +1,81 @@
|
||||
=== tests/cases/compiler/functionOverloads45.ts ===
|
||||
interface Animal { animal }
|
||||
>Animal : Symbol(Animal, Decl(functionOverloads45.ts, 0, 0))
|
||||
>animal : Symbol(animal, Decl(functionOverloads45.ts, 0, 18))
|
||||
|
||||
interface Dog extends Animal { dog }
|
||||
>Dog : Symbol(Dog, Decl(functionOverloads45.ts, 0, 27))
|
||||
>Animal : Symbol(Animal, Decl(functionOverloads45.ts, 0, 0))
|
||||
>dog : Symbol(dog, Decl(functionOverloads45.ts, 1, 30))
|
||||
|
||||
interface Cat extends Animal { cat }
|
||||
>Cat : Symbol(Cat, Decl(functionOverloads45.ts, 1, 36))
|
||||
>Animal : Symbol(Animal, Decl(functionOverloads45.ts, 0, 0))
|
||||
>cat : Symbol(cat, Decl(functionOverloads45.ts, 2, 30))
|
||||
|
||||
function foo1(bar: { a:number }[]): Cat;
|
||||
>foo1 : Symbol(foo1, Decl(functionOverloads45.ts, 2, 36), Decl(functionOverloads45.ts, 4, 40), Decl(functionOverloads45.ts, 5, 40))
|
||||
>bar : Symbol(bar, Decl(functionOverloads45.ts, 4, 14))
|
||||
>a : Symbol(a, Decl(functionOverloads45.ts, 4, 20))
|
||||
>Cat : Symbol(Cat, Decl(functionOverloads45.ts, 1, 36))
|
||||
|
||||
function foo1(bar: { a:string }[]): Dog;
|
||||
>foo1 : Symbol(foo1, Decl(functionOverloads45.ts, 2, 36), Decl(functionOverloads45.ts, 4, 40), Decl(functionOverloads45.ts, 5, 40))
|
||||
>bar : Symbol(bar, Decl(functionOverloads45.ts, 5, 14))
|
||||
>a : Symbol(a, Decl(functionOverloads45.ts, 5, 20))
|
||||
>Dog : Symbol(Dog, Decl(functionOverloads45.ts, 0, 27))
|
||||
|
||||
function foo1([x]: { a:number | string }[]): Animal {
|
||||
>foo1 : Symbol(foo1, Decl(functionOverloads45.ts, 2, 36), Decl(functionOverloads45.ts, 4, 40), Decl(functionOverloads45.ts, 5, 40))
|
||||
>x : Symbol(x, Decl(functionOverloads45.ts, 6, 15))
|
||||
>a : Symbol(a, Decl(functionOverloads45.ts, 6, 20))
|
||||
>Animal : Symbol(Animal, Decl(functionOverloads45.ts, 0, 0))
|
||||
|
||||
return undefined;
|
||||
>undefined : Symbol(undefined)
|
||||
}
|
||||
|
||||
function foo2(bar: { a:number }[]): Cat;
|
||||
>foo2 : Symbol(foo2, Decl(functionOverloads45.ts, 8, 1), Decl(functionOverloads45.ts, 10, 40), Decl(functionOverloads45.ts, 11, 40))
|
||||
>bar : Symbol(bar, Decl(functionOverloads45.ts, 10, 14))
|
||||
>a : Symbol(a, Decl(functionOverloads45.ts, 10, 20))
|
||||
>Cat : Symbol(Cat, Decl(functionOverloads45.ts, 1, 36))
|
||||
|
||||
function foo2(bar: { a:string }[]): Dog;
|
||||
>foo2 : Symbol(foo2, Decl(functionOverloads45.ts, 8, 1), Decl(functionOverloads45.ts, 10, 40), Decl(functionOverloads45.ts, 11, 40))
|
||||
>bar : Symbol(bar, Decl(functionOverloads45.ts, 11, 14))
|
||||
>a : Symbol(a, Decl(functionOverloads45.ts, 11, 20))
|
||||
>Dog : Symbol(Dog, Decl(functionOverloads45.ts, 0, 27))
|
||||
|
||||
function foo2([x]: { a:number | string }[]): Cat | Dog {
|
||||
>foo2 : Symbol(foo2, Decl(functionOverloads45.ts, 8, 1), Decl(functionOverloads45.ts, 10, 40), Decl(functionOverloads45.ts, 11, 40))
|
||||
>x : Symbol(x, Decl(functionOverloads45.ts, 12, 15))
|
||||
>a : Symbol(a, Decl(functionOverloads45.ts, 12, 20))
|
||||
>Cat : Symbol(Cat, Decl(functionOverloads45.ts, 1, 36))
|
||||
>Dog : Symbol(Dog, Decl(functionOverloads45.ts, 0, 27))
|
||||
|
||||
return undefined;
|
||||
>undefined : Symbol(undefined)
|
||||
}
|
||||
|
||||
|
||||
var x1 = foo1([{a: "str"}]);
|
||||
>x1 : Symbol(x1, Decl(functionOverloads45.ts, 17, 3))
|
||||
>foo1 : Symbol(foo1, Decl(functionOverloads45.ts, 2, 36), Decl(functionOverloads45.ts, 4, 40), Decl(functionOverloads45.ts, 5, 40))
|
||||
>a : Symbol(a, Decl(functionOverloads45.ts, 17, 16))
|
||||
|
||||
var y1 = foo1([{a: 100}]);
|
||||
>y1 : Symbol(y1, Decl(functionOverloads45.ts, 18, 3))
|
||||
>foo1 : Symbol(foo1, Decl(functionOverloads45.ts, 2, 36), Decl(functionOverloads45.ts, 4, 40), Decl(functionOverloads45.ts, 5, 40))
|
||||
>a : Symbol(a, Decl(functionOverloads45.ts, 18, 16))
|
||||
|
||||
var x2 = foo2([{a: "str"}]);
|
||||
>x2 : Symbol(x2, Decl(functionOverloads45.ts, 20, 3))
|
||||
>foo2 : Symbol(foo2, Decl(functionOverloads45.ts, 8, 1), Decl(functionOverloads45.ts, 10, 40), Decl(functionOverloads45.ts, 11, 40))
|
||||
>a : Symbol(a, Decl(functionOverloads45.ts, 20, 16))
|
||||
|
||||
var y2 = foo2([{a: 100}]);
|
||||
>y2 : Symbol(y2, Decl(functionOverloads45.ts, 21, 3))
|
||||
>foo2 : Symbol(foo2, Decl(functionOverloads45.ts, 8, 1), Decl(functionOverloads45.ts, 10, 40), Decl(functionOverloads45.ts, 11, 40))
|
||||
>a : Symbol(a, Decl(functionOverloads45.ts, 21, 16))
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
=== tests/cases/compiler/functionOverloads45.ts ===
|
||||
interface Animal { animal }
|
||||
>Animal : Animal
|
||||
>animal : any
|
||||
|
||||
interface Dog extends Animal { dog }
|
||||
>Dog : Dog
|
||||
>Animal : Animal
|
||||
>dog : any
|
||||
|
||||
interface Cat extends Animal { cat }
|
||||
>Cat : Cat
|
||||
>Animal : Animal
|
||||
>cat : any
|
||||
|
||||
function foo1(bar: { a:number }[]): Cat;
|
||||
>foo1 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; }
|
||||
>bar : { a: number; }[]
|
||||
>a : number
|
||||
>Cat : Cat
|
||||
|
||||
function foo1(bar: { a:string }[]): Dog;
|
||||
>foo1 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; }
|
||||
>bar : { a: string; }[]
|
||||
>a : string
|
||||
>Dog : Dog
|
||||
|
||||
function foo1([x]: { a:number | string }[]): Animal {
|
||||
>foo1 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; }
|
||||
>x : { a: number | string; }
|
||||
>a : number | string
|
||||
>Animal : Animal
|
||||
|
||||
return undefined;
|
||||
>undefined : undefined
|
||||
}
|
||||
|
||||
function foo2(bar: { a:number }[]): Cat;
|
||||
>foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; }
|
||||
>bar : { a: number; }[]
|
||||
>a : number
|
||||
>Cat : Cat
|
||||
|
||||
function foo2(bar: { a:string }[]): Dog;
|
||||
>foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; }
|
||||
>bar : { a: string; }[]
|
||||
>a : string
|
||||
>Dog : Dog
|
||||
|
||||
function foo2([x]: { a:number | string }[]): Cat | Dog {
|
||||
>foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; }
|
||||
>x : { a: number | string; }
|
||||
>a : number | string
|
||||
>Cat : Cat
|
||||
>Dog : Dog
|
||||
|
||||
return undefined;
|
||||
>undefined : undefined
|
||||
}
|
||||
|
||||
|
||||
var x1 = foo1([{a: "str"}]);
|
||||
>x1 : Dog
|
||||
>foo1([{a: "str"}]) : Dog
|
||||
>foo1 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; }
|
||||
>[{a: "str"}] : { a: string; }[]
|
||||
>{a: "str"} : { a: string; }
|
||||
>a : string
|
||||
>"str" : string
|
||||
|
||||
var y1 = foo1([{a: 100}]);
|
||||
>y1 : Cat
|
||||
>foo1([{a: 100}]) : Cat
|
||||
>foo1 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; }
|
||||
>[{a: 100}] : { a: number; }[]
|
||||
>{a: 100} : { a: number; }
|
||||
>a : number
|
||||
>100 : number
|
||||
|
||||
var x2 = foo2([{a: "str"}]);
|
||||
>x2 : Dog
|
||||
>foo2([{a: "str"}]) : Dog
|
||||
>foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; }
|
||||
>[{a: "str"}] : { a: string; }[]
|
||||
>{a: "str"} : { a: string; }
|
||||
>a : string
|
||||
>"str" : string
|
||||
|
||||
var y2 = foo2([{a: 100}]);
|
||||
>y2 : Cat
|
||||
>foo2([{a: 100}]) : Cat
|
||||
>foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; }
|
||||
>[{a: 100}] : { a: number; }[]
|
||||
>{a: 100} : { a: number; }
|
||||
>a : number
|
||||
>100 : number
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
tests/cases/compiler/overloadOnConstConstraintChecks4.ts(9,10): error TS2394: Overload signature is not compatible with function implementation.
|
||||
|
||||
|
||||
==== tests/cases/compiler/overloadOnConstConstraintChecks4.ts (1 errors) ====
|
||||
class Z { }
|
||||
class A extends Z { private x = 1 }
|
||||
class B extends A {}
|
||||
class C extends A {
|
||||
public foo() { }
|
||||
}
|
||||
function foo(name: 'hi'): B;
|
||||
function foo(name: 'bye'): C;
|
||||
function foo(name: string): A; // error
|
||||
~~~
|
||||
!!! error TS2394: Overload signature is not compatible with function implementation.
|
||||
function foo(name: any): Z {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ class C extends A {
|
||||
}
|
||||
function foo(name: 'hi'): B;
|
||||
function foo(name: 'bye'): C;
|
||||
function foo(name: string): A; // error
|
||||
function foo(name: string): A;
|
||||
function foo(name: any): Z {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
=== tests/cases/compiler/overloadOnConstConstraintChecks4.ts ===
|
||||
class Z { }
|
||||
>Z : Symbol(Z, Decl(overloadOnConstConstraintChecks4.ts, 0, 0))
|
||||
|
||||
class A extends Z { private x = 1 }
|
||||
>A : Symbol(A, Decl(overloadOnConstConstraintChecks4.ts, 0, 11))
|
||||
>Z : Symbol(Z, Decl(overloadOnConstConstraintChecks4.ts, 0, 0))
|
||||
>x : Symbol(x, Decl(overloadOnConstConstraintChecks4.ts, 1, 19))
|
||||
|
||||
class B extends A {}
|
||||
>B : Symbol(B, Decl(overloadOnConstConstraintChecks4.ts, 1, 35))
|
||||
>A : Symbol(A, Decl(overloadOnConstConstraintChecks4.ts, 0, 11))
|
||||
|
||||
class C extends A {
|
||||
>C : Symbol(C, Decl(overloadOnConstConstraintChecks4.ts, 2, 20))
|
||||
>A : Symbol(A, Decl(overloadOnConstConstraintChecks4.ts, 0, 11))
|
||||
|
||||
public foo() { }
|
||||
>foo : Symbol(foo, Decl(overloadOnConstConstraintChecks4.ts, 3, 19))
|
||||
}
|
||||
function foo(name: 'hi'): B;
|
||||
>foo : Symbol(foo, Decl(overloadOnConstConstraintChecks4.ts, 5, 1), Decl(overloadOnConstConstraintChecks4.ts, 6, 28), Decl(overloadOnConstConstraintChecks4.ts, 7, 29), Decl(overloadOnConstConstraintChecks4.ts, 8, 30))
|
||||
>name : Symbol(name, Decl(overloadOnConstConstraintChecks4.ts, 6, 13))
|
||||
>B : Symbol(B, Decl(overloadOnConstConstraintChecks4.ts, 1, 35))
|
||||
|
||||
function foo(name: 'bye'): C;
|
||||
>foo : Symbol(foo, Decl(overloadOnConstConstraintChecks4.ts, 5, 1), Decl(overloadOnConstConstraintChecks4.ts, 6, 28), Decl(overloadOnConstConstraintChecks4.ts, 7, 29), Decl(overloadOnConstConstraintChecks4.ts, 8, 30))
|
||||
>name : Symbol(name, Decl(overloadOnConstConstraintChecks4.ts, 7, 13))
|
||||
>C : Symbol(C, Decl(overloadOnConstConstraintChecks4.ts, 2, 20))
|
||||
|
||||
function foo(name: string): A;
|
||||
>foo : Symbol(foo, Decl(overloadOnConstConstraintChecks4.ts, 5, 1), Decl(overloadOnConstConstraintChecks4.ts, 6, 28), Decl(overloadOnConstConstraintChecks4.ts, 7, 29), Decl(overloadOnConstConstraintChecks4.ts, 8, 30))
|
||||
>name : Symbol(name, Decl(overloadOnConstConstraintChecks4.ts, 8, 13))
|
||||
>A : Symbol(A, Decl(overloadOnConstConstraintChecks4.ts, 0, 11))
|
||||
|
||||
function foo(name: any): Z {
|
||||
>foo : Symbol(foo, Decl(overloadOnConstConstraintChecks4.ts, 5, 1), Decl(overloadOnConstConstraintChecks4.ts, 6, 28), Decl(overloadOnConstConstraintChecks4.ts, 7, 29), Decl(overloadOnConstConstraintChecks4.ts, 8, 30))
|
||||
>name : Symbol(name, Decl(overloadOnConstConstraintChecks4.ts, 9, 13))
|
||||
>Z : Symbol(Z, Decl(overloadOnConstConstraintChecks4.ts, 0, 0))
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
=== tests/cases/compiler/overloadOnConstConstraintChecks4.ts ===
|
||||
class Z { }
|
||||
>Z : Z
|
||||
|
||||
class A extends Z { private x = 1 }
|
||||
>A : A
|
||||
>Z : Z
|
||||
>x : number
|
||||
>1 : number
|
||||
|
||||
class B extends A {}
|
||||
>B : B
|
||||
>A : A
|
||||
|
||||
class C extends A {
|
||||
>C : C
|
||||
>A : A
|
||||
|
||||
public foo() { }
|
||||
>foo : () => void
|
||||
}
|
||||
function foo(name: 'hi'): B;
|
||||
>foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; }
|
||||
>name : "hi"
|
||||
>B : B
|
||||
|
||||
function foo(name: 'bye'): C;
|
||||
>foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; }
|
||||
>name : "bye"
|
||||
>C : C
|
||||
|
||||
function foo(name: string): A;
|
||||
>foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; }
|
||||
>name : string
|
||||
>A : A
|
||||
|
||||
function foo(name: any): Z {
|
||||
>foo : { (name: "hi"): B; (name: "bye"): C; (name: string): A; }
|
||||
>name : any
|
||||
>Z : Z
|
||||
|
||||
return null;
|
||||
>null : null
|
||||
}
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
tests/cases/conformance/types/stringLiteral/stringLiteralTypesOverloads01.ts(7,10): error TS2394: Overload signature is not compatible with function implementation.
|
||||
|
||||
|
||||
==== tests/cases/conformance/types/stringLiteral/stringLiteralTypesOverloads01.ts (1 errors) ====
|
||||
|
||||
type PrimitiveName = 'string' | 'number' | 'boolean';
|
||||
|
||||
function getFalsyPrimitive(x: "string"): string;
|
||||
function getFalsyPrimitive(x: "number"): number;
|
||||
function getFalsyPrimitive(x: "boolean"): boolean;
|
||||
function getFalsyPrimitive(x: "boolean" | "string"): boolean | string;
|
||||
~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2394: Overload signature is not compatible with function implementation.
|
||||
function getFalsyPrimitive(x: "boolean" | "number"): boolean | number;
|
||||
function getFalsyPrimitive(x: "number" | "string"): number | string;
|
||||
function getFalsyPrimitive(x: "number" | "string" | "boolean"): number | string | boolean;
|
||||
function getFalsyPrimitive(x: PrimitiveName): number | string | boolean {
|
||||
if (x === "string") {
|
||||
return "";
|
||||
}
|
||||
if (x === "number") {
|
||||
return 0;
|
||||
}
|
||||
if (x === "boolean") {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Should be unreachable.
|
||||
throw "Invalid value";
|
||||
}
|
||||
|
||||
namespace Consts1 {
|
||||
const EMPTY_STRING = getFalsyPrimitive("string");
|
||||
const ZERO = getFalsyPrimitive('number');
|
||||
const FALSE = getFalsyPrimitive("boolean");
|
||||
}
|
||||
|
||||
const string: "string" = "string"
|
||||
const number: "number" = "number"
|
||||
const boolean: "boolean" = "boolean"
|
||||
|
||||
const stringOrNumber = string || number;
|
||||
const stringOrBoolean = string || boolean;
|
||||
const booleanOrNumber = number || boolean;
|
||||
const stringOrBooleanOrNumber = stringOrBoolean || number;
|
||||
|
||||
namespace Consts2 {
|
||||
const EMPTY_STRING = getFalsyPrimitive(string);
|
||||
const ZERO = getFalsyPrimitive(number);
|
||||
const FALSE = getFalsyPrimitive(boolean);
|
||||
|
||||
const a = getFalsyPrimitive(stringOrNumber);
|
||||
const b = getFalsyPrimitive(stringOrBoolean);
|
||||
const c = getFalsyPrimitive(booleanOrNumber);
|
||||
const d = getFalsyPrimitive(stringOrBooleanOrNumber);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
=== tests/cases/conformance/types/stringLiteral/stringLiteralTypesOverloads01.ts ===
|
||||
|
||||
type PrimitiveName = 'string' | 'number' | 'boolean';
|
||||
>PrimitiveName : Symbol(PrimitiveName, Decl(stringLiteralTypesOverloads01.ts, 0, 0))
|
||||
|
||||
function getFalsyPrimitive(x: "string"): string;
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>x : Symbol(x, Decl(stringLiteralTypesOverloads01.ts, 3, 27))
|
||||
|
||||
function getFalsyPrimitive(x: "number"): number;
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>x : Symbol(x, Decl(stringLiteralTypesOverloads01.ts, 4, 27))
|
||||
|
||||
function getFalsyPrimitive(x: "boolean"): boolean;
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>x : Symbol(x, Decl(stringLiteralTypesOverloads01.ts, 5, 27))
|
||||
|
||||
function getFalsyPrimitive(x: "boolean" | "string"): boolean | string;
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>x : Symbol(x, Decl(stringLiteralTypesOverloads01.ts, 6, 27))
|
||||
|
||||
function getFalsyPrimitive(x: "boolean" | "number"): boolean | number;
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>x : Symbol(x, Decl(stringLiteralTypesOverloads01.ts, 7, 27))
|
||||
|
||||
function getFalsyPrimitive(x: "number" | "string"): number | string;
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>x : Symbol(x, Decl(stringLiteralTypesOverloads01.ts, 8, 27))
|
||||
|
||||
function getFalsyPrimitive(x: "number" | "string" | "boolean"): number | string | boolean;
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>x : Symbol(x, Decl(stringLiteralTypesOverloads01.ts, 9, 27))
|
||||
|
||||
function getFalsyPrimitive(x: PrimitiveName): number | string | boolean {
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>x : Symbol(x, Decl(stringLiteralTypesOverloads01.ts, 10, 27))
|
||||
>PrimitiveName : Symbol(PrimitiveName, Decl(stringLiteralTypesOverloads01.ts, 0, 0))
|
||||
|
||||
if (x === "string") {
|
||||
>x : Symbol(x, Decl(stringLiteralTypesOverloads01.ts, 10, 27))
|
||||
|
||||
return "";
|
||||
}
|
||||
if (x === "number") {
|
||||
>x : Symbol(x, Decl(stringLiteralTypesOverloads01.ts, 10, 27))
|
||||
|
||||
return 0;
|
||||
}
|
||||
if (x === "boolean") {
|
||||
>x : Symbol(x, Decl(stringLiteralTypesOverloads01.ts, 10, 27))
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Should be unreachable.
|
||||
throw "Invalid value";
|
||||
}
|
||||
|
||||
namespace Consts1 {
|
||||
>Consts1 : Symbol(Consts1, Decl(stringLiteralTypesOverloads01.ts, 23, 1))
|
||||
|
||||
const EMPTY_STRING = getFalsyPrimitive("string");
|
||||
>EMPTY_STRING : Symbol(EMPTY_STRING, Decl(stringLiteralTypesOverloads01.ts, 26, 9))
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
|
||||
const ZERO = getFalsyPrimitive('number');
|
||||
>ZERO : Symbol(ZERO, Decl(stringLiteralTypesOverloads01.ts, 27, 9))
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
|
||||
const FALSE = getFalsyPrimitive("boolean");
|
||||
>FALSE : Symbol(FALSE, Decl(stringLiteralTypesOverloads01.ts, 28, 9))
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
}
|
||||
|
||||
const string: "string" = "string"
|
||||
>string : Symbol(string, Decl(stringLiteralTypesOverloads01.ts, 31, 5))
|
||||
|
||||
const number: "number" = "number"
|
||||
>number : Symbol(number, Decl(stringLiteralTypesOverloads01.ts, 32, 5))
|
||||
|
||||
const boolean: "boolean" = "boolean"
|
||||
>boolean : Symbol(boolean, Decl(stringLiteralTypesOverloads01.ts, 33, 5))
|
||||
|
||||
const stringOrNumber = string || number;
|
||||
>stringOrNumber : Symbol(stringOrNumber, Decl(stringLiteralTypesOverloads01.ts, 35, 5))
|
||||
>string : Symbol(string, Decl(stringLiteralTypesOverloads01.ts, 31, 5))
|
||||
>number : Symbol(number, Decl(stringLiteralTypesOverloads01.ts, 32, 5))
|
||||
|
||||
const stringOrBoolean = string || boolean;
|
||||
>stringOrBoolean : Symbol(stringOrBoolean, Decl(stringLiteralTypesOverloads01.ts, 36, 5))
|
||||
>string : Symbol(string, Decl(stringLiteralTypesOverloads01.ts, 31, 5))
|
||||
>boolean : Symbol(boolean, Decl(stringLiteralTypesOverloads01.ts, 33, 5))
|
||||
|
||||
const booleanOrNumber = number || boolean;
|
||||
>booleanOrNumber : Symbol(booleanOrNumber, Decl(stringLiteralTypesOverloads01.ts, 37, 5))
|
||||
>number : Symbol(number, Decl(stringLiteralTypesOverloads01.ts, 32, 5))
|
||||
>boolean : Symbol(boolean, Decl(stringLiteralTypesOverloads01.ts, 33, 5))
|
||||
|
||||
const stringOrBooleanOrNumber = stringOrBoolean || number;
|
||||
>stringOrBooleanOrNumber : Symbol(stringOrBooleanOrNumber, Decl(stringLiteralTypesOverloads01.ts, 38, 5))
|
||||
>stringOrBoolean : Symbol(stringOrBoolean, Decl(stringLiteralTypesOverloads01.ts, 36, 5))
|
||||
>number : Symbol(number, Decl(stringLiteralTypesOverloads01.ts, 32, 5))
|
||||
|
||||
namespace Consts2 {
|
||||
>Consts2 : Symbol(Consts2, Decl(stringLiteralTypesOverloads01.ts, 38, 58))
|
||||
|
||||
const EMPTY_STRING = getFalsyPrimitive(string);
|
||||
>EMPTY_STRING : Symbol(EMPTY_STRING, Decl(stringLiteralTypesOverloads01.ts, 41, 9))
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>string : Symbol(string, Decl(stringLiteralTypesOverloads01.ts, 31, 5))
|
||||
|
||||
const ZERO = getFalsyPrimitive(number);
|
||||
>ZERO : Symbol(ZERO, Decl(stringLiteralTypesOverloads01.ts, 42, 9))
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>number : Symbol(number, Decl(stringLiteralTypesOverloads01.ts, 32, 5))
|
||||
|
||||
const FALSE = getFalsyPrimitive(boolean);
|
||||
>FALSE : Symbol(FALSE, Decl(stringLiteralTypesOverloads01.ts, 43, 9))
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>boolean : Symbol(boolean, Decl(stringLiteralTypesOverloads01.ts, 33, 5))
|
||||
|
||||
const a = getFalsyPrimitive(stringOrNumber);
|
||||
>a : Symbol(a, Decl(stringLiteralTypesOverloads01.ts, 45, 9))
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>stringOrNumber : Symbol(stringOrNumber, Decl(stringLiteralTypesOverloads01.ts, 35, 5))
|
||||
|
||||
const b = getFalsyPrimitive(stringOrBoolean);
|
||||
>b : Symbol(b, Decl(stringLiteralTypesOverloads01.ts, 46, 9))
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>stringOrBoolean : Symbol(stringOrBoolean, Decl(stringLiteralTypesOverloads01.ts, 36, 5))
|
||||
|
||||
const c = getFalsyPrimitive(booleanOrNumber);
|
||||
>c : Symbol(c, Decl(stringLiteralTypesOverloads01.ts, 47, 9))
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>booleanOrNumber : Symbol(booleanOrNumber, Decl(stringLiteralTypesOverloads01.ts, 37, 5))
|
||||
|
||||
const d = getFalsyPrimitive(stringOrBooleanOrNumber);
|
||||
>d : Symbol(d, Decl(stringLiteralTypesOverloads01.ts, 48, 9))
|
||||
>getFalsyPrimitive : Symbol(getFalsyPrimitive, Decl(stringLiteralTypesOverloads01.ts, 1, 53), Decl(stringLiteralTypesOverloads01.ts, 3, 48), Decl(stringLiteralTypesOverloads01.ts, 4, 48), Decl(stringLiteralTypesOverloads01.ts, 5, 50), Decl(stringLiteralTypesOverloads01.ts, 6, 70), Decl(stringLiteralTypesOverloads01.ts, 7, 70), Decl(stringLiteralTypesOverloads01.ts, 8, 68), Decl(stringLiteralTypesOverloads01.ts, 9, 90))
|
||||
>stringOrBooleanOrNumber : Symbol(stringOrBooleanOrNumber, Decl(stringLiteralTypesOverloads01.ts, 38, 5))
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,174 @@
|
||||
=== tests/cases/conformance/types/stringLiteral/stringLiteralTypesOverloads01.ts ===
|
||||
|
||||
type PrimitiveName = 'string' | 'number' | 'boolean';
|
||||
>PrimitiveName : "string" | "number" | "boolean"
|
||||
|
||||
function getFalsyPrimitive(x: "string"): string;
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>x : "string"
|
||||
|
||||
function getFalsyPrimitive(x: "number"): number;
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>x : "number"
|
||||
|
||||
function getFalsyPrimitive(x: "boolean"): boolean;
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>x : "boolean"
|
||||
|
||||
function getFalsyPrimitive(x: "boolean" | "string"): boolean | string;
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>x : "boolean" | "string"
|
||||
|
||||
function getFalsyPrimitive(x: "boolean" | "number"): boolean | number;
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>x : "boolean" | "number"
|
||||
|
||||
function getFalsyPrimitive(x: "number" | "string"): number | string;
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>x : "number" | "string"
|
||||
|
||||
function getFalsyPrimitive(x: "number" | "string" | "boolean"): number | string | boolean;
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>x : "number" | "string" | "boolean"
|
||||
|
||||
function getFalsyPrimitive(x: PrimitiveName): number | string | boolean {
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>x : "string" | "number" | "boolean"
|
||||
>PrimitiveName : "string" | "number" | "boolean"
|
||||
|
||||
if (x === "string") {
|
||||
>x === "string" : boolean
|
||||
>x : "string" | "number" | "boolean"
|
||||
>"string" : string
|
||||
|
||||
return "";
|
||||
>"" : string
|
||||
}
|
||||
if (x === "number") {
|
||||
>x === "number" : boolean
|
||||
>x : "string" | "number" | "boolean"
|
||||
>"number" : string
|
||||
|
||||
return 0;
|
||||
>0 : number
|
||||
}
|
||||
if (x === "boolean") {
|
||||
>x === "boolean" : boolean
|
||||
>x : "string" | "number" | "boolean"
|
||||
>"boolean" : string
|
||||
|
||||
return false;
|
||||
>false : boolean
|
||||
}
|
||||
|
||||
// Should be unreachable.
|
||||
throw "Invalid value";
|
||||
>"Invalid value" : string
|
||||
}
|
||||
|
||||
namespace Consts1 {
|
||||
>Consts1 : typeof Consts1
|
||||
|
||||
const EMPTY_STRING = getFalsyPrimitive("string");
|
||||
>EMPTY_STRING : string
|
||||
>getFalsyPrimitive("string") : string
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>"string" : "string"
|
||||
|
||||
const ZERO = getFalsyPrimitive('number');
|
||||
>ZERO : number
|
||||
>getFalsyPrimitive('number') : number
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>'number' : "number"
|
||||
|
||||
const FALSE = getFalsyPrimitive("boolean");
|
||||
>FALSE : boolean
|
||||
>getFalsyPrimitive("boolean") : boolean
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>"boolean" : "boolean"
|
||||
}
|
||||
|
||||
const string: "string" = "string"
|
||||
>string : "string"
|
||||
>"string" : "string"
|
||||
|
||||
const number: "number" = "number"
|
||||
>number : "number"
|
||||
>"number" : "number"
|
||||
|
||||
const boolean: "boolean" = "boolean"
|
||||
>boolean : "boolean"
|
||||
>"boolean" : "boolean"
|
||||
|
||||
const stringOrNumber = string || number;
|
||||
>stringOrNumber : "string" | "number"
|
||||
>string || number : "string" | "number"
|
||||
>string : "string"
|
||||
>number : "number"
|
||||
|
||||
const stringOrBoolean = string || boolean;
|
||||
>stringOrBoolean : "string" | "boolean"
|
||||
>string || boolean : "string" | "boolean"
|
||||
>string : "string"
|
||||
>boolean : "boolean"
|
||||
|
||||
const booleanOrNumber = number || boolean;
|
||||
>booleanOrNumber : "number" | "boolean"
|
||||
>number || boolean : "number" | "boolean"
|
||||
>number : "number"
|
||||
>boolean : "boolean"
|
||||
|
||||
const stringOrBooleanOrNumber = stringOrBoolean || number;
|
||||
>stringOrBooleanOrNumber : "string" | "boolean" | "number"
|
||||
>stringOrBoolean || number : "string" | "boolean" | "number"
|
||||
>stringOrBoolean : "string" | "boolean"
|
||||
>number : "number"
|
||||
|
||||
namespace Consts2 {
|
||||
>Consts2 : typeof Consts2
|
||||
|
||||
const EMPTY_STRING = getFalsyPrimitive(string);
|
||||
>EMPTY_STRING : string
|
||||
>getFalsyPrimitive(string) : string
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>string : "string"
|
||||
|
||||
const ZERO = getFalsyPrimitive(number);
|
||||
>ZERO : number
|
||||
>getFalsyPrimitive(number) : number
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>number : "number"
|
||||
|
||||
const FALSE = getFalsyPrimitive(boolean);
|
||||
>FALSE : boolean
|
||||
>getFalsyPrimitive(boolean) : boolean
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>boolean : "boolean"
|
||||
|
||||
const a = getFalsyPrimitive(stringOrNumber);
|
||||
>a : number | string
|
||||
>getFalsyPrimitive(stringOrNumber) : number | string
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>stringOrNumber : "string" | "number"
|
||||
|
||||
const b = getFalsyPrimitive(stringOrBoolean);
|
||||
>b : boolean | string
|
||||
>getFalsyPrimitive(stringOrBoolean) : boolean | string
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>stringOrBoolean : "string" | "boolean"
|
||||
|
||||
const c = getFalsyPrimitive(booleanOrNumber);
|
||||
>c : boolean | number
|
||||
>getFalsyPrimitive(booleanOrNumber) : boolean | number
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>booleanOrNumber : "number" | "boolean"
|
||||
|
||||
const d = getFalsyPrimitive(stringOrBooleanOrNumber);
|
||||
>d : number | string | boolean
|
||||
>getFalsyPrimitive(stringOrBooleanOrNumber) : number | string | boolean
|
||||
>getFalsyPrimitive : { (x: "string"): string; (x: "number"): number; (x: "boolean"): boolean; (x: "boolean" | "string"): boolean | string; (x: "boolean" | "number"): boolean | number; (x: "number" | "string"): number | string; (x: "number" | "string" | "boolean"): number | string | boolean; }
|
||||
>stringOrBooleanOrNumber : "string" | "boolean" | "number"
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user