aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4proxy.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-06-17 22:06:45 +0200
committerLars Knoll <lars.knoll@qt.io>2018-06-25 07:36:22 +0000
commit3e1bb90da4c44455c8c307e01876cc2127bdb15c (patch)
tree6b9278e2612fe71ce84273857babf8494b8d91bc /src/qml/jsruntime/qv4proxy.cpp
parentf5a7953df3cb61edc6cc30175ea4f7f1c97deae6 (diff)
Implement a virtual interface for getOwnProperty
This is required to support Proxy properly, and at the same time fixes a couple of test failures. The new interface also replaces the old query and queryIndexed virtual interfaces, as those where doing a subset of what getOwnProperty does. Change-Id: I750e366b475ce971d6d9edf35fa17b7a2b07f771 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4proxy.cpp')
-rw-r--r--src/qml/jsruntime/qv4proxy.cpp9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/qml/jsruntime/qv4proxy.cpp b/src/qml/jsruntime/qv4proxy.cpp
index b34af97870..11000123f6 100644
--- a/src/qml/jsruntime/qv4proxy.cpp
+++ b/src/qml/jsruntime/qv4proxy.cpp
@@ -81,8 +81,7 @@ ReturnedValue ProxyObject::get(const Managed *m, StringOrSymbol *name, bool *has
ScopedValue trapResult(scope, static_cast<const FunctionObject *>(trap.ptr)->call(cdata));
ScopedProperty targetDesc(scope);
- PropertyAttributes attributes;
- target->getOwnProperty(name, &attributes, targetDesc);
+ PropertyAttributes attributes = target->getOwnProperty(name->toPropertyKey(), targetDesc);
if (attributes != Attr_Invalid && !attributes.isConfigurable()) {
if (attributes.isData() && !attributes.isWritable()) {
if (!trapResult->sameValue(targetDesc->value))
@@ -131,8 +130,7 @@ bool ProxyObject::put(Managed *m, StringOrSymbol *name, const Value &value)
if (!trapResult->toBoolean())
return false;
ScopedProperty targetDesc(scope);
- PropertyAttributes attributes;
- target->getOwnProperty(name, &attributes, targetDesc);
+ PropertyAttributes attributes = target->getOwnProperty(name->toPropertyKey(), targetDesc);
if (attributes != Attr_Invalid && !attributes.isConfigurable()) {
if (attributes.isData() && !attributes.isWritable()) {
if (!value.sameValue(targetDesc->value))
@@ -179,8 +177,7 @@ bool ProxyObject::deleteProperty(Managed *m, StringOrSymbol *name)
if (!trapResult->toBoolean())
return false;
ScopedProperty targetDesc(scope);
- PropertyAttributes attributes;
- target->getOwnProperty(name, &attributes, targetDesc);
+ PropertyAttributes attributes = target->getOwnProperty(name->toPropertyKey(), targetDesc);
if (attributes == Attr_Invalid)
return true;
if (!attributes.isConfigurable())