diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2023-02-16 11:28:33 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2023-02-22 11:00:19 +0100 |
commit | bdb2bb561054ad7e95ced2f4b79533d13000172b (patch) | |
tree | 8cf445d89c335bd13ca21720c87aa5bc69271ece /src/qml/parser/qqmljsast_p.h | |
parent | 763dad999dc5bf6109158283c9dc6b396a4e75f6 (diff) |
QML: Allow pragmas with multiple values
This will be needed in follow-up changes.
Task-number: QTBUG-94807
Change-Id: I6243ea31290251c30dd0aceaae878568bc1c0525
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src/qml/parser/qqmljsast_p.h')
-rw-r--r-- | src/qml/parser/qqmljsast_p.h | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/src/qml/parser/qqmljsast_p.h b/src/qml/parser/qqmljsast_p.h index 77af38aaca..e7052f324e 100644 --- a/src/qml/parser/qqmljsast_p.h +++ b/src/qml/parser/qqmljsast_p.h @@ -222,6 +222,7 @@ public: Kind_UiObjectInitializer, Kind_UiObjectMemberList, Kind_UiArrayMemberList, + Kind_UiPragmaValueList, Kind_UiPragma, Kind_UiProgram, Kind_UiParameterList, @@ -3074,13 +3075,53 @@ public: UiObjectMember *member; }; +class QML_PARSER_EXPORT UiPragmaValueList: public Node +{ +public: + QQMLJS_DECLARE_AST_NODE(UiPragmaValueList) + + UiPragmaValueList(QStringView value) + : value(value) + , next(this) + { + kind = K; + } + + UiPragmaValueList(UiPragmaValueList *previous, QStringView value) + : value(value) + { + kind = K; + next = previous->next; + previous->next = this; + } + + void accept0(BaseVisitor *visitor) override; + + SourceLocation firstSourceLocation() const override + { return location; } + + SourceLocation lastSourceLocation() const override + { return lastListElement(this)->location; } + + UiPragmaValueList *finish() + { + UiPragmaValueList *head = next; + next = nullptr; + return head; + } + + QStringView value; + UiPragmaValueList *next; + SourceLocation location; +}; + class QML_PARSER_EXPORT UiPragma: public Node { public: QQMLJS_DECLARE_AST_NODE(UiPragma) - UiPragma(QStringView name, QStringView value = {}) - : name(name), value(value) + UiPragma(QStringView name, UiPragmaValueList *values = nullptr) + : name(name), values(values) { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -3093,7 +3134,7 @@ public: // attributes QStringView name; - QStringView value; + UiPragmaValueList *values; SourceLocation pragmaToken; SourceLocation semicolonToken; }; |