diff --git a/src/resolver.ts b/src/resolver.ts index 8f90a76f3b..ca05a3424b 100644 --- a/src/resolver.ts +++ b/src/resolver.ts @@ -392,7 +392,7 @@ export class Resolver extends DiagnosticEmitter { break; } case ParameterKind.Rest: { - assert(i == numParameters); + assert(i == numParameters - 1); hasRest = true; break; } diff --git a/tests/compiler/issues/2707.json b/tests/compiler/issues/2707.json new file mode 100644 index 0000000000..5d2bf93db3 --- /dev/null +++ b/tests/compiler/issues/2707.json @@ -0,0 +1,7 @@ +{ + "asc_flags": [], + "stderr": [ + "AS100: Not implemented: Rest parameters", + "func(1, 2, 3, 4);" + ] +} diff --git a/tests/compiler/issues/2707.ts b/tests/compiler/issues/2707.ts new file mode 100644 index 0000000000..dc380b73d6 --- /dev/null +++ b/tests/compiler/issues/2707.ts @@ -0,0 +1,6 @@ +// should not crash +let func: (...args: i32[]) => i32 = (...args: i32[]) => { + return 1; +}; + +func(1, 2, 3, 4);