|
| 1 | +=== tests/cases/compiler/typePredicateInLoop.ts === |
| 2 | +// Repro from #12101 |
| 3 | + |
| 4 | +interface Type { |
| 5 | +>Type : Symbol(Type, Decl(typePredicateInLoop.ts, 0, 0)) |
| 6 | + |
| 7 | + type: number; |
| 8 | +>type : Symbol(Type.type, Decl(typePredicateInLoop.ts, 2, 16)) |
| 9 | +} |
| 10 | + |
| 11 | +interface TypeExt extends Type { |
| 12 | +>TypeExt : Symbol(TypeExt, Decl(typePredicateInLoop.ts, 4, 1)) |
| 13 | +>Type : Symbol(Type, Decl(typePredicateInLoop.ts, 0, 0)) |
| 14 | + |
| 15 | + arr: Type[]; |
| 16 | +>arr : Symbol(TypeExt.arr, Decl(typePredicateInLoop.ts, 6, 32)) |
| 17 | +>Type : Symbol(Type, Decl(typePredicateInLoop.ts, 0, 0)) |
| 18 | +} |
| 19 | + |
| 20 | +const guard = (arg: Type): arg is TypeExt => arg.type === 1; |
| 21 | +>guard : Symbol(guard, Decl(typePredicateInLoop.ts, 10, 5)) |
| 22 | +>arg : Symbol(arg, Decl(typePredicateInLoop.ts, 10, 15)) |
| 23 | +>Type : Symbol(Type, Decl(typePredicateInLoop.ts, 0, 0)) |
| 24 | +>arg : Symbol(arg, Decl(typePredicateInLoop.ts, 10, 15)) |
| 25 | +>TypeExt : Symbol(TypeExt, Decl(typePredicateInLoop.ts, 4, 1)) |
| 26 | +>arg.type : Symbol(Type.type, Decl(typePredicateInLoop.ts, 2, 16)) |
| 27 | +>arg : Symbol(arg, Decl(typePredicateInLoop.ts, 10, 15)) |
| 28 | +>type : Symbol(Type.type, Decl(typePredicateInLoop.ts, 2, 16)) |
| 29 | + |
| 30 | +const otherFunc = (arg1: Type, arg2: TypeExt): void => {}; |
| 31 | +>otherFunc : Symbol(otherFunc, Decl(typePredicateInLoop.ts, 11, 5)) |
| 32 | +>arg1 : Symbol(arg1, Decl(typePredicateInLoop.ts, 11, 19)) |
| 33 | +>Type : Symbol(Type, Decl(typePredicateInLoop.ts, 0, 0)) |
| 34 | +>arg2 : Symbol(arg2, Decl(typePredicateInLoop.ts, 11, 30)) |
| 35 | +>TypeExt : Symbol(TypeExt, Decl(typePredicateInLoop.ts, 4, 1)) |
| 36 | + |
| 37 | +export function y(arg: Type): void { |
| 38 | +>y : Symbol(y, Decl(typePredicateInLoop.ts, 11, 58)) |
| 39 | +>arg : Symbol(arg, Decl(typePredicateInLoop.ts, 13, 18)) |
| 40 | +>Type : Symbol(Type, Decl(typePredicateInLoop.ts, 0, 0)) |
| 41 | + |
| 42 | + if (guard(arg)) { |
| 43 | +>guard : Symbol(guard, Decl(typePredicateInLoop.ts, 10, 5)) |
| 44 | +>arg : Symbol(arg, Decl(typePredicateInLoop.ts, 13, 18)) |
| 45 | + |
| 46 | + for (const ITEM of arg.arr) { |
| 47 | +>ITEM : Symbol(ITEM, Decl(typePredicateInLoop.ts, 15, 14)) |
| 48 | +>arg.arr : Symbol(TypeExt.arr, Decl(typePredicateInLoop.ts, 6, 32)) |
| 49 | +>arg : Symbol(arg, Decl(typePredicateInLoop.ts, 13, 18)) |
| 50 | +>arr : Symbol(TypeExt.arr, Decl(typePredicateInLoop.ts, 6, 32)) |
| 51 | + |
| 52 | + if (otherFunc(ITEM, arg)) { |
| 53 | +>otherFunc : Symbol(otherFunc, Decl(typePredicateInLoop.ts, 11, 5)) |
| 54 | +>ITEM : Symbol(ITEM, Decl(typePredicateInLoop.ts, 15, 14)) |
| 55 | +>arg : Symbol(arg, Decl(typePredicateInLoop.ts, 13, 18)) |
| 56 | + } |
| 57 | + } |
| 58 | + } |
| 59 | +} |
0 commit comments