RESOLVED FIXED 261815
[JSC] Stress tests have bogus asserts due to incorrectly negating `instanceof` operator
https://bugs.webkit.org/show_bug.cgi?id=261815
Summary [JSC] Stress tests have bogus asserts due to incorrectly negating `instanceof...
pablo.gobe
Reported 2023-09-20 04:33:52 PDT
`in` and `instanceof` expressions in JS ```js a in obj; a instanceof C; ``` can be negated by grouping them and applying the `!` operator, i.e. ```js !(a in obj); !(a instanceof C); ``` Applying the `!` operator incorrectly (on the LHS operand) leads to bugs: ```js !a in obj; // will evaluate to false, unless obj has a "true" or "false" key !a instanceof C; // will evaluate to false, unless C overrides instanceof with a @@hasInstance method ``` For more information, please see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof#not_an_instanceof and the no-unsafe-negation recommended Eslint rule, https://eslint.org/docs/latest/rules/no-unsafe-negation. I have found several potentially problematic instances of the above bugs in your codebase: `in` bugs: https://sourcegraph.com/search?q=context:global+repo:%5Egithub%5C.com/WebKit/WebKit%24+lang:javascript+/%5C%21%5B%5B:alnum:%5D%5C%27%5C%22%5D%2B+in+%5B%5B:alnum:%5D%5D%2B/+-file:%5C.min%5C.js%24+count:all&patternType=standard&sm=1&groupBy=repo `instanceof` bugs: https://sourcegraph.com/search?q=context:global+repo:%5Egithub%5C.com/WebKit/WebKit%24+lang:javascript+/%5C%21%5B%5B:alnum:%5D%5D%2B+instanceof+%5B%5B:alnum:%5D%5D%2B/+-file:%5C.min%5C.js%24+count:all&patternType=standard&sm=1&groupBy=repo
Attachments
Radar WebKit Bug Importer
Comment 1 2023-09-27 04:34:13 PDT
Alexey Shvayka
Comment 2 2024-02-27 22:07:32 PST
EWS
Comment 3 2024-02-28 00:36:01 PST
Committed 275433@main (d4af38db1147): <https://commits.webkit.org/275433@main> Reviewed commits have been landed. Closing PR #25215 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.