aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/jsruntime/qv4object.cpp19
-rw-r--r--tests/auto/qml/ecmascripttests/TestExpectations22
2 files changed, 16 insertions, 25 deletions
diff --git a/src/qml/jsruntime/qv4object.cpp b/src/qml/jsruntime/qv4object.cpp
index cf988f093a..0d8fd799e6 100644
--- a/src/qml/jsruntime/qv4object.cpp
+++ b/src/qml/jsruntime/qv4object.cpp
@@ -189,9 +189,22 @@ void Object::defineAccessorProperty(StringOrSymbol *name, jsCallFunction getter,
ExecutionEngine *v4 = engine();
QV4::Scope scope(v4);
ScopedProperty p(scope);
- p->setGetter(ScopedFunctionObject(scope, (getter ? FunctionObject::createBuiltinFunction(v4, name, getter, 0) : nullptr)));
- p->setSetter(ScopedFunctionObject(scope, (setter ? FunctionObject::createBuiltinFunction(v4, name, setter, 1) : nullptr)));
- insertMember(name, p, QV4::Attr_Accessor|QV4::Attr_NotConfigurable|QV4::Attr_NotEnumerable);
+ QString n = name->toQString();
+ if (n.at(0) == QLatin1Char('@'))
+ n = QChar::fromLatin1('[') + n.midRef(1) + QChar::fromLatin1(']');
+ if (getter) {
+ ScopedString getName(scope, v4->newString(QString::fromLatin1("get ") + n));
+ p->setGetter(ScopedFunctionObject(scope, FunctionObject::createBuiltinFunction(v4, getName, getter, 0)));
+ } else {
+ p->setGetter(nullptr);
+ }
+ if (setter) {
+ ScopedString setName(scope, v4->newString(QString::fromLatin1("set ") + n));
+ p->setSetter(ScopedFunctionObject(scope, FunctionObject::createBuiltinFunction(v4, setName, setter, 0)));
+ } else {
+ p->setSetter(nullptr);
+ }
+ insertMember(name, p, QV4::Attr_Accessor|QV4::Attr_NotEnumerable);
}
diff --git a/tests/auto/qml/ecmascripttests/TestExpectations b/tests/auto/qml/ecmascripttests/TestExpectations
index acd1b79933..6001062dfe 100644
--- a/tests/auto/qml/ecmascripttests/TestExpectations
+++ b/tests/auto/qml/ecmascripttests/TestExpectations
@@ -146,8 +146,6 @@ built-ins/ArrayBuffer/newtarget-prototype-is-not-object.js fails
built-ins/ArrayBuffer/proto-from-ctor-realm.js fails
built-ins/ArrayBuffer/prototype-from-newtarget.js fails
built-ins/ArrayBuffer/prototype/byteLength/detached-buffer.js fails
-built-ins/ArrayBuffer/prototype/byteLength/name.js fails
-built-ins/ArrayBuffer/prototype/byteLength/prop-desc.js fails
built-ins/ArrayBuffer/prototype/slice/end-default-if-absent.js fails
built-ins/ArrayBuffer/prototype/slice/end-default-if-undefined.js fails
built-ins/ArrayBuffer/prototype/slice/end-exceeds-length.js fails
@@ -271,14 +269,8 @@ built-ins/DataView/length.js fails
built-ins/DataView/newtarget-undefined-throws.js fails
built-ins/DataView/proto-from-ctor-realm.js fails
built-ins/DataView/prototype/buffer/detached-buffer.js fails
-built-ins/DataView/prototype/buffer/name.js fails
-built-ins/DataView/prototype/buffer/prop-desc.js fails
built-ins/DataView/prototype/byteLength/detached-buffer.js fails
-built-ins/DataView/prototype/byteLength/name.js fails
-built-ins/DataView/prototype/byteLength/prop-desc.js fails
built-ins/DataView/prototype/byteOffset/detached-buffer.js fails
-built-ins/DataView/prototype/byteOffset/name.js fails
-built-ins/DataView/prototype/byteOffset/prop-desc.js fails
built-ins/DataView/prototype/getFloat32/detached-buffer-after-toindex-byteoffset.js fails
built-ins/DataView/prototype/getFloat32/detached-buffer-before-outofrange-byteoffset.js fails
built-ins/DataView/prototype/getFloat32/detached-buffer.js fails
@@ -1657,17 +1649,9 @@ built-ins/TypedArray/of/name.js fails
built-ins/TypedArray/of/prop-desc.js fails
built-ins/TypedArray/prototype/Symbol.iterator.js fails
built-ins/TypedArray/prototype/Symbol.toStringTag/detached-buffer.js fails
-built-ins/TypedArray/prototype/Symbol.toStringTag/name.js fails
-built-ins/TypedArray/prototype/Symbol.toStringTag/prop-desc.js fails
built-ins/TypedArray/prototype/buffer/detached-buffer.js fails
-built-ins/TypedArray/prototype/buffer/name.js fails
-built-ins/TypedArray/prototype/buffer/prop-desc.js fails
built-ins/TypedArray/prototype/byteLength/detached-buffer.js fails
-built-ins/TypedArray/prototype/byteLength/name.js fails
-built-ins/TypedArray/prototype/byteLength/prop-desc.js fails
built-ins/TypedArray/prototype/byteOffset/detached-buffer.js fails
-built-ins/TypedArray/prototype/byteOffset/name.js fails
-built-ins/TypedArray/prototype/byteOffset/prop-desc.js fails
built-ins/TypedArray/prototype/constructor.js fails
built-ins/TypedArray/prototype/copyWithin/bit-precision.js fails
built-ins/TypedArray/prototype/copyWithin/coerced-values-end.js fails
@@ -1880,8 +1864,6 @@ built-ins/TypedArray/prototype/lastIndexOf/search-not-found-returns-minus-one.js
built-ins/TypedArray/prototype/lastIndexOf/strict-comparison.js fails
built-ins/TypedArray/prototype/lastIndexOf/tointeger-fromindex.js fails
built-ins/TypedArray/prototype/length/detached-buffer.js fails
-built-ins/TypedArray/prototype/length/name.js fails
-built-ins/TypedArray/prototype/length/prop-desc.js fails
built-ins/TypedArray/prototype/map/arraylength-internal.js fails
built-ins/TypedArray/prototype/map/callbackfn-arguments-with-thisarg.js fails
built-ins/TypedArray/prototype/map/callbackfn-arguments-without-thisarg.js fails
@@ -1958,14 +1940,11 @@ built-ins/TypedArray/prototype/reverse/prop-desc.js fails
built-ins/TypedArray/prototype/reverse/returns-original-object.js fails
built-ins/TypedArray/prototype/reverse/reverts.js fails
built-ins/TypedArray/prototype/set/array-arg-set-values-in-order.js fails
-built-ins/TypedArray/prototype/set/array-arg-target-arraylength-internal.js fails
built-ins/TypedArray/prototype/set/array-arg-targetbuffer-detached-on-get-src-value-throws.js fails
built-ins/TypedArray/prototype/set/array-arg-targetbuffer-detached-on-tointeger-offset-throws.js fails
built-ins/TypedArray/prototype/set/array-arg-targetbuffer-detached-throws.js fails
-built-ins/TypedArray/prototype/set/typedarray-arg-src-arraylength-internal.js fails
built-ins/TypedArray/prototype/set/typedarray-arg-src-byteoffset-internal.js fails
built-ins/TypedArray/prototype/set/typedarray-arg-srcbuffer-detached-during-tointeger-offset-throws.js fails
-built-ins/TypedArray/prototype/set/typedarray-arg-target-arraylength-internal.js fails
built-ins/TypedArray/prototype/set/typedarray-arg-target-byteoffset-internal.js fails
built-ins/TypedArray/prototype/set/typedarray-arg-targetbuffer-detached-during-tointeger-offset-throws.js fails
built-ins/TypedArray/prototype/slice/arraylength-internal.js fails
@@ -2047,7 +2026,6 @@ built-ins/TypedArray/prototype/toLocaleString/calls-tostring-from-each-value.js
built-ins/TypedArray/prototype/toLocaleString/calls-valueof-from-each-value.js fails
built-ins/TypedArray/prototype/toLocaleString/detached-buffer.js fails
built-ins/TypedArray/prototype/toLocaleString/empty-instance-returns-empty-string.js fails
-built-ins/TypedArray/prototype/toLocaleString/get-length-uses-internal-arraylength.js fails
built-ins/TypedArray/prototype/toLocaleString/invoked-as-method.js fails
built-ins/TypedArray/prototype/toLocaleString/prop-desc.js fails
built-ins/TypedArray/prototype/toLocaleString/return-abrupt-from-firstelement-tolocalestring.js fails