diff options
| author | Dmitrii Akshintsev <[email protected]> | 2025-11-19 10:59:47 +0100 |
|---|---|---|
| committer | Dmitrii Akshintsev <[email protected]> | 2025-12-04 20:01:19 +0000 |
| commit | aab702fc84bc08e826bb8aaae00520923a37a346 (patch) | |
| tree | d2d6c01ddb81615c5ca5671d2299ed17895ada80 /src | |
| parent | 4da6cc5653d3b4969bd9b54419bdfd31a169c8f8 (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.cpp | 8 | ||||
| -rw-r--r-- | src/qmlls/qqmlsemantictokens.cpp | 14 | ||||
| -rw-r--r-- | src/qmlls/qqmlsemantictokens_p.h | 10 |
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) |
