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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
=== tests/cases/conformance/types/tuple/castingTuple.ts ===
interface I { }
>I : Symbol(I, Decl(castingTuple.ts, 0, 0))
class A { a = 10; }
>A : Symbol(A, Decl(castingTuple.ts, 0, 15))
>a : Symbol(A.a, Decl(castingTuple.ts, 1, 9))
class C implements I { c };
>C : Symbol(C, Decl(castingTuple.ts, 1, 19))
>I : Symbol(I, Decl(castingTuple.ts, 0, 0))
>c : Symbol(C.c, Decl(castingTuple.ts, 2, 22))
class D implements I { d };
>D : Symbol(D, Decl(castingTuple.ts, 2, 27))
>I : Symbol(I, Decl(castingTuple.ts, 0, 0))
>d : Symbol(D.d, Decl(castingTuple.ts, 3, 22))
class E extends A { e };
>E : Symbol(E, Decl(castingTuple.ts, 3, 27))
>A : Symbol(A, Decl(castingTuple.ts, 0, 15))
>e : Symbol(E.e, Decl(castingTuple.ts, 4, 19))
class F extends A { f };
>F : Symbol(F, Decl(castingTuple.ts, 4, 24))
>A : Symbol(A, Decl(castingTuple.ts, 0, 15))
>f : Symbol(F.f, Decl(castingTuple.ts, 5, 19))
enum E1 { one }
>E1 : Symbol(E1, Decl(castingTuple.ts, 5, 24))
>one : Symbol(E1.one, Decl(castingTuple.ts, 6, 9))
enum E2 { one }
>E2 : Symbol(E2, Decl(castingTuple.ts, 6, 15))
>one : Symbol(E2.one, Decl(castingTuple.ts, 7, 9))
// no error
var numStrTuple: [number, string] = [5, "foo"];
>numStrTuple : Symbol(numStrTuple, Decl(castingTuple.ts, 10, 3))
var emptyObjTuple = <[{}, {}]>numStrTuple;
>emptyObjTuple : Symbol(emptyObjTuple, Decl(castingTuple.ts, 11, 3))
>numStrTuple : Symbol(numStrTuple, Decl(castingTuple.ts, 10, 3))
var numStrBoolTuple = <[number, string, boolean]>numStrTuple;
>numStrBoolTuple : Symbol(numStrBoolTuple, Decl(castingTuple.ts, 12, 3))
>numStrTuple : Symbol(numStrTuple, Decl(castingTuple.ts, 10, 3))
var shorter = numStrBoolTuple as [number, string]
>shorter : Symbol(shorter, Decl(castingTuple.ts, 13, 3))
>numStrBoolTuple : Symbol(numStrBoolTuple, Decl(castingTuple.ts, 12, 3))
var longer = numStrTuple as [number, string, boolean]
>longer : Symbol(longer, Decl(castingTuple.ts, 14, 3))
>numStrTuple : Symbol(numStrTuple, Decl(castingTuple.ts, 10, 3))
var classCDTuple: [C, D] = [new C(), new D()];
>classCDTuple : Symbol(classCDTuple, Decl(castingTuple.ts, 15, 3))
>C : Symbol(C, Decl(castingTuple.ts, 1, 19))
>D : Symbol(D, Decl(castingTuple.ts, 2, 27))
>C : Symbol(C, Decl(castingTuple.ts, 1, 19))
>D : Symbol(D, Decl(castingTuple.ts, 2, 27))
var interfaceIITuple = <[I, I]>classCDTuple;
>interfaceIITuple : Symbol(interfaceIITuple, Decl(castingTuple.ts, 16, 3))
>I : Symbol(I, Decl(castingTuple.ts, 0, 0))
>I : Symbol(I, Decl(castingTuple.ts, 0, 0))
>classCDTuple : Symbol(classCDTuple, Decl(castingTuple.ts, 15, 3))
var classCDATuple = <[C, D, A]>classCDTuple;
>classCDATuple : Symbol(classCDATuple, Decl(castingTuple.ts, 17, 3))
>C : Symbol(C, Decl(castingTuple.ts, 1, 19))
>D : Symbol(D, Decl(castingTuple.ts, 2, 27))
>A : Symbol(A, Decl(castingTuple.ts, 0, 15))
>classCDTuple : Symbol(classCDTuple, Decl(castingTuple.ts, 15, 3))
var eleFromCDA1 = classCDATuple[2]; // A
>eleFromCDA1 : Symbol(eleFromCDA1, Decl(castingTuple.ts, 18, 3))
>classCDATuple : Symbol(classCDATuple, Decl(castingTuple.ts, 17, 3))
>2 : Symbol(2)
var eleFromCDA2 = classCDATuple[5]; // C | D | A
>eleFromCDA2 : Symbol(eleFromCDA2, Decl(castingTuple.ts, 19, 3))
>classCDATuple : Symbol(classCDATuple, Decl(castingTuple.ts, 17, 3))
var t10: [E1, E2] = [E1.one, E2.one];
>t10 : Symbol(t10, Decl(castingTuple.ts, 20, 3))
>E1 : Symbol(E1, Decl(castingTuple.ts, 5, 24))
>E2 : Symbol(E2, Decl(castingTuple.ts, 6, 15))
>E1.one : Symbol(E1.one, Decl(castingTuple.ts, 6, 9))
>E1 : Symbol(E1, Decl(castingTuple.ts, 5, 24))
>one : Symbol(E1.one, Decl(castingTuple.ts, 6, 9))
>E2.one : Symbol(E2.one, Decl(castingTuple.ts, 7, 9))
>E2 : Symbol(E2, Decl(castingTuple.ts, 6, 15))
>one : Symbol(E2.one, Decl(castingTuple.ts, 7, 9))
var t11 = <[number, number]>t10;
>t11 : Symbol(t11, Decl(castingTuple.ts, 21, 3))
>t10 : Symbol(t10, Decl(castingTuple.ts, 20, 3))
var array1 = <{}[]>emptyObjTuple;
>array1 : Symbol(array1, Decl(castingTuple.ts, 22, 3), Decl(castingTuple.ts, 31, 3))
>emptyObjTuple : Symbol(emptyObjTuple, Decl(castingTuple.ts, 11, 3))
var unionTuple: [C, string | number] = [new C(), "foo"];
>unionTuple : Symbol(unionTuple, Decl(castingTuple.ts, 23, 3))
>C : Symbol(C, Decl(castingTuple.ts, 1, 19))
>C : Symbol(C, Decl(castingTuple.ts, 1, 19))
var unionTuple2: [C, string | number, D] = [new C(), "foo", new D()];
>unionTuple2 : Symbol(unionTuple2, Decl(castingTuple.ts, 24, 3))
>C : Symbol(C, Decl(castingTuple.ts, 1, 19))
>D : Symbol(D, Decl(castingTuple.ts, 2, 27))
>C : Symbol(C, Decl(castingTuple.ts, 1, 19))
>D : Symbol(D, Decl(castingTuple.ts, 2, 27))
var unionTuple3: [number, string| number] = [10, "foo"];
>unionTuple3 : Symbol(unionTuple3, Decl(castingTuple.ts, 25, 3))
var unionTuple4 = <[number, number]>unionTuple3;
>unionTuple4 : Symbol(unionTuple4, Decl(castingTuple.ts, 26, 3))
>unionTuple3 : Symbol(unionTuple3, Decl(castingTuple.ts, 25, 3))
// error
var t3 = <[number, number]>numStrTuple;
>t3 : Symbol(t3, Decl(castingTuple.ts, 29, 3))
>numStrTuple : Symbol(numStrTuple, Decl(castingTuple.ts, 10, 3))
var t9 = <[A, I]>classCDTuple;
>t9 : Symbol(t9, Decl(castingTuple.ts, 30, 3))
>A : Symbol(A, Decl(castingTuple.ts, 0, 15))
>I : Symbol(I, Decl(castingTuple.ts, 0, 0))
>classCDTuple : Symbol(classCDTuple, Decl(castingTuple.ts, 15, 3))
var array1 = <number[]>numStrTuple;
>array1 : Symbol(array1, Decl(castingTuple.ts, 22, 3), Decl(castingTuple.ts, 31, 3))
>numStrTuple : Symbol(numStrTuple, Decl(castingTuple.ts, 10, 3))
t4[2] = 10;
|