1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
=== tests/cases/conformance/types/literal/stringLiteralsWithSwitchStatements03.ts ===
let x: "foo";
>x : "foo"
let y: "foo" | "bar";
>y : "foo" | "bar"
let z: "bar";
>z : "bar"
declare function randBool(): boolean;
>randBool : () => boolean
switch (x) {
>x : "foo"
case randBool() ? "foo" : "baz":
>randBool() ? "foo" : "baz" : "foo" | "baz"
>randBool() : boolean
>randBool : () => boolean
>"foo" : "foo"
>"baz" : "baz"
break;
case (randBool() ? ("bar") : "baz" ? "bar" : "baz"):
>(randBool() ? ("bar") : "baz" ? "bar" : "baz") : "bar" | "baz"
>randBool() ? ("bar") : "baz" ? "bar" : "baz" : "bar" | "baz"
>randBool() : boolean
>randBool : () => boolean
>("bar") : "bar"
>"bar" : "bar"
>"baz" ? "bar" : "baz" : "bar" | "baz"
>"baz" : "baz"
>"bar" : "bar"
>"baz" : "baz"
break;
case (("bar")):
>(("bar")) : "bar"
>("bar") : "bar"
>"bar" : "bar"
break;
case (x, y, ("baz")):
>(x, y, ("baz")) : "baz"
>x, y, ("baz") : "baz"
>x, y : "foo" | "bar"
>x : "foo"
>y : "foo" | "bar"
>("baz") : "baz"
>"baz" : "baz"
x;
>x : never
y;
>y : "foo" | "bar"
break;
case (("foo" || ("bar"))):
>(("foo" || ("bar"))) : "foo" | "bar"
>("foo" || ("bar")) : "foo" | "bar"
>"foo" || ("bar") : "foo" | "bar"
>"foo" : "foo"
>("bar") : "bar"
>"bar" : "bar"
break;
case (("bar" || ("baz"))):
>(("bar" || ("baz"))) : "bar" | "baz"
>("bar" || ("baz")) : "bar" | "baz"
>"bar" || ("baz") : "bar" | "baz"
>"bar" : "bar"
>("baz") : "baz"
>"baz" : "baz"
break;
case z || "baz":
>z || "baz" : "bar" | "baz"
>z : "bar"
>"baz" : "baz"
case "baz" || z:
>"baz" || z : "bar" | "baz"
>"baz" : "baz"
>z : "bar"
z;
>z : "bar"
break;
}
|