aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDmitrii Akshintsev <[email protected]>2025-11-19 10:59:47 +0100
committerDmitrii Akshintsev <[email protected]>2025-12-04 20:01:19 +0000
commitaab702fc84bc08e826bb8aaae00520923a37a346 (patch)
treed2d6c01ddb81615c5ca5671d2299ed17895ada80 /src
parent4da6cc5653d3b4969bd9b54419bdfd31a169c8f8 (diff)
semantic highlight: support virtual and override keywords
This patch introduces corresponding QmlVirtualProperty and QmlOverrideProperty modifiers and expands the highlight of the PropertyDefinition Task-number: QTBUG-98320 Change-Id: If1cd98b9958ed3be5fd67e02abb71ca6fa68da6b Reviewed-by: Olivier De Cannière <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/qmldom/qqmldomastcreator.cpp8
-rw-r--r--src/qmlls/qqmlsemantictokens.cpp14
-rw-r--r--src/qmlls/qqmlsemantictokens_p.h10
3 files changed, 28 insertions, 4 deletions
diff --git a/src/qmldom/qqmldomastcreator.cpp b/src/qmldom/qqmldomastcreator.cpp
index c0deb924cb..bfa2c373f1 100644
--- a/src/qmldom/qqmldomastcreator.cpp
+++ b/src/qmldom/qqmldomastcreator.cpp
@@ -568,6 +568,14 @@ bool QQmlDomAstCreatorBase::visit(AST::UiPublicMember *el)
FileLocations::addRegion(nodeStack.last().fileLocations, DefaultKeywordRegion,
el->defaultToken());
}
+ if (p.isVirtual) {
+ FileLocations::addRegion(nodeStack.last().fileLocations, VirtualKeywordRegion,
+ el->virtualToken());
+ }
+ if (p.isOverride) {
+ FileLocations::addRegion(nodeStack.last().fileLocations, OverrideKeywordRegion,
+ el->overrideToken());
+ }
if (p.isFinal) {
FileLocations::addRegion(nodeStack.last().fileLocations, FinalKeywordRegion,
el->finalToken());
diff --git a/src/qmlls/qqmlsemantictokens.cpp b/src/qmlls/qqmlsemantictokens.cpp
index 3a0157f447..52837da9a2 100644
--- a/src/qmlls/qqmlsemantictokens.cpp
+++ b/src/qmlls/qqmlsemantictokens.cpp
@@ -201,6 +201,12 @@ static int fromQmlModifierKindToLspTokenType(QmlHighlightModifiers highlightModi
if (highlightModifier.testFlag(QmlHighlightModifier::QmlDefaultProperty))
addModifier(SemanticTokenModifiers::DefaultLibrary, &modifier);
+ if (highlightModifier.testFlag(QmlHighlightModifier::QmlVirtualProperty))
+ addModifier(SemanticTokenModifiers::Static, &modifier);
+
+ if (highlightModifier.testFlag(QmlHighlightModifier::QmlOverrideProperty))
+ addModifier(SemanticTokenModifiers::Static, &modifier);
+
if (highlightModifier.testFlag(QmlHighlightModifier::QmlFinalProperty))
addModifier(SemanticTokenModifiers::Static, &modifier);
@@ -456,6 +462,14 @@ void HighlightingVisitor::highlightPropertyDefinition(const DomItem &item)
modifier |= QmlHighlightModifier::QmlDefaultProperty;
addHighlight(regions[DefaultKeywordRegion], QmlHighlightKind::QmlKeyword);
}
+ if (propertyDef->isVirtual) {
+ modifier |= QmlHighlightModifier::QmlVirtualProperty;
+ addHighlight(regions[VirtualKeywordRegion], QmlHighlightKind::QmlKeyword);
+ }
+ if (propertyDef->isOverride) {
+ modifier |= QmlHighlightModifier::QmlOverrideProperty;
+ addHighlight(regions[OverrideKeywordRegion], QmlHighlightKind::QmlKeyword);
+ }
if (propertyDef->isFinal) {
modifier |= QmlHighlightModifier::QmlFinalProperty;
addHighlight(regions[FinalKeywordRegion], QmlHighlightKind::QmlKeyword);
diff --git a/src/qmlls/qqmlsemantictokens_p.h b/src/qmlls/qqmlsemantictokens_p.h
index 0674a0a3cc..f8d89566d1 100644
--- a/src/qmlls/qqmlsemantictokens_p.h
+++ b/src/qmlls/qqmlsemantictokens_p.h
@@ -67,13 +67,15 @@ enum class QmlHighlightKind {
Unknown, // Used for the unknown tokens
};
-enum class QmlHighlightModifier {
+enum class QmlHighlightModifier : uint32_t {
None = 0,
QmlPropertyDefinition = 1 << 0,
QmlDefaultProperty = 1 << 1,
- QmlFinalProperty = 1 << 2,
- QmlRequiredProperty = 1 << 3,
- QmlReadonlyProperty = 1 << 4,
+ QmlRequiredProperty = 1 << 2,
+ QmlReadonlyProperty = 1 << 3,
+ QmlFinalProperty = 1 << 4,
+ QmlVirtualProperty = 1 << 5,
+ QmlOverrideProperty = 1 << 6,
};
Q_DECLARE_FLAGS(QmlHighlightModifiers, QmlHighlightModifier)
Q_DECLARE_OPERATORS_FOR_FLAGS(QmlHighlightModifiers)