From 3d21c7fdc3b70a7c0dfecec8b88beb99d03c517e Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 10 Oct 2019 10:39:44 +0200 Subject: [PATCH] Retain ".pragma library" when reformatting JavaScript files For ".pragma library" there is a special flag in QmlJS::Directives. We just need to actually set the flag and query it when re-emitting the code. Change-Id: Ia3455fda18aba3219b02ecf092bb28987a6ccef5 Fixes: QTCREATORBUG-22326 Reviewed-by: Thomas Hartmann --- src/libs/qmljs/qmljsdocument.cpp | 5 +++++ src/libs/qmljs/qmljsreformatter.cpp | 7 ++++++- tests/auto/qml/reformatter/pragmalibrary.js | 3 +++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 tests/auto/qml/reformatter/pragmalibrary.js diff --git a/src/libs/qmljs/qmljsdocument.cpp b/src/libs/qmljs/qmljsdocument.cpp index c848a78c537..659531f1306 100644 --- a/src/libs/qmljs/qmljsdocument.cpp +++ b/src/libs/qmljs/qmljsdocument.cpp @@ -265,6 +265,11 @@ public: addLocation(line, column); } + void pragmaLibrary() override + { + isLibrary = true; + } + virtual QList locations() { return _locations; } const QString documentPath; diff --git a/src/libs/qmljs/qmljsreformatter.cpp b/src/libs/qmljs/qmljsreformatter.cpp index d60d6179f3d..6fdb6b034fc 100644 --- a/src/libs/qmljs/qmljsreformatter.cpp +++ b/src/libs/qmljs/qmljsreformatter.cpp @@ -24,8 +24,9 @@ ****************************************************************************/ #include "qmljsreformatter.h" - #include "qmljscodeformatter.h" +#include "qmljsbind.h" + #include "parser/qmljsast_p.h" #include "parser/qmljsastvisitor_p.h" #include "parser/qmljsengine_p.h" @@ -122,6 +123,10 @@ public: // emit directives + if (_doc->bind()->isJsLibrary()) { + out(QLatin1String(".pragma library")); + newLine(); + } const QList &directives = _doc->jsDirectives(); for (const auto &d: directives) { quint32 line = 1; diff --git a/tests/auto/qml/reformatter/pragmalibrary.js b/tests/auto/qml/reformatter/pragmalibrary.js new file mode 100644 index 00000000000..15c30ca07e5 --- /dev/null +++ b/tests/auto/qml/reformatter/pragmalibrary.js @@ -0,0 +1,3 @@ +.pragma library + +function foo() {}