diff options
author | Maximilian Goldstein <max.goldstein@qt.io> | 2020-12-10 15:58:36 +0100 |
---|---|---|
committer | Maximilian Goldstein <max.goldstein@qt.io> | 2020-12-16 10:16:13 +0100 |
commit | 224cebe0d96af0f3f4de27aff03918fc319687fa (patch) | |
tree | 4b06214708da9b6a2b6c1ee8277fdf3cfe716302 /tools | |
parent | dd1db630b4f236b1cb52b89d5de246ad719d3676 (diff) |
qmlformat: Remove import sorting
Remove import sorting due to the fact that sorting imports can break code.
[ChangeLog][QML Tooling][qmlformat] Remove import sorting and the (now obsolete) -n parameter to disable it
Fixes: QTBUG-89295
Change-Id: I5ff13d0ae3c715db7645b412152aadb31811ce5a
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
(cherry picked from commit cf3e0559b01b249a6ec06f8826e8e05aca1301ec)
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qmlformat/main.cpp | 19 | ||||
-rw-r--r-- | tools/qmlformat/restructureastvisitor.cpp | 39 | ||||
-rw-r--r-- | tools/qmlformat/restructureastvisitor.h | 5 |
3 files changed, 9 insertions, 54 deletions
diff --git a/tools/qmlformat/main.cpp b/tools/qmlformat/main.cpp index f9afd10a2c..1461fea357 100644 --- a/tools/qmlformat/main.cpp +++ b/tools/qmlformat/main.cpp @@ -44,7 +44,8 @@ #include "dumpastvisitor.h" #include "restructureastvisitor.h" -bool parseFile(const QString& filename, bool inplace, bool verbose, bool sortImports, bool force, const QString& newline) +bool parseFile(const QString &filename, bool inplace, bool verbose, bool force, + const QString &newline) { QFile file(filename); @@ -90,11 +91,8 @@ bool parseFile(const QString& filename, bool inplace, bool verbose, bool sortImp qWarning().noquote() << orphaned << "comments are orphans."; } - if (verbose && sortImports) - qWarning().noquote() << "Sorting imports"; - // Do the actual restructuring - RestructureAstVisitor restructure(parser.rootNode(), sortImports); + RestructureAstVisitor restructure(parser.rootNode()); // Turn AST back into source code if (verbose) @@ -182,9 +180,6 @@ int main(int argc, char *argv[]) parser.addOption(QCommandLineOption({"V", "verbose"}, QStringLiteral("Verbose mode. Outputs more detailed information."))); - parser.addOption(QCommandLineOption({"n", "no-sort"}, - QStringLiteral("Do not sort imports."))); - parser.addOption(QCommandLineOption({"i", "inplace"}, QStringLiteral("Edit file in-place instead of outputting to stdout."))); @@ -225,15 +220,15 @@ int main(int argc, char *argv[]) if (file.isEmpty()) continue; - if (!parseFile(file, true, parser.isSet("verbose"), !parser.isSet("no-sort"), - parser.isSet("force"), parser.value("newline"))) + if (!parseFile(file, true, parser.isSet("verbose"), + parser.isSet("force"), + parser.value("newline"))) success = false; } } else { for (const QString &file : parser.positionalArguments()) { if (!parseFile(file, parser.isSet("inplace"), parser.isSet("verbose"), - !parser.isSet("no-sort"), parser.isSet("force"), - parser.value("newline"))) + parser.isSet("force"), parser.value("newline"))) success = false; } } diff --git a/tools/qmlformat/restructureastvisitor.cpp b/tools/qmlformat/restructureastvisitor.cpp index 7cce0e8034..45957230d8 100644 --- a/tools/qmlformat/restructureastvisitor.cpp +++ b/tools/qmlformat/restructureastvisitor.cpp @@ -30,7 +30,7 @@ #include <QList> -RestructureAstVisitor::RestructureAstVisitor(Node *rootNode, bool sortImports) : m_sortImports(sortImports) +RestructureAstVisitor::RestructureAstVisitor(Node *rootNode) { rootNode->accept(this); } @@ -69,43 +69,6 @@ static QString parseUiQualifiedId(UiQualifiedId *id) return name; } -void RestructureAstVisitor::endVisit(UiHeaderItemList *node) -{ - QList<Node *> correctOrder; - - auto imports = findKind<UiImport>(node); - - if (!m_sortImports) - return; - - // Sort imports - std::sort(imports.begin(), imports.end(), [](UiImport *a, UiImport *b) - { - auto nameA = a->fileName.isEmpty() ? parseUiQualifiedId(a->importUri) - : a->fileName.toString(); - auto nameB = b->fileName.isEmpty() ? parseUiQualifiedId(b->importUri) - : b->fileName.toString(); - - return nameA < nameB; - }); - - // Add imports - for (auto *import : imports) - correctOrder.append(import); - - // Add all the other items - for (auto *item = node; item != nullptr; item = item->next) { - if (!correctOrder.contains(item->headerItem)) - correctOrder.append(item->headerItem); - } - - // Rebuild member list from correctOrder - for (auto *item = node; item != nullptr; item = item->next) { - item->headerItem = correctOrder.front(); - correctOrder.pop_front(); - } -} - void RestructureAstVisitor::endVisit(UiObjectMemberList *node) { QList<UiObjectMember*> correctOrder; diff --git a/tools/qmlformat/restructureastvisitor.h b/tools/qmlformat/restructureastvisitor.h index a2195c8c2e..7b3573300f 100644 --- a/tools/qmlformat/restructureastvisitor.h +++ b/tools/qmlformat/restructureastvisitor.h @@ -37,14 +37,11 @@ using namespace QQmlJS::AST; class RestructureAstVisitor : protected Visitor { public: - RestructureAstVisitor(Node *rootNode, bool sortImports); + RestructureAstVisitor(Node *rootNode); void throwRecursionDepthError() override {} void endVisit(UiObjectMemberList *node) override; - void endVisit(UiHeaderItemList *node) override; -private: - bool m_sortImports = false; }; #endif // RESTRUCTUREASTVISITOR_H |