diff options
author | Semih Yavuz <semih.yavuz@qt.io> | 2024-04-24 00:37:04 +0200 |
---|---|---|
committer | Semih Yavuz <semih.yavuz@qt.io> | 2024-05-07 13:35:27 +0200 |
commit | ded185c3a0f44c8bb03754b7ade81b0b8505f362 (patch) | |
tree | 5d9316968fa31b79bc2bb4959d0acd81e375f92a /tests | |
parent | db587bd79c33e644ad3568e7e0ec793e9b8367db (diff) |
semantichighlighting: add highlighting for script literals
Implement the highlighting for the numbers, single and multiline
strings, boolean and null literals.
Task-number: QTBUG-120000
Change-Id: Ibb80563b27c9e77a347334fdf805b8d69475ab5d
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qmlls/utils/data/highlights/literals.qml | 14 | ||||
-rw-r--r-- | tests/auto/qmlls/utils/tst_qmlls_highlighting.cpp | 29 |
2 files changed, 42 insertions, 1 deletions
diff --git a/tests/auto/qmlls/utils/data/highlights/literals.qml b/tests/auto/qmlls/utils/data/highlights/literals.qml new file mode 100644 index 0000000000..520ed5d2ef --- /dev/null +++ b/tests/auto/qmlls/utils/data/highlights/literals.qml @@ -0,0 +1,14 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +import QtQuick + +Item { + property int a: 123 + property string b: "single" + property string c: "multi + line string"; + property bool d: true + property var e: null + +} diff --git a/tests/auto/qmlls/utils/tst_qmlls_highlighting.cpp b/tests/auto/qmlls/utils/tst_qmlls_highlighting.cpp index 44c3e7e900..fb17239ecf 100644 --- a/tests/auto/qmlls/utils/tst_qmlls_highlighting.cpp +++ b/tests/auto/qmlls/utils/tst_qmlls_highlighting.cpp @@ -154,10 +154,14 @@ void tst_qmlls_highlighting::highlights_data() if (!f.open(QIODevice::ReadOnly | QIODevice::Text)) return file; QString code = f.readAll(); + DomCreationOptions options; + options.setFlag(DomCreationOption::WithScriptExpressions); + options.setFlag(DomCreationOption::WithSemanticAnalysis); + auto envPtr = DomEnvironment::create( QStringList(), QQmlJS::Dom::DomEnvironment::Option::SingleThreaded - | QQmlJS::Dom::DomEnvironment::Option::NoDependencies); + | QQmlJS::Dom::DomEnvironment::Option::NoDependencies, options); envPtr->loadFile(FileToLoad::fromMemory(envPtr, filePath, code), [&file](Path, const DomItem &, const DomItem &newIt) { file = newIt.fileObject(); @@ -359,6 +363,29 @@ void tst_qmlls_highlighting::highlights_data() << fileItem << Token(QQmlJS::SourceLocation(216, 3, 10, 26), int(SemanticTokenTypes::Type), 0); } + { // literals + const auto filePath = m_highlightingDataDir + "/literals.qml"; + const auto fileItem = fileObject(filePath); + + QTest::addRow("number") << fileItem + << Token(QQmlJS::SourceLocation(155, 3, 7, 21), + int(SemanticTokenTypes::Number), 0); + QTest::addRow("singleline-string") + << fileItem + << Token(QQmlJS::SourceLocation(182, 8, 8, 24), int(SemanticTokenTypes::String), 0); + QTest::addRow("multiline-string-first") + << fileItem + << Token(QQmlJS::SourceLocation(214, 6, 9, 24), int(SemanticTokenTypes::String), 0); + QTest::addRow("multiline-string-second") << fileItem + << Token(QQmlJS::SourceLocation(221, 16, 10, 1), + int(SemanticTokenTypes::String), 0); + QTest::addRow("boolean") << fileItem + << Token(QQmlJS::SourceLocation(260, 4, 11, 22), + int(SemanticTokenTypes::Keyword), 0); + QTest::addRow("null") << fileItem + << Token(QQmlJS::SourceLocation(285, 4, 12, 21), + int(SemanticTokenTypes::Keyword), 0); + } } void tst_qmlls_highlighting::highlights() |