diff options
-rw-r--r-- | src/qml/jsruntime/qv4object.cpp | 19 | ||||
-rw-r--r-- | tests/auto/qml/ecmascripttests/TestExpectations | 22 |
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 |