|
| 1 | +=== tests/cases/compiler/restParameterTypeInstantiation.ts === |
| 2 | +// Repro from #33823 |
| 3 | + |
| 4 | +interface TestGeneric<TG> { |
| 5 | +>TestGeneric : Symbol(TestGeneric, Decl(restParameterTypeInstantiation.ts, 0, 0)) |
| 6 | +>TG : Symbol(TG, Decl(restParameterTypeInstantiation.ts, 2, 22)) |
| 7 | + |
| 8 | + f: string |
| 9 | +>f : Symbol(TestGeneric.f, Decl(restParameterTypeInstantiation.ts, 2, 27)) |
| 10 | + |
| 11 | + g: TG |
| 12 | +>g : Symbol(TestGeneric.g, Decl(restParameterTypeInstantiation.ts, 3, 11)) |
| 13 | +>TG : Symbol(TG, Decl(restParameterTypeInstantiation.ts, 2, 22)) |
| 14 | +} |
| 15 | + |
| 16 | +const removeF = <TX>({ f, ...rest }: TestGeneric<TX>) => { |
| 17 | +>removeF : Symbol(removeF, Decl(restParameterTypeInstantiation.ts, 7, 5)) |
| 18 | +>TX : Symbol(TX, Decl(restParameterTypeInstantiation.ts, 7, 17)) |
| 19 | +>f : Symbol(f, Decl(restParameterTypeInstantiation.ts, 7, 22)) |
| 20 | +>rest : Symbol(rest, Decl(restParameterTypeInstantiation.ts, 7, 25)) |
| 21 | +>TestGeneric : Symbol(TestGeneric, Decl(restParameterTypeInstantiation.ts, 0, 0)) |
| 22 | +>TX : Symbol(TX, Decl(restParameterTypeInstantiation.ts, 7, 17)) |
| 23 | + |
| 24 | + return rest |
| 25 | +>rest : Symbol(rest, Decl(restParameterTypeInstantiation.ts, 7, 25)) |
| 26 | +} |
| 27 | + |
| 28 | +const result: number = removeF<number>({ f: '', g: 3 }).g |
| 29 | +>result : Symbol(result, Decl(restParameterTypeInstantiation.ts, 11, 5)) |
| 30 | +>removeF<number>({ f: '', g: 3 }).g : Symbol(TestGeneric.g, Decl(restParameterTypeInstantiation.ts, 3, 11)) |
| 31 | +>removeF : Symbol(removeF, Decl(restParameterTypeInstantiation.ts, 7, 5)) |
| 32 | +>f : Symbol(f, Decl(restParameterTypeInstantiation.ts, 11, 40)) |
| 33 | +>g : Symbol(g, Decl(restParameterTypeInstantiation.ts, 11, 47)) |
| 34 | +>g : Symbol(TestGeneric.g, Decl(restParameterTypeInstantiation.ts, 3, 11)) |
| 35 | + |
0 commit comments