aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@digia.com>2013-10-03 10:30:53 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-11-20 10:06:12 +0100
commit6d4d98bc593289d4418a1ab83f00dca0608da23e (patch)
tree86e4cefff6769fb6bc86bc06b614f9fba5f32944
parentd53313288e61e3e530f07fcc48ebd024bc11da35 (diff)
V4: fix Array.indexOf() for QStringList
Autotest is included. Task-number: QTBUG-33542 Change-Id: I46c3a81006019c6613a3d35aa018217f85a15d0b Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Liang Qi <liang.qi@digia.com>
-rw-r--r--src/qml/jsruntime/qv4object.cpp2
-rw-r--r--tests/auto/qml/qqmlecmascript/data/sequenceConversion.indexes.qml13
-rw-r--r--tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp2
3 files changed, 16 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4object.cpp b/src/qml/jsruntime/qv4object.cpp
index 4fadec7860..cca7d2b26a 100644
--- a/src/qml/jsruntime/qv4object.cpp
+++ b/src/qml/jsruntime/qv4object.cpp
@@ -1133,7 +1133,7 @@ ReturnedValue Object::arrayIndexOf(const ValueRef v, uint fromIndex, uint endInd
Scope scope(engine());
ScopedValue value(scope);
- if (o->protoHasArray() || o->arrayAttributes) {
+ if (!(flags & SimpleArray) || o->protoHasArray() || o->arrayAttributes) {
// lets be safe and slow
for (uint i = fromIndex; i < endIndex; ++i) {
bool exists;
diff --git a/tests/auto/qml/qqmlecmascript/data/sequenceConversion.indexes.qml b/tests/auto/qml/qqmlecmascript/data/sequenceConversion.indexes.qml
index 962e8dd474..a3f306f717 100644
--- a/tests/auto/qml/qqmlecmascript/data/sequenceConversion.indexes.qml
+++ b/tests/auto/qml/qqmlecmascript/data/sequenceConversion.indexes.qml
@@ -72,4 +72,17 @@ Item {
if (!verifyExpected(msco.intListProperty, 4))
success = false;
}
+
+ function indexOf() {
+ if (msco.qstringListProperty.length != 4)
+ success = false;
+ if (msco.qstringListProperty.indexOf("first") != 0)
+ success = false;
+ if (msco.qstringListProperty.indexOf("second") != 1)
+ success = false;
+ if (msco.qstringListProperty.indexOf("third") != 2)
+ success = false;
+ if (msco.qstringListProperty.indexOf("fourth") != 3)
+ success = false;
+ }
}
diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
index 3aa8fd42e0..6b19c13109 100644
--- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
+++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
@@ -5433,6 +5433,8 @@ void tst_qqmlecmascript::sequenceConversionIndexes()
QTest::ignoreMessage(QtWarningMsg, qPrintable(w3));
QMetaObject::invokeMethod(object, "indexedAccess");
QVERIFY(object->property("success").toBool());
+ QMetaObject::invokeMethod(object, "indexOf");
+ QVERIFY(object->property("success").toBool());
delete object;
}