Skip to content

Commit 5cf670b

Browse files
committed
Add tests
1 parent b3cdbf3 commit 5cf670b

File tree

4 files changed

+111
-33
lines changed

4 files changed

+111
-33
lines changed

tests/baselines/reference/templateLiteralTypes2.js

+16
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ function ft13(s: string, cond: boolean) {
6363

6464
type T0 = string | `${number}px`;
6565

66+
function ft14(t: `foo${number}`) {
67+
let x1: string = t;
68+
let x2: String = t;
69+
let x3: Object = t;
70+
let x4: {} = t;
71+
let x6: { length: number } = t;
72+
}
73+
6674
// Repro from #41631
6775

6876
declare function takesLiteral<T extends string>(literal: T): T extends `foo.bar.${infer R}` ? R : unknown;
@@ -146,6 +154,13 @@ function ft13(s, cond) {
146154
var y1 = nonWidening("foo" + s);
147155
var y2 = nonWidening(cond ? 'a' : "foo" + s);
148156
}
157+
function ft14(t) {
158+
var x1 = t;
159+
var x2 = t;
160+
var x3 = t;
161+
var x4 = t;
162+
var x6 = t;
163+
}
149164
var t1 = takesLiteral("foo.bar.baz"); // "baz"
150165
var id2 = "foo.bar.baz";
151166
var t2 = takesLiteral(id2); // "baz"
@@ -169,6 +184,7 @@ declare function widening<T>(x: T): T;
169184
declare function nonWidening<T extends string | number | symbol>(x: T): T;
170185
declare function ft13(s: string, cond: boolean): void;
171186
declare type T0 = string | `${number}px`;
187+
declare function ft14(t: `foo${number}`): void;
172188
declare function takesLiteral<T extends string>(literal: T): T extends `foo.bar.${infer R}` ? R : unknown;
173189
declare const t1: "baz";
174190
declare const id2 = "foo.bar.baz";

tests/baselines/reference/templateLiteralTypes2.symbols

+61-33
Original file line numberDiff line numberDiff line change
@@ -229,68 +229,96 @@ function ft13(s: string, cond: boolean) {
229229
type T0 = string | `${number}px`;
230230
>T0 : Symbol(T0, Decl(templateLiteralTypes2.ts, 60, 1))
231231

232+
function ft14(t: `foo${number}`) {
233+
>ft14 : Symbol(ft14, Decl(templateLiteralTypes2.ts, 62, 33))
234+
>t : Symbol(t, Decl(templateLiteralTypes2.ts, 64, 14))
235+
236+
let x1: string = t;
237+
>x1 : Symbol(x1, Decl(templateLiteralTypes2.ts, 65, 7))
238+
>t : Symbol(t, Decl(templateLiteralTypes2.ts, 64, 14))
239+
240+
let x2: String = t;
241+
>x2 : Symbol(x2, Decl(templateLiteralTypes2.ts, 66, 7))
242+
>String : Symbol(String, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
243+
>t : Symbol(t, Decl(templateLiteralTypes2.ts, 64, 14))
244+
245+
let x3: Object = t;
246+
>x3 : Symbol(x3, Decl(templateLiteralTypes2.ts, 67, 7))
247+
>Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
248+
>t : Symbol(t, Decl(templateLiteralTypes2.ts, 64, 14))
249+
250+
let x4: {} = t;
251+
>x4 : Symbol(x4, Decl(templateLiteralTypes2.ts, 68, 7))
252+
>t : Symbol(t, Decl(templateLiteralTypes2.ts, 64, 14))
253+
254+
let x6: { length: number } = t;
255+
>x6 : Symbol(x6, Decl(templateLiteralTypes2.ts, 69, 7))
256+
>length : Symbol(length, Decl(templateLiteralTypes2.ts, 69, 13))
257+
>t : Symbol(t, Decl(templateLiteralTypes2.ts, 64, 14))
258+
}
259+
232260
// Repro from #41631
233261

234262
declare function takesLiteral<T extends string>(literal: T): T extends `foo.bar.${infer R}` ? R : unknown;
235-
>takesLiteral : Symbol(takesLiteral, Decl(templateLiteralTypes2.ts, 62, 33))
236-
>T : Symbol(T, Decl(templateLiteralTypes2.ts, 66, 30))
237-
>literal : Symbol(literal, Decl(templateLiteralTypes2.ts, 66, 48))
238-
>T : Symbol(T, Decl(templateLiteralTypes2.ts, 66, 30))
239-
>T : Symbol(T, Decl(templateLiteralTypes2.ts, 66, 30))
240-
>R : Symbol(R, Decl(templateLiteralTypes2.ts, 66, 87))
241-
>R : Symbol(R, Decl(templateLiteralTypes2.ts, 66, 87))
263+
>takesLiteral : Symbol(takesLiteral, Decl(templateLiteralTypes2.ts, 70, 1))
264+
>T : Symbol(T, Decl(templateLiteralTypes2.ts, 74, 30))
265+
>literal : Symbol(literal, Decl(templateLiteralTypes2.ts, 74, 48))
266+
>T : Symbol(T, Decl(templateLiteralTypes2.ts, 74, 30))
267+
>T : Symbol(T, Decl(templateLiteralTypes2.ts, 74, 30))
268+
>R : Symbol(R, Decl(templateLiteralTypes2.ts, 74, 87))
269+
>R : Symbol(R, Decl(templateLiteralTypes2.ts, 74, 87))
242270

243271
const t1 = takesLiteral("foo.bar.baz"); // "baz"
244-
>t1 : Symbol(t1, Decl(templateLiteralTypes2.ts, 68, 5))
245-
>takesLiteral : Symbol(takesLiteral, Decl(templateLiteralTypes2.ts, 62, 33))
272+
>t1 : Symbol(t1, Decl(templateLiteralTypes2.ts, 76, 5))
273+
>takesLiteral : Symbol(takesLiteral, Decl(templateLiteralTypes2.ts, 70, 1))
246274

247275
const id2 = "foo.bar.baz";
248-
>id2 : Symbol(id2, Decl(templateLiteralTypes2.ts, 69, 5))
276+
>id2 : Symbol(id2, Decl(templateLiteralTypes2.ts, 77, 5))
249277

250278
const t2 = takesLiteral(id2); // "baz"
251-
>t2 : Symbol(t2, Decl(templateLiteralTypes2.ts, 70, 5))
252-
>takesLiteral : Symbol(takesLiteral, Decl(templateLiteralTypes2.ts, 62, 33))
253-
>id2 : Symbol(id2, Decl(templateLiteralTypes2.ts, 69, 5))
279+
>t2 : Symbol(t2, Decl(templateLiteralTypes2.ts, 78, 5))
280+
>takesLiteral : Symbol(takesLiteral, Decl(templateLiteralTypes2.ts, 70, 1))
281+
>id2 : Symbol(id2, Decl(templateLiteralTypes2.ts, 77, 5))
254282

255283
declare const someString: string;
256-
>someString : Symbol(someString, Decl(templateLiteralTypes2.ts, 72, 13))
284+
>someString : Symbol(someString, Decl(templateLiteralTypes2.ts, 80, 13))
257285

258286
const t3 = takesLiteral(`foo.bar.${someString}`); // string
259-
>t3 : Symbol(t3, Decl(templateLiteralTypes2.ts, 73, 5))
260-
>takesLiteral : Symbol(takesLiteral, Decl(templateLiteralTypes2.ts, 62, 33))
261-
>someString : Symbol(someString, Decl(templateLiteralTypes2.ts, 72, 13))
287+
>t3 : Symbol(t3, Decl(templateLiteralTypes2.ts, 81, 5))
288+
>takesLiteral : Symbol(takesLiteral, Decl(templateLiteralTypes2.ts, 70, 1))
289+
>someString : Symbol(someString, Decl(templateLiteralTypes2.ts, 80, 13))
262290

263291
const id4 = `foo.bar.${someString}`;
264-
>id4 : Symbol(id4, Decl(templateLiteralTypes2.ts, 75, 5))
265-
>someString : Symbol(someString, Decl(templateLiteralTypes2.ts, 72, 13))
292+
>id4 : Symbol(id4, Decl(templateLiteralTypes2.ts, 83, 5))
293+
>someString : Symbol(someString, Decl(templateLiteralTypes2.ts, 80, 13))
266294

267295
const t4 = takesLiteral(id4); // string
268-
>t4 : Symbol(t4, Decl(templateLiteralTypes2.ts, 76, 5))
269-
>takesLiteral : Symbol(takesLiteral, Decl(templateLiteralTypes2.ts, 62, 33))
270-
>id4 : Symbol(id4, Decl(templateLiteralTypes2.ts, 75, 5))
296+
>t4 : Symbol(t4, Decl(templateLiteralTypes2.ts, 84, 5))
297+
>takesLiteral : Symbol(takesLiteral, Decl(templateLiteralTypes2.ts, 70, 1))
298+
>id4 : Symbol(id4, Decl(templateLiteralTypes2.ts, 83, 5))
271299

272300
declare const someUnion: 'abc' | 'def' | 'ghi';
273-
>someUnion : Symbol(someUnion, Decl(templateLiteralTypes2.ts, 78, 13))
301+
>someUnion : Symbol(someUnion, Decl(templateLiteralTypes2.ts, 86, 13))
274302

275303
const t5 = takesLiteral(`foo.bar.${someUnion}`); // "abc" | "def" | "ghi"
276-
>t5 : Symbol(t5, Decl(templateLiteralTypes2.ts, 79, 5))
277-
>takesLiteral : Symbol(takesLiteral, Decl(templateLiteralTypes2.ts, 62, 33))
278-
>someUnion : Symbol(someUnion, Decl(templateLiteralTypes2.ts, 78, 13))
304+
>t5 : Symbol(t5, Decl(templateLiteralTypes2.ts, 87, 5))
305+
>takesLiteral : Symbol(takesLiteral, Decl(templateLiteralTypes2.ts, 70, 1))
306+
>someUnion : Symbol(someUnion, Decl(templateLiteralTypes2.ts, 86, 13))
279307

280308
// Repro from #41732
281309

282310
const pixelValue: number = 22;
283-
>pixelValue : Symbol(pixelValue, Decl(templateLiteralTypes2.ts, 83, 5))
311+
>pixelValue : Symbol(pixelValue, Decl(templateLiteralTypes2.ts, 91, 5))
284312

285313
type PixelValueType = `${number}px`;
286-
>PixelValueType : Symbol(PixelValueType, Decl(templateLiteralTypes2.ts, 83, 30))
314+
>PixelValueType : Symbol(PixelValueType, Decl(templateLiteralTypes2.ts, 91, 30))
287315

288316
const pixelString: PixelValueType = `22px`;
289-
>pixelString : Symbol(pixelString, Decl(templateLiteralTypes2.ts, 87, 5))
290-
>PixelValueType : Symbol(PixelValueType, Decl(templateLiteralTypes2.ts, 83, 30))
317+
>pixelString : Symbol(pixelString, Decl(templateLiteralTypes2.ts, 95, 5))
318+
>PixelValueType : Symbol(PixelValueType, Decl(templateLiteralTypes2.ts, 91, 30))
291319

292320
const pixelStringWithTemplate: PixelValueType = `${pixelValue}px`;
293-
>pixelStringWithTemplate : Symbol(pixelStringWithTemplate, Decl(templateLiteralTypes2.ts, 89, 5))
294-
>PixelValueType : Symbol(PixelValueType, Decl(templateLiteralTypes2.ts, 83, 30))
295-
>pixelValue : Symbol(pixelValue, Decl(templateLiteralTypes2.ts, 83, 5))
321+
>pixelStringWithTemplate : Symbol(pixelStringWithTemplate, Decl(templateLiteralTypes2.ts, 97, 5))
322+
>PixelValueType : Symbol(PixelValueType, Decl(templateLiteralTypes2.ts, 91, 30))
323+
>pixelValue : Symbol(pixelValue, Decl(templateLiteralTypes2.ts, 91, 5))
296324

tests/baselines/reference/templateLiteralTypes2.types

+26
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,32 @@ function ft13(s: string, cond: boolean) {
257257
type T0 = string | `${number}px`;
258258
>T0 : string
259259

260+
function ft14(t: `foo${number}`) {
261+
>ft14 : (t: `foo${number}`) => void
262+
>t : `foo${number}`
263+
264+
let x1: string = t;
265+
>x1 : string
266+
>t : `foo${number}`
267+
268+
let x2: String = t;
269+
>x2 : String
270+
>t : `foo${number}`
271+
272+
let x3: Object = t;
273+
>x3 : Object
274+
>t : `foo${number}`
275+
276+
let x4: {} = t;
277+
>x4 : {}
278+
>t : `foo${number}`
279+
280+
let x6: { length: number } = t;
281+
>x6 : { length: number; }
282+
>length : number
283+
>t : `foo${number}`
284+
}
285+
260286
// Repro from #41631
261287

262288
declare function takesLiteral<T extends string>(literal: T): T extends `foo.bar.${infer R}` ? R : unknown;

tests/cases/conformance/types/literal/templateLiteralTypes2.ts

+8
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ function ft13(s: string, cond: boolean) {
6565

6666
type T0 = string | `${number}px`;
6767

68+
function ft14(t: `foo${number}`) {
69+
let x1: string = t;
70+
let x2: String = t;
71+
let x3: Object = t;
72+
let x4: {} = t;
73+
let x6: { length: number } = t;
74+
}
75+
6876
// Repro from #41631
6977

7078
declare function takesLiteral<T extends string>(literal: T): T extends `foo.bar.${infer R}` ? R : unknown;

0 commit comments

Comments
 (0)