aboutsummaryrefslogtreecommitdiffstats
path: root/tools/qmljs/qmljs.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2025-06-13 15:05:01 +0200
committerUlf Hermann <ulf.hermann@qt.io>2025-06-18 08:05:17 +0200
commit1c6a6659177fb5fac4aa49e89912df4564f6ec80 (patch)
treea4210de614aee058be3f677e97be5400d58392dd /tools/qmljs/qmljs.cpp
parent6204cf5bbd199005c8c79448b1d7055dbd7fadfb (diff)
QtQml: Don't use loadModule in qmljs
We need to get rid of it. Use the type loader instead. Change-Id: I63be8eab38401feed4e6461b03804e8335f41899 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Diffstat (limited to 'tools/qmljs/qmljs.cpp')
-rw-r--r--tools/qmljs/qmljs.cpp55
1 files changed, 33 insertions, 22 deletions
diff --git a/tools/qmljs/qmljs.cpp b/tools/qmljs/qmljs.cpp
index 728aa00cda..b583d6fa3a 100644
--- a/tools/qmljs/qmljs.cpp
+++ b/tools/qmljs/qmljs.cpp
@@ -1,29 +1,31 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-#include "private/qv4object_p.h"
-#include "private/qv4runtime_p.h"
-#include "private/qv4functionobject_p.h"
-#include "private/qv4errorobject_p.h"
-#include "private/qv4globalobject_p.h"
-#include "private/qv4codegen_p.h"
-#include "private/qv4objectproto_p.h"
-#include "private/qv4mm_p.h"
-#include "private/qv4context_p.h"
-#include "private/qv4script_p.h"
-#include "private/qv4string_p.h"
-#include "private/qv4module_p.h"
-#include "private/qqmlbuiltinfunctions_p.h"
-
-#include <QtCore/QCoreApplication>
-#include <QtCore/QFile>
-#include <QtCore/QFileInfo>
-#include <QtCore/QDateTime>
-#include <QtCore/qcommandlineparser.h>
+#include <private/qqmlbuiltinfunctions_p.h>
+#include <private/qqmljsast_p.h>
#include <private/qqmljsengine_p.h>
#include <private/qqmljslexer_p.h>
#include <private/qqmljsparser_p.h>
-#include <private/qqmljsast_p.h>
+#include <private/qqmlscriptblob_p.h>
+#include <private/qqmltypeloader_p.h>
+#include <private/qv4codegen_p.h>
+#include <private/qv4context_p.h>
+#include <private/qv4errorobject_p.h>
+#include <private/qv4functionobject_p.h>
+#include <private/qv4globalobject_p.h>
+#include <private/qv4mm_p.h>
+#include <private/qv4module_p.h>
+#include <private/qv4object_p.h>
+#include <private/qv4objectproto_p.h>
+#include <private/qv4runtime_p.h>
+#include <private/qv4script_p.h>
+#include <private/qv4string_p.h>
+
+#include <QtCore/qcommandlineparser.h>
+#include <QtCore/qcoreapplication.h>
+#include <QtCore/qdatetime.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qfileinfo.h>
#include <iostream>
@@ -103,11 +105,20 @@ int main(int argc, char *argv[])
for (const QString &fn : args) {
QV4::ScopedValue result(scope);
if (runAsModule) {
- if (auto module
- = vm.loadModule(QUrl::fromLocalFile(QFileInfo(fn).absoluteFilePath()))) {
+ QV4::ScopedValue result(scope);
+ QUrl url = QUrl::fromLocalFile(QFileInfo(fn).absoluteFilePath());
+ if (!fn.endsWith(QLatin1String(".mjs")))
+ url.setFragment(QLatin1String("module"));
+
+ QQmlRefPointer<QQmlScriptBlob> blob = vm.typeLoader()->getScript(url);
+ if (blob->isComplete()) {
+ const auto module
+ = vm.executableCompilationUnit(blob->scriptData()->compilationUnit());
if (module->instantiate())
module->evaluate();
} else {
+ // Local URL is loaded synchronously.
+ Q_ASSERT(blob->isError());
vm.throwError(QStringLiteral("Could not load module file"));
}
} else {