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-11 11:40:12 +0100 |
commit | cf3e0559b01b249a6ec06f8826e8e05aca1301ec (patch) | |
tree | f7b693b785ed61a2fce7b1561667cee7e8a124ad /tools | |
parent | 4db89266087f43e2652143094050b48c7ee3159b (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
Pick-to: 6.0
Change-Id: I5ff13d0ae3c715db7645b412152aadb31811ce5a
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qmlformat/main.cpp | 14 | ||||
-rw-r--r-- | tools/qmlformat/restructureastvisitor.cpp | 39 | ||||
-rw-r--r-- | tools/qmlformat/restructureastvisitor.h | 5 |
3 files changed, 6 insertions, 52 deletions
diff --git a/tools/qmlformat/main.cpp b/tools/qmlformat/main.cpp index a021971710..a7e6c64bf3 100644 --- a/tools/qmlformat/main.cpp +++ b/tools/qmlformat/main.cpp @@ -44,7 +44,7 @@ #include "dumpastvisitor.h" #include "restructureastvisitor.h" -bool parseFile(const QString &filename, bool inplace, bool verbose, bool sortImports, bool force, +bool parseFile(const QString &filename, bool inplace, bool verbose, bool force, int indentWidth, bool tabs, const QString &newline) { QFile file(filename); @@ -91,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) @@ -185,9 +182,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."))); @@ -248,7 +242,7 @@ int main(int argc, char *argv[]) if (file.isEmpty()) continue; - if (!parseFile(file, true, parser.isSet("verbose"), !parser.isSet("no-sort"), + if (!parseFile(file, true, parser.isSet("verbose"), parser.isSet("force"), indentWidth, parser.isSet("tabs"), parser.value("newline"))) success = false; @@ -256,7 +250,7 @@ int main(int argc, char *argv[]) } else { for (const QString &file : parser.positionalArguments()) { if (!parseFile(file, parser.isSet("inplace"), parser.isSet("verbose"), - !parser.isSet("no-sort"), parser.isSet("force"), indentWidth, + parser.isSet("force"), indentWidth, parser.isSet("tabs"), 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 |