aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorMaximilian Goldstein <max.goldstein@qt.io>2020-12-10 15:58:36 +0100
committerMaximilian Goldstein <max.goldstein@qt.io>2020-12-11 11:40:12 +0100
commitcf3e0559b01b249a6ec06f8826e8e05aca1301ec (patch)
treef7b693b785ed61a2fce7b1561667cee7e8a124ad /tools
parent4db89266087f43e2652143094050b48c7ee3159b (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.cpp14
-rw-r--r--tools/qmlformat/restructureastvisitor.cpp39
-rw-r--r--tools/qmlformat/restructureastvisitor.h5
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