···10471047compat-table/es6/regex.flags.y.lastIndex.js: OK
10481048compat-table/es6/rest-params.arguments.js: OK
10491049compat-table/es6/rest-params.basic.js: OK
10501050-compat-table/es6/rest-params.length.js: failed
10501050+compat-table/es6/rest-params.length.js: OK
10511051compat-table/es6/rest-params.new-function.js: OK
10521052-compat-table/es6/rest-params.no-setter.js: failed
10521052+compat-table/es6/rest-params.no-setter.js: OK
10531053compat-table/es6/spread.array-call.js: OK
10541054compat-table/es6/spread.array-literal.js: OK
10551055compat-table/es6/spread.astral-call.js: OK
+10
examples/spec/functions.js
···3434 return first + rest.length;
3535}
3636test('rest params', restParams(1, 2, 3, 4), 4);
3737+test('rest params length excludes rest', restParams.length, 1);
3838+test('rest-only params length is zero', ((...rest) => rest.length).length, 0);
3939+4040+let restSetterRejected = false;
4141+try {
4242+ eval('({ set value(...rest) {} })');
4343+} catch (e) {
4444+ restSetterRejected = true;
4545+}
4646+test('rest params rejected in setter', restSetterRejected, true);
37473848function spreadCall(a, b, c) {
3949 return a + b + c;
+2-1
include/silver/engine.h
···180180 int max_locals;
181181 int max_stack;
182182 int local_type_count;
183183- int param_count;
184183 int upvalue_count;
185184 int srcpos_count;
186185 int source_line;
···190189191190 uint16_t ic_count;
192191 uint16_t obj_site_count;
192192+ uint16_t param_count;
193193+ uint16_t function_length;
193194194195 bool is_strict;
195196 bool is_arrow;