/
consistentAliasVsNonAliasRecordBehavior.symbols
124 lines (104 loc) · 6.56 KB
/
consistentAliasVsNonAliasRecordBehavior.symbols
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
=== tests/cases/compiler/consistentAliasVsNonAliasRecordBehavior.ts ===
// TODO: FIXME: All the below cases labeled `no error` _should be an error_, and are only prevented from so being
// by incorrect variance-based relationships
type Record2<K extends keyof any, T> = {
>Record2 : Symbol(Record2, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 0, 0))
>K : Symbol(K, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 3, 13))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 3, 33))
[P in K]: T;
>P : Symbol(P, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 4, 5))
>K : Symbol(K, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 3, 13))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 3, 33))
};
function defaultRecord(x: Record<'a', string>, y: Record<string, string>) {
>defaultRecord : Symbol(defaultRecord, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 5, 2))
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 7, 23))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 7, 46))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
x = y; // no error, but error expected.
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 7, 23))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 7, 46))
}
function customRecord(x: Record2<'a', string>, y: Record2<string, string>) {
>customRecord : Symbol(customRecord, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 9, 1))
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 11, 22))
>Record2 : Symbol(Record2, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 0, 0))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 11, 46))
>Record2 : Symbol(Record2, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 0, 0))
x = y; // no error, but error expected.
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 11, 22))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 11, 46))
}
function mixed1(x: Record2<'a', string>, y: Record<string, string>) {
>mixed1 : Symbol(mixed1, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 13, 1))
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 15, 16))
>Record2 : Symbol(Record2, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 0, 0))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 15, 40))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
x = y; // error
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 15, 16))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 15, 40))
}
function mixed2(x: Record<'a', string>, y: Record2<string, string>) {
>mixed2 : Symbol(mixed2, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 17, 1))
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 19, 16))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 19, 39))
>Record2 : Symbol(Record2, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 0, 0))
x = y; // error
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 19, 16))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 19, 39))
}
function defaultRecord2<T>(x: Record<'a', T>, y: Record<string, T>) {
>defaultRecord2 : Symbol(defaultRecord2, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 21, 1))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 23, 24))
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 23, 27))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 23, 24))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 23, 45))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 23, 24))
x = y; // no error, but error expected.
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 23, 27))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 23, 45))
}
function customRecord2<T>(x: Record2<'a', T>, y: Record2<string, T>) {
>customRecord2 : Symbol(customRecord2, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 25, 1))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 27, 23))
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 27, 26))
>Record2 : Symbol(Record2, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 0, 0))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 27, 23))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 27, 45))
>Record2 : Symbol(Record2, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 0, 0))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 27, 23))
x = y; // no error, but error expected.
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 27, 26))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 27, 45))
}
function mixed3<T>(x: Record2<'a', T>, y: Record<string, T>) {
>mixed3 : Symbol(mixed3, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 29, 1))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 31, 16))
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 31, 19))
>Record2 : Symbol(Record2, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 0, 0))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 31, 16))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 31, 38))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 31, 16))
x = y; // error
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 31, 19))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 31, 38))
}
function mixed4<T>(x: Record<'a', T>, y: Record2<string, T>) {
>mixed4 : Symbol(mixed4, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 33, 1))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 35, 16))
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 35, 19))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 35, 16))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 35, 37))
>Record2 : Symbol(Record2, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 0, 0))
>T : Symbol(T, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 35, 16))
x = y; // error
>x : Symbol(x, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 35, 19))
>y : Symbol(y, Decl(consistentAliasVsNonAliasRecordBehavior.ts, 35, 37))
}