boa icon indicating copy to clipboard operation
boa copied to clipboard

Implement `new.target` expression

Open raskad opened this issue 2 years ago • 2 comments

This Pull Request changes the following:

  • Implement new.target expression

raskad avatar Sep 23 '22 16:09 raskad

Test262 conformance changes

VM implementation

Test result main count PR count difference
Total 92,057 92,057 0
Passed 68,612 68,694 +82
Ignored 16,832 16,832 0
Failed 6,613 6,531 -82
Panics 0 0 0
Conformance 74.53% 74.62% +0.09%
Fixed tests (84):
test/built-ins/Array/prototype/flatMap/this-value-ctor-object-species-custom-ctor-poisoned-throws.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/flatMap/this-value-ctor-object-species-custom-ctor-poisoned-throws.js (previously Failed)
test/built-ins/Array/prototype/flatMap/this-value-ctor-object-species-custom-ctor.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/flatMap/this-value-ctor-object-species-custom-ctor.js (previously Failed)
test/built-ins/Function/prototype/bind/instance-construct-newtarget-self-new.js [strict mode] (previously Failed)
test/built-ins/Function/prototype/bind/instance-construct-newtarget-self-new.js (previously Failed)
test/built-ins/Function/prototype/bind/instance-construct-newtarget-boundtarget-bound.js [strict mode] (previously Failed)
test/built-ins/Function/prototype/bind/instance-construct-newtarget-boundtarget-bound.js (previously Failed)
test/built-ins/Function/prototype/bind/instance-construct-newtarget-self-reflect.js [strict mode] (previously Failed)
test/built-ins/Function/prototype/bind/instance-construct-newtarget-self-reflect.js (previously Failed)
test/built-ins/Function/prototype/bind/instance-construct-newtarget-boundtarget.js [strict mode] (previously Failed)
test/built-ins/Function/prototype/bind/instance-construct-newtarget-boundtarget.js (previously Failed)
test/language/eval-code/direct/new.target-fn.js [strict mode] (previously Failed)
test/language/eval-code/direct/new.target-fn.js (previously Failed)
test/language/statements/class/static-init-expr-new-target.js [strict mode] (previously Failed)
test/language/statements/class/static-init-expr-new-target.js (previously Failed)
test/language/statements/class/async-method/returns-async-function-returns-newtarget.js [strict mode] (previously Failed)
test/language/statements/class/async-method/returns-async-function-returns-newtarget.js (previously Failed)
test/language/statements/class/async-method-static/returns-async-function-returns-newtarget.js [strict mode] (previously Failed)
test/language/statements/class/async-method-static/returns-async-function-returns-newtarget.js (previously Failed)
test/language/statements/class/elements/nested-private-direct-eval-err-contains-newtarget.js [strict mode] (previously Failed)
test/language/statements/class/elements/nested-private-direct-eval-err-contains-newtarget.js (previously Failed)
test/language/statements/class/elements/private-direct-eval-err-contains-newtarget.js [strict mode] (previously Failed)
test/language/statements/class/elements/private-direct-eval-err-contains-newtarget.js (previously Failed)
test/language/statements/class/elements/direct-eval-err-contains-newtarget.js [strict mode] (previously Failed)
test/language/statements/class/elements/direct-eval-err-contains-newtarget.js (previously Failed)
test/language/statements/class/elements/nested-direct-eval-err-contains-newtarget.js [strict mode] (previously Failed)
test/language/statements/class/elements/nested-direct-eval-err-contains-newtarget.js (previously Failed)
test/language/statements/class/elements/arrow-body-direct-eval-err-contains-newtarget.js [strict mode] (previously Failed)
test/language/statements/class/elements/arrow-body-direct-eval-err-contains-newtarget.js (previously Failed)
test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js [strict mode] (previously Failed)
test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js (previously Failed)
test/language/statements/async-function/returns-async-function-returns-newtarget.js [strict mode] (previously Failed)
test/language/statements/async-function/returns-async-function-returns-newtarget.js (previously Failed)
test/language/expressions/class/async-method/returns-async-function-returns-newtarget.js [strict mode] (previously Failed)
test/language/expressions/class/async-method/returns-async-function-returns-newtarget.js (previously Failed)
test/language/expressions/class/async-method-static/returns-async-function-returns-newtarget.js [strict mode] (previously Failed)
test/language/expressions/class/async-method-static/returns-async-function-returns-newtarget.js (previously Failed)
test/language/expressions/class/elements/nested-private-direct-eval-err-contains-newtarget.js [strict mode] (previously Failed)
test/language/expressions/class/elements/nested-private-direct-eval-err-contains-newtarget.js (previously Failed)
test/language/expressions/class/elements/private-direct-eval-err-contains-newtarget.js [strict mode] (previously Failed)
test/language/expressions/class/elements/private-direct-eval-err-contains-newtarget.js (previously Failed)
test/language/expressions/class/elements/direct-eval-err-contains-newtarget.js [strict mode] (previously Failed)
test/language/expressions/class/elements/direct-eval-err-contains-newtarget.js (previously Failed)
test/language/expressions/class/elements/nested-direct-eval-err-contains-newtarget.js [strict mode] (previously Failed)
test/language/expressions/class/elements/nested-direct-eval-err-contains-newtarget.js (previously Failed)
test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-newtarget.js [strict mode] (previously Failed)
test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-newtarget.js (previously Failed)
test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js [strict mode] (previously Failed)
test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js (previously Failed)
test/language/expressions/arrow-function/lexical-new.target.js [strict mode] (previously Failed)
test/language/expressions/arrow-function/lexical-new.target.js (previously Failed)
test/language/expressions/arrow-function/lexical-new.target-closure-returned.js [strict mode] (previously Failed)
test/language/expressions/arrow-function/lexical-new.target-closure-returned.js (previously Failed)
test/language/expressions/super/call-construct-invocation.js [strict mode] (previously Failed)
test/language/expressions/super/call-construct-invocation.js (previously Failed)
test/language/expressions/async-function/named-returns-async-function-returns-newtarget.js [strict mode] (previously Failed)
test/language/expressions/async-function/named-returns-async-function-returns-newtarget.js (previously Failed)
test/language/expressions/new.target/value-via-call.js [strict mode] (previously Failed)
test/language/expressions/new.target/value-via-call.js (previously Failed)
test/language/expressions/new.target/asi.js [strict mode] (previously Failed)
test/language/expressions/new.target/asi.js (previously Failed)
test/language/expressions/new.target/value-via-fpapply.js [strict mode] (previously Failed)
test/language/expressions/new.target/value-via-fpapply.js (previously Failed)
test/language/expressions/new.target/value-via-member.js [strict mode] (previously Failed)
test/language/expressions/new.target/value-via-member.js (previously Failed)
test/language/expressions/new.target/value-via-reflect-construct.js [strict mode] (previously Failed)
test/language/expressions/new.target/value-via-reflect-construct.js (previously Failed)
test/language/expressions/new.target/unary-expr.js [strict mode] (previously Failed)
test/language/expressions/new.target/unary-expr.js (previously Failed)
test/language/expressions/new.target/value-via-tagged-template.js [strict mode] (previously Failed)
test/language/expressions/new.target/value-via-tagged-template.js (previously Failed)
test/language/expressions/new.target/value-via-reflect-apply.js [strict mode] (previously Failed)
test/language/expressions/new.target/value-via-reflect-apply.js (previously Failed)
test/language/expressions/new.target/value-via-super-property.js [strict mode] (previously Failed)
test/language/expressions/new.target/value-via-super-property.js (previously Failed)
test/language/expressions/new.target/value-via-fpcall.js [strict mode] (previously Failed)
test/language/expressions/new.target/value-via-fpcall.js (previously Failed)
test/language/expressions/new.target/value-via-new.js [strict mode] (previously Failed)
test/language/expressions/new.target/value-via-new.js (previously Failed)
test/language/expressions/new.target/value-via-super-call.js [strict mode] (previously Failed)
test/language/expressions/new.target/value-via-super-call.js (previously Failed)
test/language/expressions/object/method-definition/async-returns-async-function-returns-newtarget.js [strict mode] (previously Failed)
test/language/expressions/object/method-definition/async-returns-async-function-returns-newtarget.js (previously Failed)
Broken tests (2):
test/language/expressions/new.target/escaped-target.js [strict mode] (previously Passed)
test/language/expressions/new.target/escaped-target.js (previously Passed)

