From 32115087589939225a4516ed15196a4f6632c13b Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 30 Nov 2011 16:27:01 +0100 Subject: [PATCH] Take multi-line expressions into account when rewriting expressions Take into account the newlines expressions might have when combining multiple expressions into one. Change-Id: Ib7170f624b6b6dee522e2d376a513ac08a8baa46 Reviewed-by: Aaron Kennedy --- src/declarative/qml/qdeclarativecompiler.cpp | 1 + .../qdeclarativeecmascript/data/scriptErrors.qml | 3 +++ .../tst_qdeclarativeecmascript.cpp | 10 +++++----- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index 3b47e20..aa27d79 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -3479,6 +3479,7 @@ bool QDeclarativeCompiler::completeComponentBuild() } functionArray += expression; + lineNumber += expression.count(QLatin1Char('\n')); reference->compiledIndex = ii; } functionArray += QLatin1String("]"); diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptErrors.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptErrors.qml index f601f49..4998f63 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/scriptErrors.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptErrors.qml @@ -4,6 +4,9 @@ import "scriptErrors.js" as Script MyQmlObject { property int t: a.value property int w: Script.getValue(); + property int d: undefined + ? 0 // multi-line binding + : 1 property int x: undefined property int y: (a.value, undefinedObject) diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index c4b9c74..9638368 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -1368,11 +1368,11 @@ void tst_qdeclarativeecmascript::scriptErrors() QString warning1 = url.left(url.length() - 3) + "js:2: Error: Invalid write to global property \"a\""; QString warning2 = url + ":5: ReferenceError: Can't find variable: a"; QString warning3 = url.left(url.length() - 3) + "js:4: Error: Invalid write to global property \"a\""; - QString warning4 = url + ":10: ReferenceError: Can't find variable: a"; - QString warning5 = url + ":8: ReferenceError: Can't find variable: a"; - QString warning6 = url + ":7: Unable to assign [undefined] to int"; - QString warning7 = url + ":12: Error: Cannot assign to read-only property \"trueProperty\""; - QString warning8 = url + ":13: Error: Cannot assign to non-existent property \"fakeProperty\""; + QString warning4 = url + ":13: ReferenceError: Can't find variable: a"; + QString warning5 = url + ":11: ReferenceError: Can't find variable: a"; + QString warning6 = url + ":10: Unable to assign [undefined] to int"; + QString warning7 = url + ":15: Error: Cannot assign to read-only property \"trueProperty\""; + QString warning8 = url + ":16: Error: Cannot assign to non-existent property \"fakeProperty\""; QTest::ignoreMessage(QtWarningMsg, warning1.toLatin1().constData()); QTest::ignoreMessage(QtWarningMsg, warning2.toLatin1().constData()); -- 1.7.2.5