-
Notifications
You must be signed in to change notification settings - Fork 461
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve coverage for reference type in various contexts #4216
Conversation
...ring/binding/keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js
Show resolved
Hide resolved
...estructuring/keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js
Show resolved
Hide resolved
test/language/expressions/super/prop-expr-uninitialized-this-getvalue.js
Show resolved
Hide resolved
test/language/expressions/super/prop-expr-uninitialized-this-putvalue-compound-assign.js
Show resolved
Hide resolved
test/language/expressions/super/prop-expr-uninitialized-this-putvalue-increment.js
Show resolved
Hide resolved
test/language/expressions/super/prop-expr-uninitialized-this-putvalue.js
Show resolved
Hide resolved
@linusg Do you need these flags because your implementation doesn't support these features? I'm asking because other files in the same directories are already omitting some flags. Unless it's necessary for some actual implementation, I'd prefer to omit flags for language features which were added years ago. |
Personally I've never used the flags, IMO evergreen engines don't need them. A failure is a failure and filtering doesn't change that. The comments are just for completeness, feel free to disregard them if the maintainers agree that we don't need to be strict about flags 👍 |
We in fact do want every test to have flags for every feature, even ones added many years ago (we also want to avoid newer syntax when it's not strictly necessary for the test) |
No, that's not what's documented in features.txt. |
ok, but that's the current policy of the maintainers (and the existence of |
Is this documented anywhere? For example #3196 (comment) and #3665 (comment) don't state that it's a strict requirement to name each and every feature. |
It's indeed not a strict requirement - but we still want everything to have them. |
…ermonkey-reviewers,jandem The spec PR reordered the `ToPropertyKey` call to happen in `GetValue` resp. `PutValue`, which means it has to happen after `GetSuperBase`. Tests are included in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220825
…ing destructured element. r=arai `BytecodeEmitter::emitDestructuringLHSRef` needs to call `NameOpEmitter::prepareForRhs` to emit the necessary steps to resolve environment bindings. To avoid adding a new `skipPrepareForRhs` method to `NameOpEmitter`, instead pass `DestructuringLHSRef&` to `emitDestructuringLHSRef`, where `DestructuringLHSRef` holds the emitter for the destructuring left-hand side reference. Tests are in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220828
I should nuance my position on the policy - All other things being equal I'd prefer to have exhaustive flags, but I also don't think we should be putting that burden on people who contribute tests, so I'd much rather pursue that via codemods. |
…ermonkey-reviewers,jandem The spec PR reordered the `ToPropertyKey` call to happen in `GetValue` resp. `PutValue`, which means it has to happen after `GetSuperBase`. Tests are included in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220825
…ing destructured element. r=arai `BytecodeEmitter::emitDestructuringLHSRef` needs to call `NameOpEmitter::prepareForRhs` to emit the necessary steps to resolve environment bindings. To avoid adding a new `skipPrepareForRhs` method to `NameOpEmitter`, instead pass `DestructuringLHSRef&` to `emitDestructuringLHSRef`, where `DestructuringLHSRef` holds the emitter for the destructuring left-hand side reference. Tests are in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220828
…ermonkey-reviewers,jandem The spec PR reordered the `ToPropertyKey` call to happen in `GetValue` resp. `PutValue`, which means it has to happen after `GetSuperBase`. Tests are included in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220825
…ing destructured element. r=arai `BytecodeEmitter::emitDestructuringLHSRef` needs to call `NameOpEmitter::prepareForRhs` to emit the necessary steps to resolve environment bindings. To avoid adding a new `skipPrepareForRhs` method to `NameOpEmitter`, instead pass `DestructuringLHSRef&` to `emitDestructuringLHSRef`, where `DestructuringLHSRef` holds the emitter for the destructuring left-hand side reference. Tests are in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220828
…ermonkey-reviewers,jandem The spec PR reordered the `ToPropertyKey` call to happen in `GetValue` resp. `PutValue`, which means it has to happen after `GetSuperBase`. Tests are included in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220825 UltraBlame original commit: c4fbbb9b19cc19b8836de939b5561964b4058030
…ing destructured element. r=arai `BytecodeEmitter::emitDestructuringLHSRef` needs to call `NameOpEmitter::prepareForRhs` to emit the necessary steps to resolve environment bindings. To avoid adding a new `skipPrepareForRhs` method to `NameOpEmitter`, instead pass `DestructuringLHSRef&` to `emitDestructuringLHSRef`, where `DestructuringLHSRef` holds the emitter for the destructuring left-hand side reference. Tests are in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220828 UltraBlame original commit: 5a9e48dab16e9706ff963d6155df153acb6a0354
…ermonkey-reviewers,jandem The spec PR reordered the `ToPropertyKey` call to happen in `GetValue` resp. `PutValue`, which means it has to happen after `GetSuperBase`. Tests are included in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220825 UltraBlame original commit: e7e456e896ff809e6883f37dc5ba8c6a30e0c3d6
…ing destructured element. r=arai `BytecodeEmitter::emitDestructuringLHSRef` needs to call `NameOpEmitter::prepareForRhs` to emit the necessary steps to resolve environment bindings. To avoid adding a new `skipPrepareForRhs` method to `NameOpEmitter`, instead pass `DestructuringLHSRef&` to `emitDestructuringLHSRef`, where `DestructuringLHSRef` holds the emitter for the destructuring left-hand side reference. Tests are in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220828 UltraBlame original commit: 4c26da6ff32617ca7b277a16949419a7ab28ac5b
…ermonkey-reviewers,jandem The spec PR reordered the `ToPropertyKey` call to happen in `GetValue` resp. `PutValue`, which means it has to happen after `GetSuperBase`. Tests are included in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220825 UltraBlame original commit: c4fbbb9b19cc19b8836de939b5561964b4058030
…ing destructured element. r=arai `BytecodeEmitter::emitDestructuringLHSRef` needs to call `NameOpEmitter::prepareForRhs` to emit the necessary steps to resolve environment bindings. To avoid adding a new `skipPrepareForRhs` method to `NameOpEmitter`, instead pass `DestructuringLHSRef&` to `emitDestructuringLHSRef`, where `DestructuringLHSRef` holds the emitter for the destructuring left-hand side reference. Tests are in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220828 UltraBlame original commit: 5a9e48dab16e9706ff963d6155df153acb6a0354
…ermonkey-reviewers,jandem The spec PR reordered the `ToPropertyKey` call to happen in `GetValue` resp. `PutValue`, which means it has to happen after `GetSuperBase`. Tests are included in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220825 UltraBlame original commit: e7e456e896ff809e6883f37dc5ba8c6a30e0c3d6
…ing destructured element. r=arai `BytecodeEmitter::emitDestructuringLHSRef` needs to call `NameOpEmitter::prepareForRhs` to emit the necessary steps to resolve environment bindings. To avoid adding a new `skipPrepareForRhs` method to `NameOpEmitter`, instead pass `DestructuringLHSRef&` to `emitDestructuringLHSRef`, where `DestructuringLHSRef` holds the emitter for the destructuring left-hand side reference. Tests are in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220828 UltraBlame original commit: 4c26da6ff32617ca7b277a16949419a7ab28ac5b
…ermonkey-reviewers,jandem The spec PR reordered the `ToPropertyKey` call to happen in `GetValue` resp. `PutValue`, which means it has to happen after `GetSuperBase`. Tests are included in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220825
…ing destructured element. r=arai `BytecodeEmitter::emitDestructuringLHSRef` needs to call `NameOpEmitter::prepareForRhs` to emit the necessary steps to resolve environment bindings. To avoid adding a new `skipPrepareForRhs` method to `NameOpEmitter`, instead pass `DestructuringLHSRef&` to `emitDestructuringLHSRef`, where `DestructuringLHSRef` holds the emitter for the destructuring left-hand side reference. Tests are in <tc39/test262#4216>. Differential Revision: https://phabricator.services.mozilla.com/D220828
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are nasty. Thanks.
...ring/binding/keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js
Outdated
Show resolved
Hide resolved
...ring/binding/keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js
Outdated
Show resolved
Hide resolved
...ring/binding/keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js
Show resolved
Hide resolved
|
||
var key = { | ||
toString() { | ||
Object.setPrototypeOf(obj, proto2); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One might assert that this method is called only once
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think I'd prefer to not assert this, because otherwise V8 will have to skip this test, because V8 evaluates obj[key] += value
as obj[key] = obj[key] + value
, which evaluates ToPropertyKey(key)
twice. And if we don't assert how many times ToPropertyKey(key)
is evaluated, V8 is more likely to not skip this test, so there's maybe more incentive for V8 to fix their implementation to evaluate GetSuperBase
before ToPropertyKey
.
3ec4db9
to
5a2237d
Compare
Missing coverage encountered while implementing <tc39/ecma262#3307> in SpiderMonkey. Ensure environment lookups are performed in the correct order: - keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js Ensure `delete super[elem]` steps are correctly performed: - delete/super-property-topropertykey.js - delete/super-property-uninitialized-this.js Ensure ToPropertyKey for computed property names in object literals correctly performed: - object/computed-property-name-topropertykey-before-value-evaluation.js Ensure `GetSuperBase` is executed before `ToPropertKey`: - super/prop-expr-getsuperbase-before-topropertykey-* Ensure `GetThisBinding` is executed first: - super/prop-expr-uninitialized-this-*
5a2237d
to
d9c88d3
Compare
Missing coverage encountered while implementing
tc39/ecma262#3307 in SpiderMonkey.
Ensure environment lookups are performed in the correct order:
Ensure
delete super[elem]
steps are correctly performed:Ensure ToPropertyKey for computed property names in object literals correctly performed:
Ensure
GetSuperBase
is executed beforeToPropertKey
:Ensure
GetThisBinding
is executed first: