Bug 261815

Summary: [JSC] Stress tests have bogus asserts due to incorrectly negating `instanceof` operator
Product: WebKit Reporter: pablo.gobe
Component: Tools / TestsAssignee: Alexey Shvayka <ashvayka>
Status: RESOLVED FIXED    
Severity: Normal CC: ahmad.saleem792, ashvayka, mark.lam, webkit-bug-importer, ysuzuki
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: All   
OS: All   

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.