aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/compiler/qv4codegen.cpp2
-rw-r--r--tests/auto/qml/v4misc/tst_v4misc.cpp20
2 files changed, 22 insertions, 0 deletions
diff --git a/src/qml/compiler/qv4codegen.cpp b/src/qml/compiler/qv4codegen.cpp
index 321cf21c54..19e960bb57 100644
--- a/src/qml/compiler/qv4codegen.cpp
+++ b/src/qml/compiler/qv4codegen.cpp
@@ -1222,6 +1222,8 @@ bool Codegen::visit(ArrayMemberExpression *ast)
return false;
}
Reference index = expression(ast->expression);
+ if (hasError)
+ return false;
_expr.setResult(Reference::fromSubscript(base, index));
return false;
}
diff --git a/tests/auto/qml/v4misc/tst_v4misc.cpp b/tests/auto/qml/v4misc/tst_v4misc.cpp
index 22ff9c43fc..21a826850b 100644
--- a/tests/auto/qml/v4misc/tst_v4misc.cpp
+++ b/tests/auto/qml/v4misc/tst_v4misc.cpp
@@ -37,6 +37,9 @@ class tst_v4misc: public QObject
private slots:
void tdzOptimizations_data();
void tdzOptimizations();
+
+ void parserMisc_data();
+ void parserMisc();
};
void tst_v4misc::tdzOptimizations_data()
@@ -102,6 +105,23 @@ void tst_v4misc::tdzOptimizations()
}
+void tst_v4misc::parserMisc_data()
+{
+ QTest::addColumn<QString>("error");
+
+ QTest::newRow("8[++i][+++i]") << QString("ReferenceError: Prefix ++ operator applied to value that is not a reference.");
+}
+
+void tst_v4misc::parserMisc()
+{
+ QFETCH(QString, error);
+
+ QJSEngine engine;
+ QJSValue result = engine.evaluate(QString::fromUtf8(QTest::currentDataTag()));
+ QVERIFY(result.isError());
+ QCOMPARE(result.toString(), error);
+}
+
QTEST_MAIN(tst_v4misc);
#include "tst_v4misc.moc"