diff options
author | Ulf Hermann <[email protected]> | 2022-02-17 17:23:10 +0100 |
---|---|---|
committer | Ulf Hermann <[email protected]> | 2022-02-18 12:13:47 +0100 |
commit | 795d7dafe5be5cd48aa8225a1343285b3aca2be7 (patch) | |
tree | 0eeca097ec579458b5aa6ac9bfb8c411c48e3f0f | |
parent | 4c716dd19cf88349acc33eddae28c4e9222a3800 (diff) |
QmlCompiler: Do not generate block comments into C++ code
The code we're commenting could again contain block comments. You cannot
nest them.
Pick-to: 6.2 6.3
Fixes: QTBUG-100978
Change-Id: I78685bf29dd30f05e5a3b17abc43ba0b4cb6849e
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Jan Arve Sæther <[email protected]>
-rw-r--r-- | src/qmlcompiler/qqmljscodegenerator.cpp | 11 | ||||
-rw-r--r-- | tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/auto/qml/qmlcppcodegen/data/blockComments.qml | 10 | ||||
-rw-r--r-- | tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp | 11 |
4 files changed, 24 insertions, 9 deletions
diff --git a/src/qmlcompiler/qqmljscodegenerator.cpp b/src/qmlcompiler/qqmljscodegenerator.cpp index 20270ce2f3..5d01d564e7 100644 --- a/src/qmlcompiler/qqmljscodegenerator.cpp +++ b/src/qmlcompiler/qqmljscodegenerator.cpp @@ -2284,17 +2284,10 @@ QV4::Moth::ByteCodeHandler::Verdict QQmlJSCodeGenerator::startInstruction( const int currentLine = currentSourceLocation().startLine; if (currentLine != m_lastLineNumberUsed) { const int nextLine = nextJSLine(currentLine); - if (nextLine == currentLine + 1 || nextLine < 1) { + for (auto line = currentLine - 1; line < nextLine - 1; ++line) { m_body += u"// "_qs; - m_body += m_sourceCodeLines.value(currentLine - 1).trimmed(); + m_body += m_sourceCodeLines.value(line).trimmed(); m_body += u'\n'; - } else { - m_body += u"/*\n"_qs; - for (auto line = currentLine - 1; line < nextLine - 1; ++line) { - m_body += m_sourceCodeLines.at(line).trimmed(); - m_body += u'\n'; - } - m_body += u"*/\n"_qs; } m_lastLineNumberUsed = currentLine; } diff --git a/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt b/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt index 6afc186cad..1cfd0b493c 100644 --- a/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt +++ b/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt @@ -35,6 +35,7 @@ set(qml_files asCast.qml attachedBaseEnum.qml bindToValueType.qml + blockComments.qml callContextPropertyLookupResult.qml childobject.qml colorAsVariant.qml diff --git a/tests/auto/qml/qmlcppcodegen/data/blockComments.qml b/tests/auto/qml/qmlcppcodegen/data/blockComments.qml new file mode 100644 index 0000000000..da4bb2fd25 --- /dev/null +++ b/tests/auto/qml/qmlcppcodegen/data/blockComments.qml @@ -0,0 +1,10 @@ +pragma Strict +import QtQml + +QtObject { + property real implicitHeight: { + return /*+ (control.implicitHeaderHeight > 0 + ? control.implicitHeaderHeight + control.spacing + : 0)*/ 8; + } +} diff --git a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp index b04eb011b3..1863b92c64 100644 --- a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp +++ b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp @@ -118,6 +118,7 @@ private slots: void invisibleBase(); void notEqualsInt(); void infinities(); + void blockComments(); }; void tst_QmlCppCodegen::simpleBinding() @@ -1776,6 +1777,16 @@ void tst_QmlCppCodegen::infinities() QVERIFY(qIsNaN(o->property("naN").toDouble())); } +void tst_QmlCppCodegen::blockComments() +{ + QQmlEngine engine; + QQmlComponent c(&engine, QUrl(u"qrc:/TestTypes/blockComments.qml"_qs)); + QVERIFY2(c.isReady(), qPrintable(c.errorString())); + QScopedPointer<QObject> o(c.create()); + QVERIFY(o); + QCOMPARE(o->property("implicitHeight").toDouble(), 8.0); +} + void tst_QmlCppCodegen::runInterpreted() { if (qEnvironmentVariableIsSet("QV4_FORCE_INTERPRETER")) |