aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4vme_moth.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-05-27 22:58:32 +0200
committerLars Knoll <lars.knoll@qt.io>2018-05-28 10:40:08 +0000
commit3ccd529e350fdf20ad3fb7b296220d63f8bcc747 (patch)
treec755f0c029543fbf2afd510156e1d51c28a8b28b /src/qml/jsruntime/qv4vme_moth.cpp
parent23aa9d58d006dd50adb3f582df9b7dab4f64be0b (diff)
Implement toPrimitive() the way the ES7 spec wants it
Add Dat.prototype[Symbol.toPrimitive] and make use of those methods in the toPrimitive implementation. Change-Id: I82a9a94dcae6822100de364373b3f4de1e3d749b Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
Diffstat (limited to 'src/qml/jsruntime/qv4vme_moth.cpp')
-rw-r--r--src/qml/jsruntime/qv4vme_moth.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp
index d89d314942..bf07faca2a 100644
--- a/src/qml/jsruntime/qv4vme_moth.cpp
+++ b/src/qml/jsruntime/qv4vme_moth.cpp
@@ -398,13 +398,13 @@ static bool compareEqual(QV4::Value lhs, QV4::Value rhs)
Heap::Base *r = rhs.m();
Q_ASSERT(l);
Q_ASSERT(r);
- if (l->internalClass->vtable->isString == r->internalClass->vtable->isString)
+ if (l->internalClass->vtable->isStringOrSymbol == r->internalClass->vtable->isStringOrSymbol)
return static_cast<QV4::Managed &>(lhs).isEqualTo(&static_cast<QV4::Managed &>(rhs));
- if (l->internalClass->vtable->isString) {
+ if (l->internalClass->vtable->isStringOrSymbol) {
rhs = Primitive::fromReturnedValue(RuntimeHelpers::objectDefaultValue(&static_cast<QV4::Object &>(rhs), PREFERREDTYPE_HINT));
break;
} else {
- Q_ASSERT(r->internalClass->vtable->isString);
+ Q_ASSERT(r->internalClass->vtable->isStringOrSymbol);
lhs = Primitive::fromReturnedValue(RuntimeHelpers::objectDefaultValue(&static_cast<QV4::Object &>(lhs), PREFERREDTYPE_HINT));
break;
}
@@ -419,8 +419,8 @@ static bool compareEqual(QV4::Value lhs, QV4::Value rhs)
rhs = Primitive::fromDouble(rhs.int_32());
// fall through
default: // double
- if (lhs.m()->internalClass->vtable->isString)
- return RuntimeHelpers::toNumber(lhs) == rhs.doubleValue();
+ if (lhs.m()->internalClass->vtable->isStringOrSymbol)
+ return lhs.m()->internalClass->vtable->isString ? (RuntimeHelpers::toNumber(lhs) == rhs.doubleValue()) : false;
else
lhs = Primitive::fromReturnedValue(RuntimeHelpers::objectDefaultValue(&static_cast<QV4::Object &>(lhs), PREFERREDTYPE_HINT));
}