github-actions[bot] avatar Sep 23 '22 16:09 github-actions[bot]

Codecov Report

Merging #2299 (fd0e23d) into main (77e739c) will decrease coverage by 0.01%. The diff coverage is 10.00%.

@@            Coverage Diff             @@
##             main    #2299      +/-   ##
==========================================
- Coverage   41.23%   41.21%   -0.02%     
==========================================
  Files         237      237              
  Lines       22342    22373      +31     
==========================================
+ Hits         9212     9221       +9     
- Misses      13130    13152      +22     
Impacted Files Coverage Δ
boa_engine/src/bytecompiler/mod.rs 29.28% <0.00%> (-0.05%) :arrow_down:
boa_engine/src/syntax/ast/node/mod.rs 62.45% <ø> (+0.14%) :arrow_up:
boa_engine/src/vm/code_block.rs 32.63% <ø> (ø)
boa_engine/src/vm/mod.rs 45.78% <0.00%> (-0.11%) :arrow_down:
boa_engine/src/vm/opcode.rs 50.00% <ø> (ø)
boa_interner/src/sym.rs 0.00% <ø> (ø)
boa_engine/src/syntax/parser/mod.rs 24.19% <7.14%> (-2.60%) :arrow_down:
.../syntax/parser/expression/left_hand_side/member.rs 35.23% <22.22%> (-2.91%) :arrow_down:
boa_engine/src/syntax/ast/node/spread/mod.rs 57.14% <0.00%> (-14.29%) :arrow_down:
boa_engine/src/syntax/parser/expression/unary.rs 47.16% <0.00%> (-1.89%) :arrow_down:
... and 25 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

codecov[bot] avatar Sep 23 '22 16:09 codecov[bot]

bors r+

jedel1043 avatar Sep 25 '22 19:09 jedel1043

Pull request successfully merged into main.

Build succeeded:

bors[bot] avatar Sep 25 '22 19:09 bors[bot]