diff options
author | Robin Burchell <robin.burchell@crimson.no> | 2018-05-26 19:19:57 +0200 |
---|---|---|
committer | Robin Burchell <robin.burchell@crimson.no> | 2018-05-27 14:32:50 +0000 |
commit | 1f85383957abbc6863a8c75e9be7acbf08c6c2ad (patch) | |
tree | 14136a55a5c208fae43ad95b58cd80b907763fea /src/qml/jsruntime/qv4arrayobject_p.h | |
parent | 4bbd8859624da1cf396c09d5a0dd778c985118c0 (diff) |
qv4arrayobject: Implement Array.of from ES7
One small difficulty: We can't accurately tell whether a thisObject is a
constructor or not, so right now we're just swallowing all exceptions
and creating an array if they occur.
This isn't correct, but it isn't trivial to fix, either: I think we
would have to somehow mark our builtins that are constructors, and allow
those, but use the array fallback for other builtins, calling user functions
and bubbling up if they throw.
This is probably good enough for the time being though, as writing
something like:
function Test() { throw "Foo"; }
Array.of.call(Test)
... is probably not very likely, compared to more "usual" use.
Change-Id: Ied341a7fa9c3a7fd907e2815c019bc431171ce62
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4arrayobject_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4arrayobject_p.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4arrayobject_p.h b/src/qml/jsruntime/qv4arrayobject_p.h index 87eabd465a..bbb3ebd2de 100644 --- a/src/qml/jsruntime/qv4arrayobject_p.h +++ b/src/qml/jsruntime/qv4arrayobject_p.h @@ -79,6 +79,7 @@ struct ArrayPrototype: ArrayObject void init(ExecutionEngine *engine, Object *ctor); static ReturnedValue method_isArray(const FunctionObject *, const Value *thisObject, const Value *argv, int argc); + static ReturnedValue method_of(const FunctionObject *, const Value *thisObject, const Value *argv, int argc); static ReturnedValue method_toString(const FunctionObject *, const Value *thisObject, const Value *argv, int argc); static ReturnedValue method_toLocaleString(const FunctionObject *, const Value *thisObject, const Value *argv, int argc); static ReturnedValue method_concat(const FunctionObject *, const Value *thisObject, const Value *argv, int argc); |