diff options
| author | Ulf Hermann <ulf.hermann@qt.io> | 2025-01-24 15:30:16 +0100 |
|---|---|---|
| committer | Ulf Hermann <ulf.hermann@qt.io> | 2025-02-04 16:49:20 +0100 |
| commit | c9778d2e9c41036cbd59976c51927d746bb78bcc (patch) | |
| tree | 8d707606da595851d48f178f946c481bf290ce0a /src/qml/compiler/qv4codegen.cpp | |
| parent | c350c3888ec2a24e6d4cbf1d644a0867d4eabc67 (diff) | |
QtQml: Fix assignment of fileName and URL during compilation
We need to assign them right away when creating the module. If we do it
later on, there are a lot of different code paths to cover and in fact
we were missing some.
Pick-to: 6.9 6.8
Task-number: QTBUG-133053
Change-Id: I57e381c787f504eb9bcd8c2041e41b4f1d1f8b53
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/compiler/qv4codegen.cpp')
| -rw-r--r-- | src/qml/compiler/qv4codegen.cpp | 37 |
1 files changed, 8 insertions, 29 deletions
diff --git a/src/qml/compiler/qv4codegen.cpp b/src/qml/compiler/qv4codegen.cpp index 27205fc623..bd98c9fe69 100644 --- a/src/qml/compiler/qv4codegen.cpp +++ b/src/qml/compiler/qv4codegen.cpp @@ -189,22 +189,14 @@ void Codegen::forEachGlobalName(qxp::function_ref<void (QLatin1StringView)> &&ha handler(name); } -void Codegen::generateFromProgram(const QString &fileName, - const QString &finalUrl, - const QString &sourceCode, - Program *node, - Module *module, - ContextType contextType) +void Codegen::generateFromProgram( + const QString &sourceCode, Program *node, Module *module, ContextType contextType) { Q_ASSERT(node); _module = module; _context = nullptr; - // ### should be set on the module outside of this method - _module->fileName = fileName; - _module->finalUrl = finalUrl; - ScanFunctions scan(this, sourceCode, contextType); scan(node); @@ -214,21 +206,13 @@ void Codegen::generateFromProgram(const QString &fileName, defineFunction(QStringLiteral("%entry"), node, nullptr, node->statements); } -void Codegen::generateFromModule(const QString &fileName, - const QString &finalUrl, - const QString &sourceCode, - ESModule *node, - Module *module) +void Codegen::generateFromModule(const QString &sourceCode, ESModule *node, Module *module) { Q_ASSERT(node); _module = module; _context = nullptr; - // ### should be set on the module outside of this method - _module->fileName = fileName; - _module->finalUrl = finalUrl; - ScanFunctions scan(this, sourceCode, ContextType::ESModule); scan(node); @@ -260,16 +244,11 @@ void Codegen::generateFromModule(const QString &fileName, defineFunction(QStringLiteral("%entry"), node, nullptr, node->body); } -void Codegen::generateFromModule( - const QString &fileName, const QString &finalUrl, const Value &value, Module *module) +void Codegen::generateFromModule(const Value &value, Module *module) { _module = module; _context = nullptr; - // ### should be set on the module outside of this method - _module->fileName = fileName; - _module->finalUrl = finalUrl; - _module->newContext(nullptr, nullptr, ContextType::ESModule); enterContext(nullptr); @@ -4242,12 +4221,12 @@ QQmlRefPointer<QV4::CompiledData::CompilationUnit> Codegen::compileModule( } using namespace QV4::Compiler; - Compiler::Module compilerModule(debugMode); + Compiler::Module compilerModule(url, url, debugMode); compilerModule.unitFlags |= CompiledData::Unit::IsESModule; compilerModule.sourceTimeStamp = sourceTimeStamp; JSUnitGenerator jsGenerator(&compilerModule); Codegen cg(&jsGenerator, /*strictMode*/true); - cg.generateFromModule(url, url, sourceCode, moduleNode, &compilerModule); + cg.generateFromModule(sourceCode, moduleNode, &compilerModule); if (cg.hasError()) { if (diagnostics) *diagnostics << cg.error(); @@ -4261,11 +4240,11 @@ const QV4::CompiledData::Unit *Codegen::generateNativeModuleUnitData( bool debugMode, const QString &url, const Value &value) { using namespace QV4::Compiler; - Compiler::Module compilerModule(debugMode); + Compiler::Module compilerModule(url, url, debugMode); compilerModule.unitFlags |= CompiledData::Unit::IsESModule; JSUnitGenerator jsGenerator(&compilerModule); Codegen cg(&jsGenerator, /*strictMode*/true); - cg.generateFromModule(url, url, value, &compilerModule); + cg.generateFromModule(value, &compilerModule); Q_ASSERT(!cg.hasError()); return jsGenerator.generateUnit(); } |
