@@ -79,3 +79,61 @@ function foo(this: Object | undefined) {
79
79
return this ?? 0;
80
80
>this : Symbol(this, Decl(predicateSemantics.ts, 40, 13))
81
81
}
82
+
83
+ // https://github.com/microsoft/TypeScript/issues/60401
84
+ {
85
+ const maybe = null as true | null;
86
+ >maybe : Symbol(maybe, Decl(predicateSemantics.ts, 47, 7))
87
+
88
+ let i = 0;
89
+ >i : Symbol(i, Decl(predicateSemantics.ts, 48, 5))
90
+
91
+ const d = (i++, maybe) ?? true; // ok
92
+ >d : Symbol(d, Decl(predicateSemantics.ts, 49, 7))
93
+ >i : Symbol(i, Decl(predicateSemantics.ts, 48, 5))
94
+ >maybe : Symbol(maybe, Decl(predicateSemantics.ts, 47, 7))
95
+
96
+ const e = (i++, i++) ?? true; // error
97
+ >e : Symbol(e, Decl(predicateSemantics.ts, 50, 7))
98
+ >i : Symbol(i, Decl(predicateSemantics.ts, 48, 5))
99
+ >i : Symbol(i, Decl(predicateSemantics.ts, 48, 5))
100
+
101
+ const f = (maybe, i++) ?? true; // error
102
+ >f : Symbol(f, Decl(predicateSemantics.ts, 51, 7))
103
+ >maybe : Symbol(maybe, Decl(predicateSemantics.ts, 47, 7))
104
+ >i : Symbol(i, Decl(predicateSemantics.ts, 48, 5))
105
+ }
106
+
107
+ // https://github.com/microsoft/TypeScript/issues/60439
108
+ class X {
109
+ >X : Symbol(X, Decl(predicateSemantics.ts, 52, 1))
110
+
111
+ constructor() {
112
+ const p = new.target ?? 32;
113
+ >p : Symbol(p, Decl(predicateSemantics.ts, 57, 9))
114
+ >new.target : Symbol(X, Decl(predicateSemantics.ts, 52, 1))
115
+ >target : Symbol(X, Decl(predicateSemantics.ts, 52, 1))
116
+ }
117
+ }
118
+
119
+ // https://github.com/microsoft/TypeScript/issues/60614
120
+ declare function tag<T>(
121
+ >tag : Symbol(tag, Decl(predicateSemantics.ts, 59, 1))
122
+ >T : Symbol(T, Decl(predicateSemantics.ts, 62, 21))
123
+
124
+ strings: TemplateStringsArray,
125
+ >strings : Symbol(strings, Decl(predicateSemantics.ts, 62, 24))
126
+ >TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.es5.d.ts, --, --))
127
+
128
+ ...values: number[]
129
+ >values : Symbol(values, Decl(predicateSemantics.ts, 63, 32))
130
+
131
+ ): T | null;
132
+ >T : Symbol(T, Decl(predicateSemantics.ts, 62, 21))
133
+
134
+ tag`foo${1}` ?? 32; // ok
135
+ >tag : Symbol(tag, Decl(predicateSemantics.ts, 59, 1))
136
+
137
+ `foo${1}` ?? 32; // error
138
+ `foo` ?? 32; // error
139
+
0 commit comments