aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaximilian Goldstein <max.goldstein@qt.io>2022-05-20 14:00:34 +0200
committerMaximilian Goldstein <max.goldstein@qt.io>2022-05-20 16:10:29 +0200
commit369c45beb5002e4e90e2fb3e3fe6fe0194307dad (patch)
tree83c2bf8179cf454ad1971e697e1b2cd2e2e85957
parent2f94d1686b0174fd36cfaa71849c1453e87452e8 (diff)
qqmljsimportvisitor: Fix binding source locations
We need them to be like this in order for our comparisons with IR output to work. Change-Id: If49faf015efbf0da0faabe9e01a2942cedea5b48 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
-rw-r--r--src/qmlcompiler/qqmljsimportvisitor.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/qmlcompiler/qqmljsimportvisitor.cpp b/src/qmlcompiler/qqmljsimportvisitor.cpp
index 612cc66b15..b39e004cd6 100644
--- a/src/qmlcompiler/qqmljsimportvisitor.cpp
+++ b/src/qmlcompiler/qqmljsimportvisitor.cpp
@@ -1685,7 +1685,13 @@ QQmlJSImportVisitor::parseLiteralOrScriptBinding(const QString name,
const auto *exprStatement = cast<const ExpressionStatement *>(statement);
if (exprStatement == nullptr) {
- QQmlJSMetaPropertyBinding binding(statement->firstSourceLocation(), name);
+ QQmlJS::SourceLocation location = statement->firstSourceLocation();
+
+ if (const auto *block = cast<const Block *>(statement); block && block->statements) {
+ location = block->statements->firstSourceLocation();
+ }
+
+ QQmlJSMetaPropertyBinding binding(location, name);
binding.setScriptBinding(addFunctionOrExpression(m_currentScope, name),
QQmlJSMetaPropertyBinding::Script_PropertyBinding);
m_currentScope->addOwnPropertyBinding(binding);