diff options
author | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2016-08-18 15:54:13 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2016-08-29 08:36:26 +0000 |
commit | f465a59fcd181d94b77eeb821485a8bc39ae960e (patch) | |
tree | f3b9162b63edd5b96a1f5e22ea391dd87f8e7560 | |
parent | 33d36b3f2f8c2a9e28542f423d33385b0cb8f372 (diff) |
Fix file scope for Properties conditions
The file scope must correspond to the file where the Properties item is
instantiated, because that's where the imports need to be looked up.
Change-Id: Icfc0fd30bd43ee069ec7a4d2ea1a1e9b88560b2d
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
6 files changed, 28 insertions, 1 deletions
diff --git a/src/lib/corelib/language/evaluatorscriptclass.cpp b/src/lib/corelib/language/evaluatorscriptclass.cpp index ecd7890db..8230d3990 100644 --- a/src/lib/corelib/language/evaluatorscriptclass.cpp +++ b/src/lib/corelib/language/evaluatorscriptclass.cpp @@ -177,7 +177,7 @@ private: ? data->item->scope() : data->item; conditionScope = data->evaluator->scriptValue(conditionScopeItem); QBS_ASSERT(conditionScope.isObject(), return); - conditionFileScope = data->evaluator->fileScope(conditionScopeItem->file()); + conditionFileScope = data->evaluator->fileScope(value->file()); } engine->currentContext()->pushScope(conditionFileScope); pushItemScopes(conditionScopeItem); diff --git a/tests/auto/blackbox/testdata/import-in-properties-condition/import-in-properties-condition.qbs b/tests/auto/blackbox/testdata/import-in-properties-condition/import-in-properties-condition.qbs new file mode 100644 index 000000000..32b8d2a03 --- /dev/null +++ b/tests/auto/blackbox/testdata/import-in-properties-condition/import-in-properties-condition.qbs @@ -0,0 +1,5 @@ +import qbs + +Product { + Depends { name: "amodule" } +} diff --git a/tests/auto/blackbox/testdata/import-in-properties-condition/modules/amodule/m.qbs b/tests/auto/blackbox/testdata/import-in-properties-condition/modules/amodule/m.qbs new file mode 100644 index 000000000..92ea2cd45 --- /dev/null +++ b/tests/auto/blackbox/testdata/import-in-properties-condition/modules/amodule/m.qbs @@ -0,0 +1,10 @@ +import qbs +import qbs.File + +Module { + Depends { name: "depmodule" } + Properties { + condition: File.exists("blubb") + depmodule.prop: "blubb" + } +} diff --git a/tests/auto/blackbox/testdata/import-in-properties-condition/modules/depmodule/m.qbs b/tests/auto/blackbox/testdata/import-in-properties-condition/modules/depmodule/m.qbs new file mode 100644 index 000000000..4c2f9281d --- /dev/null +++ b/tests/auto/blackbox/testdata/import-in-properties-condition/modules/depmodule/m.qbs @@ -0,0 +1,5 @@ +import qbs + +Module { + property string prop +} diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp index 784477986..60fe58d20 100644 --- a/tests/auto/blackbox/tst_blackbox.cpp +++ b/tests/auto/blackbox/tst_blackbox.cpp @@ -4187,6 +4187,12 @@ void TestBlackbox::iconsetApp() QVERIFY(regularFileExists(relativeProductBuildDir("iconsetapp") + "/iconsetapp.app/Contents/Resources/white.icns")); } +void TestBlackbox::importInPropertiesCondition() +{ + QDir::setCurrent(testDataDir + "/import-in-properties-condition"); + QCOMPARE(runQbs(), 0); +} + void TestBlackbox::importingProduct() { QDir::setCurrent(testDataDir + "/importing-product"); diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h index 5d70b8dc0..64e3b0770 100644 --- a/tests/auto/blackbox/tst_blackbox.h +++ b/tests/auto/blackbox/tst_blackbox.h @@ -137,6 +137,7 @@ private slots: void groupsInModules(); void iconset(); void iconsetApp(); + void importInPropertiesCondition(); void importingProduct(); void infoPlist(); void inputsFromDependencies(); |