aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2016-08-17 15:32:35 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2016-08-17 20:44:43 +0000
commitcacad5f881b7621eeffe9eeb11ad31f741c5d6c4 (patch)
treee79f16dbc211d5e695a56bd57db5fc86988537ed
parenta8b693501f3e771cffdf3ccf975789bc55d8ce68 (diff)
Fix scoping issue for list properties
In the original fix for this issue (e34d268ba9), we forgot to take the "next" values into account. Task-number: QBS-955 Change-Id: Ie955af1b09250d6a3460aeb3ad45bc8b3292c90c Reviewed-by: Jake Petroules <jake.petroules@qt.io>
-rw-r--r--src/lib/corelib/language/modulemerger.cpp12
-rw-r--r--tests/auto/blackbox/testdata/probe-in-exported-module/dependee.qbs1
-rw-r--r--tests/auto/blackbox/testdata/probe-in-exported-module/modules/depmodule/depmodule.qbs2
-rw-r--r--tests/auto/blackbox/testdata/probe-in-exported-module/modules/mymodule/mymodule.qbs1
-rw-r--r--tests/auto/blackbox/testdata/probe-in-exported-module/modules/myothermodule/myothermodule.qbs6
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp1
6 files changed, 19 insertions, 4 deletions
diff --git a/src/lib/corelib/language/modulemerger.cpp b/src/lib/corelib/language/modulemerger.cpp
index 3ac498dd9..b468e0970 100644
--- a/src/lib/corelib/language/modulemerger.cpp
+++ b/src/lib/corelib/language/modulemerger.cpp
@@ -80,10 +80,14 @@ void ModuleMerger::replaceItemInScopes(Item *toReplace)
// instance scope, namely our merged module instead of some other instance.
foreach (const Item::Module &module, toReplace->modules()) {
foreach (const ValuePtr &property, module.item->properties()) {
- if (property->definingItem() && property->definingItem()->scope()
- && property->definingItem()->scope()->scope() == toReplace) {
- property->definingItem()->scope()->setScope(m_mergedModule.item);
- }
+ ValuePtr v = property;
+ do {
+ if (v->definingItem() && v->definingItem()->scope()
+ && v->definingItem()->scope()->scope() == toReplace) {
+ v->definingItem()->scope()->setScope(m_mergedModule.item);
+ }
+ v = v->next();
+ } while (v);
}
}
}
diff --git a/tests/auto/blackbox/testdata/probe-in-exported-module/dependee.qbs b/tests/auto/blackbox/testdata/probe-in-exported-module/dependee.qbs
index 94e266499..121ec6c39 100644
--- a/tests/auto/blackbox/testdata/probe-in-exported-module/dependee.qbs
+++ b/tests/auto/blackbox/testdata/probe-in-exported-module/dependee.qbs
@@ -2,6 +2,7 @@ import qbs
Product {
name: "dependee"
+ Depends { name: "myothermodule" }
Depends { name: "dependency" }
type: ["out", "dep-out"]
Group {
diff --git a/tests/auto/blackbox/testdata/probe-in-exported-module/modules/depmodule/depmodule.qbs b/tests/auto/blackbox/testdata/probe-in-exported-module/modules/depmodule/depmodule.qbs
index b477e2bf7..f2d7e8dce 100644
--- a/tests/auto/blackbox/testdata/probe-in-exported-module/modules/depmodule/depmodule.qbs
+++ b/tests/auto/blackbox/testdata/probe-in-exported-module/modules/depmodule/depmodule.qbs
@@ -2,6 +2,7 @@ import qbs
Module {
property string prop
+ property stringList listProp: []
Rule {
inputs: ["dep-in"]
@@ -14,6 +15,7 @@ Module {
cmd.description = "Creating dep-out artifact";
cmd.sourceCode = function() {
console.info("prop: " + product.moduleProperty("depmodule", "prop"));
+ console.info("listProp: " + product.moduleProperty("depmodule", "listProp"));
};
return [cmd];
}
diff --git a/tests/auto/blackbox/testdata/probe-in-exported-module/modules/mymodule/mymodule.qbs b/tests/auto/blackbox/testdata/probe-in-exported-module/modules/mymodule/mymodule.qbs
index af1c33049..e68899ae2 100644
--- a/tests/auto/blackbox/testdata/probe-in-exported-module/modules/mymodule/mymodule.qbs
+++ b/tests/auto/blackbox/testdata/probe-in-exported-module/modules/mymodule/mymodule.qbs
@@ -8,6 +8,7 @@ Module {
}
property bool found: theProbe.found
depmodule.prop: found ? "yes" : "no"
+ depmodule.listProp: theProbe.found ? ["my"] : []
Rule {
inputs: ["in"]
diff --git a/tests/auto/blackbox/testdata/probe-in-exported-module/modules/myothermodule/myothermodule.qbs b/tests/auto/blackbox/testdata/probe-in-exported-module/modules/myothermodule/myothermodule.qbs
new file mode 100644
index 000000000..d3009f532
--- /dev/null
+++ b/tests/auto/blackbox/testdata/probe-in-exported-module/modules/myothermodule/myothermodule.qbs
@@ -0,0 +1,6 @@
+import qbs
+
+Module {
+ Depends { name: "depmodule" }
+ depmodule.listProp: ["myother"]
+}
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 3619cf319..a6581a5d9 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -2075,6 +2075,7 @@ void TestBlackbox::probeInExportedModule()
<< QLatin1String("probe-in-exported-module.qbs"))), 0);
QVERIFY2(m_qbsStdout.contains("found: true"), m_qbsStdout.constData());
QVERIFY2(m_qbsStdout.contains("prop: yes"), m_qbsStdout.constData());
+ QVERIFY2(m_qbsStdout.contains("listProp: my,myother"), m_qbsStdout.constData());
}
void TestBlackbox::probesAndArrayProperties()