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 <thomas.hartmann@qt.io>
This commit is contained in:
Ulf Hermann
2019-10-10 10:39:44 +02:00
parent c4aa6d71d9
commit 3d21c7fdc3
3 changed files with 14 additions and 1 deletions

View File

@@ -265,6 +265,11 @@ public:
addLocation(line, column); addLocation(line, column);
} }
void pragmaLibrary() override
{
isLibrary = true;
}
virtual QList<SourceLocation> locations() { return _locations; } virtual QList<SourceLocation> locations() { return _locations; }
const QString documentPath; const QString documentPath;

View File

@@ -24,8 +24,9 @@
****************************************************************************/ ****************************************************************************/
#include "qmljsreformatter.h" #include "qmljsreformatter.h"
#include "qmljscodeformatter.h" #include "qmljscodeformatter.h"
#include "qmljsbind.h"
#include "parser/qmljsast_p.h" #include "parser/qmljsast_p.h"
#include "parser/qmljsastvisitor_p.h" #include "parser/qmljsastvisitor_p.h"
#include "parser/qmljsengine_p.h" #include "parser/qmljsengine_p.h"
@@ -122,6 +123,10 @@ public:
// emit directives // emit directives
if (_doc->bind()->isJsLibrary()) {
out(QLatin1String(".pragma library"));
newLine();
}
const QList<SourceLocation> &directives = _doc->jsDirectives(); const QList<SourceLocation> &directives = _doc->jsDirectives();
for (const auto &d: directives) { for (const auto &d: directives) {
quint32 line = 1; quint32 line = 1;

View File

@@ -0,0 +1,3 @@
.pragma library
function foo() {}