diff options
-rw-r--r-- | src/qml/jsruntime/qv4runtime.cpp | 11 | ||||
-rw-r--r-- | tests/auto/qml/ecmascripttests/TestExpectations | 2 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp index edaa0a8e63..3317003ea4 100644 --- a/src/qml/jsruntime/qv4runtime.cpp +++ b/src/qml/jsruntime/qv4runtime.cpp @@ -917,11 +917,12 @@ ReturnedValue Runtime::method_loadSuperConstructor(ExecutionEngine *engine, cons return engine->throwReferenceError(QStringLiteral("super() already called."), QString(), 0, 0); // ### fix line number } const FunctionObject *f = t.as<FunctionObject>(); - if (!f || !f->isConstructor()) { - engine->throwTypeError(); - return Encode::undefined(); - } - return static_cast<const Object &>(t).getPrototypeOf()->asReturnedValue(); + if (!f) + return engine->throwTypeError(); + Heap::Object *c = static_cast<const Object &>(t).getPrototypeOf(); + if (!c->vtable()->isFunctionObject || !static_cast<Heap::FunctionObject *>(c)->isConstructor()) + return engine->throwTypeError(); + return c->asReturnedValue(); } diff --git a/tests/auto/qml/ecmascripttests/TestExpectations b/tests/auto/qml/ecmascripttests/TestExpectations index 52a2736ddf..bc19b2b65d 100644 --- a/tests/auto/qml/ecmascripttests/TestExpectations +++ b/tests/auto/qml/ecmascripttests/TestExpectations @@ -942,7 +942,6 @@ language/expressions/prefix-increment/S11.4.4_A5_T3.js sloppyFails language/expressions/prefix-increment/S11.4.4_A5_T4.js sloppyFails language/expressions/prefix-increment/S11.4.4_A5_T5.js fails language/expressions/prefix-increment/S11.4.4_A6_T3.js fails -language/expressions/super/call-proto-not-ctor.js fails language/expressions/super/prop-dot-cls-null-proto.js fails language/expressions/super/prop-dot-cls-ref-strict.js fails language/expressions/super/prop-dot-cls-ref-this.js fails @@ -1115,7 +1114,6 @@ language/statements/class/subclass/builtin-objects/TypedArray/super-must-be-call language/statements/class/subclass/builtin-objects/WeakMap/super-must-be-called.js fails language/statements/class/subclass/builtin-objects/WeakSet/super-must-be-called.js fails language/statements/class/subclass/builtins.js fails -language/statements/class/subclass/class-definition-null-proto-super.js fails language/statements/class/subclass/class-definition-null-proto-this.js fails language/statements/class/subclass/default-constructor-spread-override.js fails language/statements/class/super/in-methods.js fails |