From 229e3220ef521dd4389808fd311ea5ae33ab0cae Mon Sep 17 00:00:00 2001 From: Fawzi Mohamed Date: Tue, 11 Feb 2020 16:32:04 +0100 Subject: qmlformat: preserve annotations Change-Id: I22e72d91f6d422e93a7ebc642a8449cb490aec20 Reviewed-by: Ulf Hermann Reviewed-by: Maximilian Goldstein --- tools/qmlformat/dumpastvisitor.cpp | 42 ++++++++++++++++++++++++++++++++++++++ tools/qmlformat/dumpastvisitor.h | 5 +++++ 2 files changed, 47 insertions(+) (limited to 'tools') diff --git a/tools/qmlformat/dumpastvisitor.cpp b/tools/qmlformat/dumpastvisitor.cpp index 75d9fa8a4f..7f1e285423 100644 --- a/tools/qmlformat/dumpastvisitor.cpp +++ b/tools/qmlformat/dumpastvisitor.cpp @@ -52,6 +52,14 @@ DumpAstVisitor::DumpAstVisitor(Node *rootNode, CommentAstVisitor *comment): m_co m_result = lines.join("\n"); } +bool DumpAstVisitor::preVisit(Node *el) +{ + UiObjectMember *m = el->uiObjectMemberCast(); + if (m != 0) + Node::accept(m->annotations, this); + return true; +} + static QString parseUiQualifiedId(UiQualifiedId *id) { QString name = id->name.toString(); @@ -1247,3 +1255,37 @@ bool DumpAstVisitor::visit(UiPragma *node) { return true; } + +bool DumpAstVisitor::visit(UiAnnotation *node) +{ + if (scope().m_firstObject) { + if (scope().m_firstOfAll) + scope().m_firstOfAll = false; + else + addNewLine(); + + scope().m_firstObject = false; + } + + addLine(getComment(node, Comment::Location::Front)); + addLine(QLatin1String("@") + parseUiQualifiedId(node->qualifiedTypeNameId) + " {"); + + m_indentLevel++; + + ScopeProperties props; + props.m_bindings = findBindings(node->initializer->members); + m_scope_properties.push(props); + + m_result += getOrphanedComments(node); + + return true; +} + +void DumpAstVisitor::endVisit(UiAnnotation *node) { + m_indentLevel--; + + m_scope_properties.pop(); + + addLine("}"); + addLine(getComment(node, Comment::Location::Back)); +} diff --git a/tools/qmlformat/dumpastvisitor.h b/tools/qmlformat/dumpastvisitor.h index 8c34e01960..1e25bd9190 100644 --- a/tools/qmlformat/dumpastvisitor.h +++ b/tools/qmlformat/dumpastvisitor.h @@ -46,6 +46,8 @@ public: QString toString() const { return m_result; } + bool preVisit(Node *) override; + bool visit(UiScriptBinding *node) override; bool visit(UiArrayBinding *node) override; @@ -67,6 +69,9 @@ public: bool visit(UiImport *node) override; bool visit(UiPragma *node) override; + bool visit(UiAnnotation *node) override; + void endVisit(UiAnnotation *node) override; + void throwRecursionDepthError() override {} bool error() const { return m_error; } -- cgit v1.2.3