File: typeAssertions.symbols

package info (click to toggle)
node-typescript 3.3.3333-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 324,548 kB
  • sloc: makefile: 6; sh: 3
file content (129 lines) | stat: -rw-r--r-- 5,084 bytes parent folder | download | duplicates (2)
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
=== tests/cases/conformance/expressions/typeAssertions/typeAssertions.ts ===
// Function call whose argument is a 1 arg generic function call with explicit type arguments
function fn1<T>(t: T) { }
>fn1 : Symbol(fn1, Decl(typeAssertions.ts, 0, 0))
>T : Symbol(T, Decl(typeAssertions.ts, 1, 13))
>t : Symbol(t, Decl(typeAssertions.ts, 1, 16))
>T : Symbol(T, Decl(typeAssertions.ts, 1, 13))

function fn2(t: any) { }
>fn2 : Symbol(fn2, Decl(typeAssertions.ts, 1, 25))
>t : Symbol(t, Decl(typeAssertions.ts, 2, 13))

fn1(fn2<string>(4)); // Error
>fn1 : Symbol(fn1, Decl(typeAssertions.ts, 0, 0))
>fn2 : Symbol(fn2, Decl(typeAssertions.ts, 1, 25))

var a: any;
>a : Symbol(a, Decl(typeAssertions.ts, 6, 3), Decl(typeAssertions.ts, 10, 3))

var s: string;
>s : Symbol(s, Decl(typeAssertions.ts, 7, 3), Decl(typeAssertions.ts, 11, 3))

// Type assertion of non - unary expression
var a = <any>"" + 4;
>a : Symbol(a, Decl(typeAssertions.ts, 6, 3), Decl(typeAssertions.ts, 10, 3))

var s = "" + <any>4;
>s : Symbol(s, Decl(typeAssertions.ts, 7, 3), Decl(typeAssertions.ts, 11, 3))

class SomeBase {
>SomeBase : Symbol(SomeBase, Decl(typeAssertions.ts, 11, 20))

    private p;
>p : Symbol(SomeBase.p, Decl(typeAssertions.ts, 13, 16))
}
class SomeDerived extends SomeBase {
>SomeDerived : Symbol(SomeDerived, Decl(typeAssertions.ts, 15, 1))
>SomeBase : Symbol(SomeBase, Decl(typeAssertions.ts, 11, 20))

    private x;
>x : Symbol(SomeDerived.x, Decl(typeAssertions.ts, 16, 36))
}
class SomeOther {
>SomeOther : Symbol(SomeOther, Decl(typeAssertions.ts, 18, 1))

    private q;
>q : Symbol(SomeOther.q, Decl(typeAssertions.ts, 19, 17))
}

// Type assertion should check for assignability in either direction
var someBase = new SomeBase();
>someBase : Symbol(someBase, Decl(typeAssertions.ts, 24, 3))
>SomeBase : Symbol(SomeBase, Decl(typeAssertions.ts, 11, 20))

var someDerived = new SomeDerived();
>someDerived : Symbol(someDerived, Decl(typeAssertions.ts, 25, 3))
>SomeDerived : Symbol(SomeDerived, Decl(typeAssertions.ts, 15, 1))

var someOther = new SomeOther();
>someOther : Symbol(someOther, Decl(typeAssertions.ts, 26, 3))
>SomeOther : Symbol(SomeOther, Decl(typeAssertions.ts, 18, 1))

someBase = <SomeBase>someDerived;
>someBase : Symbol(someBase, Decl(typeAssertions.ts, 24, 3))
>SomeBase : Symbol(SomeBase, Decl(typeAssertions.ts, 11, 20))
>someDerived : Symbol(someDerived, Decl(typeAssertions.ts, 25, 3))

someBase = <SomeBase>someBase;
>someBase : Symbol(someBase, Decl(typeAssertions.ts, 24, 3))
>SomeBase : Symbol(SomeBase, Decl(typeAssertions.ts, 11, 20))
>someBase : Symbol(someBase, Decl(typeAssertions.ts, 24, 3))

someBase = <SomeBase>someOther; // Error
>someBase : Symbol(someBase, Decl(typeAssertions.ts, 24, 3))
>SomeBase : Symbol(SomeBase, Decl(typeAssertions.ts, 11, 20))
>someOther : Symbol(someOther, Decl(typeAssertions.ts, 26, 3))

someDerived = <SomeDerived>someDerived;
>someDerived : Symbol(someDerived, Decl(typeAssertions.ts, 25, 3))
>SomeDerived : Symbol(SomeDerived, Decl(typeAssertions.ts, 15, 1))
>someDerived : Symbol(someDerived, Decl(typeAssertions.ts, 25, 3))

someDerived = <SomeDerived>someBase;
>someDerived : Symbol(someDerived, Decl(typeAssertions.ts, 25, 3))
>SomeDerived : Symbol(SomeDerived, Decl(typeAssertions.ts, 15, 1))
>someBase : Symbol(someBase, Decl(typeAssertions.ts, 24, 3))

someDerived = <SomeDerived>someOther; // Error
>someDerived : Symbol(someDerived, Decl(typeAssertions.ts, 25, 3))
>SomeDerived : Symbol(SomeDerived, Decl(typeAssertions.ts, 15, 1))
>someOther : Symbol(someOther, Decl(typeAssertions.ts, 26, 3))

someOther = <SomeOther>someDerived; // Error
>someOther : Symbol(someOther, Decl(typeAssertions.ts, 26, 3))
>SomeOther : Symbol(SomeOther, Decl(typeAssertions.ts, 18, 1))
>someDerived : Symbol(someDerived, Decl(typeAssertions.ts, 25, 3))

someOther = <SomeOther>someBase; // Error
>someOther : Symbol(someOther, Decl(typeAssertions.ts, 26, 3))
>SomeOther : Symbol(SomeOther, Decl(typeAssertions.ts, 18, 1))
>someBase : Symbol(someBase, Decl(typeAssertions.ts, 24, 3))

someOther = <SomeOther>someOther;
>someOther : Symbol(someOther, Decl(typeAssertions.ts, 26, 3))
>SomeOther : Symbol(SomeOther, Decl(typeAssertions.ts, 18, 1))
>someOther : Symbol(someOther, Decl(typeAssertions.ts, 26, 3))

// Type assertion cannot be a type-predicate type
var numOrStr: number | string;
>numOrStr : Symbol(numOrStr, Decl(typeAssertions.ts, 41, 3))

var str: string;
>str : Symbol(str, Decl(typeAssertions.ts, 42, 3))

if(<numOrStr is string>(numOrStr === undefined)) { // Error
>numOrStr : Symbol(numOrStr, Decl(typeAssertions.ts, 41, 3))
>undefined : Symbol(undefined)

	str = numOrStr; // Error, no narrowing occurred
>str : Symbol(str, Decl(typeAssertions.ts, 42, 3))
>numOrStr : Symbol(numOrStr, Decl(typeAssertions.ts, 41, 3))
}

if((numOrStr === undefined) as numOrStr is string) { // Error
>numOrStr : Symbol(numOrStr, Decl(typeAssertions.ts, 41, 3))
>undefined : Symbol(undefined)
}