void tst_qqmlexpression::scriptString() { qmlRegisterType<TestObject>("Test", 1, 0, "TestObject"); QQmlEngine engine; QQmlComponent c(&engine, testFileUrl("scriptString.qml")); TestObject *testObj = qobject_cast<TestObject*>(c.create()); QVERIFY(testObj != 0); QQmlScriptString script = testObj->scriptString(); QVERIFY(!script.isEmpty()); QQmlExpression expression(script); QVariant value = expression.evaluate(); QCOMPARE(value.toInt(), 15); QQmlScriptString scriptError = testObj->scriptStringError(); QVERIFY(!scriptError.isEmpty()); //verify that the expression has the correct error location information QQmlExpression expressionError(scriptError); QVariant valueError = expressionError.evaluate(); QVERIFY(!valueError.isValid()); QVERIFY(expressionError.hasError()); QQmlError error = expressionError.error(); QCOMPARE(error.url(), c.url()); QCOMPARE(error.line(), 8); }