Bug 193057
| Summary: | Extending a bound function of a non-costructor should throw a TypeError | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | webkit |
| Component: | JavaScriptCore | Assignee: | Nobody <webkit-unassigned> |
| Status: | RESOLVED DUPLICATE | ||
| Severity: | Normal | CC: | ashvayka, ljharb, ross.kirsling |
| Priority: | P2 | ||
| Version: | Safari 12 | ||
| Hardware: | Mac | ||
| OS: | macOS 10.14 | ||
webkit
Attempting to extend a bound function whose underlying function is not a constructor (like an arrow function, a generator, etc.) should result in a TypeError as per the specification (https://www.ecma-international.org/ecma-262/9.0/index.html#sec-runtime-semantics-classdefinitionevaluation).
// Test case
const A = (_=>_).bind();
A.prototype = null;
class B extends A {}
// Expected behavior: TypeError should be thrown
// Actual behavior: No error is thrown
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Ross Kirsling
Looking through our failure list, this doesn't appear to have a test262 test.
Would you be interested in adding one there?
https://github.com/tc39/test262
Alexey Shvayka
(In reply to Ross Kirsling from comment #1)
> Looking through our failure list, this doesn't appear to have a test262 test.
JSC doesn't perform IsConstructor during ClassDefinitionEvaluation, failing https://test262.report/browse/language/statements/class/subclass/class-definition-superclass-generator.js. https://webkit.org/b/144093 should fix it.
I am adding a few more tests with bound/proxied arrow/async functions in https://github.com/tc39/test262/pull/2619.
*** This bug has been marked as a duplicate of bug 144093 ***