boa
boa copied to clipboard
Fix spread arguments in function calls
Currently we only spread spread-expressions if they are the last argument in the function call. With this fix all arguments are spread if needed. The downside is that an array object is allocated to store all arguments if the arguments contain a spread-expression. But with dense indexed properties inplemented in #2167 this should be reasonably fast.
Test262 conformance changes
VM implementation
Test result | main count | PR count | difference |
---|---|---|---|
Total | 91,573 | 91,573 | 0 |
Passed | 64,752 | 64,828 | +76 |
Ignored | 14,606 | 14,606 | 0 |
Failed | 12,215 | 12,139 | -76 |
Panics | 0 | 0 | 0 |
Conformance | 70.71% | 70.79% | +0.08% |
Fixed tests (76):
test/language/expressions/call/eval-spread-empty-leading.js [strict mode] (previously Failed)
test/language/expressions/call/eval-spread-empty-leading.js (previously Failed)
test/language/expressions/call/spread-mult-literal.js [strict mode] (previously Failed)
test/language/expressions/call/spread-mult-literal.js (previously Failed)
test/language/expressions/new/spread-mult-literal.js [strict mode] (previously Failed)
test/language/expressions/new/spread-mult-literal.js (previously Failed)
test/language/expressions/super/call-spread-mult-literal.js [strict mode] (previously Failed)
test/language/expressions/super/call-spread-mult-literal.js (previously Failed)
test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/async-gen-named-func-expr-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-expr-async-private-gen-meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-decl-async-gen-meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-decl-private-gen-meth-static-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-decl-meth-static-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-expr-gen-meth-static-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-expr-private-meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-decl-private-meth-static-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-expr-private-gen-meth-static-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/async-gen-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/async-gen-meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/func-decl-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/func-decl-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-decl-async-gen-func-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-decl-async-gen-meth-static-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-expr-private-meth-static-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/gen-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/gen-meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-decl-gen-meth-static-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-expr-async-gen-func-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-decl-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-decl-meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-expr-async-gen-meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/gen-func-expr-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/gen-func-expr-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/func-expr-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/func-expr-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-expr-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-expr-meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-expr-private-gen-meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-decl-async-private-gen-meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-decl-private-meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-expr-async-gen-meth-static-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-decl-async-private-gen-meth-static-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-decl-private-gen-meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-expr-async-private-gen-meth-static-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-expr-gen-meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/gen-func-decl-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/gen-func-decl-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-expr-meth-static-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/meth-args-trailing-comma-spread-operator.js (previously Failed)
test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-spread-operator.js [strict mode] (previously Failed)
test/language/arguments-object/cls-decl-gen-meth-args-trailing-comma-spread-operator.js (previously Failed)
Codecov Report
Merging #2216 (7018a0c) into main (5909e9a) will decrease coverage by
0.02%
. The diff coverage is38.46%
.
@@ Coverage Diff @@
## main #2216 +/- ##
==========================================
- Coverage 41.54% 41.51% -0.03%
==========================================
Files 234 234
Lines 21891 21878 -13
==========================================
- Hits 9094 9083 -11
+ Misses 12797 12795 -2
Impacted Files | Coverage Δ | |
---|---|---|
boa_engine/src/vm/code_block.rs | 32.80% <ø> (ø) |
|
boa_engine/src/vm/opcode.rs | 50.00% <ø> (ø) |
|
boa_engine/src/bytecompiler/mod.rs | 29.35% <32.14%> (-0.10%) |
:arrow_down: |
boa_engine/src/object/property_map.rs | 27.34% <50.00%> (+0.18%) |
:arrow_up: |
boa_engine/src/vm/mod.rs | 46.63% <55.55%> (-0.09%) |
:arrow_down: |
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.
bors r+
Pull request successfully merged into main.
Build succeeded: