@@ -30,3 +30,28 @@ type Recurse2 = {
30
30
>Recurse1 : Symbol(Recurse1, Decl(recursiveMappedTypes.ts, 4, 1))
31
31
>K : Symbol(K, Decl(recursiveMappedTypes.ts, 11, 5))
32
32
}
33
+
34
+ // Repro from #27881
35
+
36
+ export type Circular<T> = {[P in keyof T]: Circular<T>};
37
+ >Circular : Symbol(Circular, Decl(recursiveMappedTypes.ts, 12, 1))
38
+ >T : Symbol(T, Decl(recursiveMappedTypes.ts, 16, 21))
39
+ >P : Symbol(P, Decl(recursiveMappedTypes.ts, 16, 28))
40
+ >T : Symbol(T, Decl(recursiveMappedTypes.ts, 16, 21))
41
+ >Circular : Symbol(Circular, Decl(recursiveMappedTypes.ts, 12, 1))
42
+ >T : Symbol(T, Decl(recursiveMappedTypes.ts, 16, 21))
43
+
44
+ type tup = [number, number, number, number];
45
+ >tup : Symbol(tup, Decl(recursiveMappedTypes.ts, 16, 56))
46
+
47
+ function foo(arg: Circular<tup>): tup {
48
+ >foo : Symbol(foo, Decl(recursiveMappedTypes.ts, 17, 44))
49
+ >arg : Symbol(arg, Decl(recursiveMappedTypes.ts, 19, 13))
50
+ >Circular : Symbol(Circular, Decl(recursiveMappedTypes.ts, 12, 1))
51
+ >tup : Symbol(tup, Decl(recursiveMappedTypes.ts, 16, 56))
52
+ >tup : Symbol(tup, Decl(recursiveMappedTypes.ts, 16, 56))
53
+
54
+ return arg;
55
+ >arg : Symbol(arg, Decl(recursiveMappedTypes.ts, 19, 13))
56
+ }
57
+
0 commit comments