diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-05-30 14:55:34 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-06-04 13:02:28 +0000 |
commit | 502678a183e68a837a5b2ddee2978a3be5e9e008 (patch) | |
tree | acfd88d08ce3c9f3dc1f6867d136e0dcd14fdee0 /src/qml/jsruntime/qv4value.cpp | |
parent | 9a0a074452c6534f25a878047398eea77a8c7e0e (diff) |
Implement ToPropertyKey() from the ES7 spec
and use it where required.
Change-Id: I309ca61e0360b26428fc2ea5a2eea47c8e0632a0
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4value.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4value.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4value.cpp b/src/qml/jsruntime/qv4value.cpp index be406db325..9febd41a00 100644 --- a/src/qml/jsruntime/qv4value.cpp +++ b/src/qml/jsruntime/qv4value.cpp @@ -228,6 +228,17 @@ QString Value::toQString() const } } // switch } + +Heap::StringOrSymbol *Value::toPropertyKey(ExecutionEngine *e) const +{ + Scope scope(e); + ScopedValue v(scope, RuntimeHelpers::toPrimitive(*this, STRING_HINT)); + if (!v->isStringOrSymbol()) + v = v->toString(e); + if (e->hasException) + return nullptr; + return static_cast<Heap::StringOrSymbol *>(v->m()); +} #endif // V4_BOOTSTRAP bool Value::sameValue(Value other) const { |