diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-08-22 17:17:57 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-08-22 17:17:57 +0200 |
commit | f1aff1f2d495562460a87d351e62c06109045a3a (patch) | |
tree | 93e4659421a3dc1fc664b539bf7e48ce28f64e84 /src/qml/parser/qqmljsast_p.h | |
parent | 842ada7b04d68cd37df2556bf50b48d8a5f39ec4 (diff) | |
parent | 46ed14da325c6c0382c0bc54cacc347d2d7f2b0a (diff) |
Merge remote-tracking branch 'origin/dev' into wip/new-backend
Change-Id: Iff06429f948ac6cdec77a9e5bb8c5375c56fe705
Diffstat (limited to 'src/qml/parser/qqmljsast_p.h')
-rw-r--r-- | src/qml/parser/qqmljsast_p.h | 79 |
1 files changed, 78 insertions, 1 deletions
diff --git a/src/qml/parser/qqmljsast_p.h b/src/qml/parser/qqmljsast_p.h index a68ee7634e..7291cf0d3d 100644 --- a/src/qml/parser/qqmljsast_p.h +++ b/src/qml/parser/qqmljsast_p.h @@ -219,7 +219,9 @@ public: Kind_UiQualifiedPragmaId, Kind_UiScriptBinding, Kind_UiSourceElement, - Kind_UiHeaderItemList + Kind_UiHeaderItemList, + Kind_UiEnumDeclaration, + Kind_UiEnumMemberList }; inline Node() @@ -2786,6 +2788,81 @@ public: SourceLocation rbracketToken; }; +class QML_PARSER_EXPORT UiEnumMemberList: public Node +{ + QQMLJS_DECLARE_AST_NODE(UiEnumMemberList) +public: + UiEnumMemberList(const QStringRef &member, double v = 0.0) + : next(this), member(member), value(v) + { kind = K; } + + UiEnumMemberList(UiEnumMemberList *previous, const QStringRef &member) + : member(member) + { + kind = K; + next = previous->next; + previous->next = this; + value = previous->value + 1; + } + + UiEnumMemberList(UiEnumMemberList *previous, const QStringRef &member, double v) + : member(member), value(v) + { + kind = K; + next = previous->next; + previous->next = this; + } + + SourceLocation firstSourceLocation() const override + { return memberToken; } + + SourceLocation lastSourceLocation() const override + { return next ? next->lastSourceLocation() : + valueToken.isValid() ? valueToken : memberToken; } + + void accept0(Visitor *visitor) override; + + UiEnumMemberList *finish() + { + UiEnumMemberList *head = next; + next = 0; + return head; + } + +// attributes + UiEnumMemberList *next; + QStringRef member; + double value; + SourceLocation memberToken; + SourceLocation valueToken; +}; + +class QML_PARSER_EXPORT UiEnumDeclaration: public UiObjectMember +{ +public: + QQMLJS_DECLARE_AST_NODE(UiEnumDeclaration) + + UiEnumDeclaration(const QStringRef &name, + UiEnumMemberList *members) + : name(name) + , members(members) + { kind = K; } + + SourceLocation firstSourceLocation() const override + { return enumToken; } + + SourceLocation lastSourceLocation() const override + { return rbraceToken; } + + void accept0(Visitor *visitor) override; + +// attributes + SourceLocation enumToken; + SourceLocation rbraceToken; + QStringRef name; + UiEnumMemberList *members; +}; + } } // namespace AST |