diff options
author | Semih Yavuz <semih.yavuz@qt.io> | 2024-04-30 12:41:34 +0200 |
---|---|---|
committer | Semih Yavuz <semih.yavuz@qt.io> | 2024-05-07 13:35:19 +0200 |
commit | 666a16f6494e261c26b76b1ffb82a256e4f82645 (patch) | |
tree | e816432a0b327ca9ff431da72f7902a195de5cf1 /tests/auto | |
parent | b7288725ef3077e644fc95d3cdabef96dfee2c9e (diff) |
semantichighlighting: add highlight for property definitions
Also implement the modifiers that can change the highlighting color.
Readonly is mapped to lsp's ReadOnly field, required is mapped to lsp's
Abstract and default is mapped to lsp's DefaultLibrary.
Task-number: QTBUG-120000
Change-Id: I68c6c151215631fa388a77aba47c9c4cf6949a16
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/qmlls/utils/data/highlights/properties.qml | 13 | ||||
-rw-r--r-- | tests/auto/qmlls/utils/tst_qmlls_highlighting.cpp | 41 |
2 files changed, 54 insertions, 0 deletions
diff --git a/tests/auto/qmlls/utils/data/highlights/properties.qml b/tests/auto/qmlls/utils/data/highlights/properties.qml new file mode 100644 index 0000000000..bde60915ca --- /dev/null +++ b/tests/auto/qmlls/utils/data/highlights/properties.qml @@ -0,0 +1,13 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +import QtQuick + +Item { + Item { + property int k + readonly property int kk + required property int kkk + default property int kkkk + } +} diff --git a/tests/auto/qmlls/utils/tst_qmlls_highlighting.cpp b/tests/auto/qmlls/utils/tst_qmlls_highlighting.cpp index 85db7e1164..69cfd389ca 100644 --- a/tests/auto/qmlls/utils/tst_qmlls_highlighting.cpp +++ b/tests/auto/qmlls/utils/tst_qmlls_highlighting.cpp @@ -285,6 +285,47 @@ void tst_qmlls_highlighting::highlights_data() << fileItem << Token(QQmlJS::SourceLocation(149, 6, 7, 15), int(SemanticTokenTypes::Type), 0); } + { // property definition + const auto filePath = m_highlightingDataDir + "/properties.qml"; + const auto fileItem = fileObject(filePath); + + int definitionModifier = 1 << int(SemanticTokenModifiers::Definition); + QTest::addRow("property-keyword") + << fileItem + << Token(QQmlJS::SourceLocation(154, 8, 8, 9), int(SemanticTokenTypes::Keyword), 0); + QTest::addRow("property-type") + << fileItem + << Token(QQmlJS::SourceLocation(163, 3, 8, 18), int(SemanticTokenTypes::Type), 0); + QTest::addRow("property-name") + << fileItem + << Token(QQmlJS::SourceLocation(167, 1, 8, 22), int(SemanticTokenTypes::Property), + definitionModifier); + int readOnlyModifier = definitionModifier | (1 << int(SemanticTokenModifiers::Readonly)); + QTest::addRow("readonly-keyword") + << fileItem + << Token(QQmlJS::SourceLocation(177, 8, 9, 9), int(SemanticTokenTypes::Keyword), 0); + QTest::addRow("readonly-modifier") + << fileItem + << Token(QQmlJS::SourceLocation(199, 2, 9, 31), int(SemanticTokenTypes::Property), + readOnlyModifier); + int requiredModifier = definitionModifier | (1 << int(SemanticTokenModifiers::Abstract)); + QTest::addRow("required-keyword") << fileItem + << Token(QQmlJS::SourceLocation(210, 8, 10, 9), + int(SemanticTokenTypes::Keyword), 0); + QTest::addRow("required-modifier") + << fileItem + << Token(QQmlJS::SourceLocation(232, 3, 10, 31), int(SemanticTokenTypes::Property), + requiredModifier); + int defaultModifier = + definitionModifier | (1 << int(SemanticTokenModifiers::DefaultLibrary)); + QTest::addRow("default-keyword") << fileItem + << Token(QQmlJS::SourceLocation(244, 7, 11, 9), + int(SemanticTokenTypes::Keyword), 0); + QTest::addRow("default-modifier") + << fileItem + << Token(QQmlJS::SourceLocation(265, 4, 11, 30), int(SemanticTokenTypes::Property), + defaultModifier); + } } void tst_qmlls_highlighting::highlights() |