diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-08-30 13:16:28 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-08-31 06:08:48 +0000 |
commit | ac3a9fd8f352b1d717334d16111d22d6c155e4e2 (patch) | |
tree | 17c12dbc09143103d060da062a5d9102d7c50f57 /src/qml/jsruntime/qv4generatorobject_p.h | |
parent | d457b919885fdbcc07f3414de64b0b50ebe8b263 (diff) |
Fix super property access
Super properties work in a rather special way by
accessing a 'home object' on the function object,
and reading from it's prototype.
Change-Id: I666334c9c27048c6c2ba6770dd8c9f56aecbee14
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4generatorobject_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4generatorobject_p.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/qml/jsruntime/qv4generatorobject_p.h b/src/qml/jsruntime/qv4generatorobject_p.h index f00f730344..55e6091ad5 100644 --- a/src/qml/jsruntime/qv4generatorobject_p.h +++ b/src/qml/jsruntime/qv4generatorobject_p.h @@ -75,7 +75,7 @@ struct GeneratorFunctionCtor : FunctionObject { struct GeneratorFunction : ScriptFunction { }; -struct MemberGeneratorFunction : ScriptFunction { +struct MemberGeneratorFunction : MemberFunction { }; struct GeneratorPrototype : FunctionObject { @@ -113,12 +113,14 @@ struct GeneratorFunction : ScriptFunction static ReturnedValue virtualCall(const FunctionObject *f, const Value *thisObject, const Value *argv, int argc); }; -struct MemberGeneratorFunction : GeneratorFunction +struct MemberGeneratorFunction : MemberFunction { - V4_OBJECT2(MemberGeneratorFunction, GeneratorFunction) + V4_OBJECT2(MemberGeneratorFunction, MemberFunction) V4_INTERNALCLASS(MemberGeneratorFunction) - static Heap::FunctionObject *create(ExecutionContext *scope, Function *function, String *name); + static Heap::FunctionObject *create(ExecutionContext *scope, Function *function, Object *homeObject, String *name); + static constexpr VTable::CallAsConstructor virtualCallAsConstructor = nullptr; + static ReturnedValue virtualCall(const FunctionObject *f, const Value *thisObject, const Value *argv, int argc); }; struct GeneratorPrototype : Object |