diff options
| -rw-r--r-- | src/lib/language/moduleloader.cpp | 11 | ||||
| -rw-r--r-- | src/lib/language/testdata/builtinFunctionInSearchPathsProperty.qbs | 8 | ||||
| -rw-r--r-- | src/lib/language/tst_language.cpp | 14 | ||||
| -rw-r--r-- | src/lib/language/tst_language.h | 1 |
4 files changed, 29 insertions, 5 deletions
diff --git a/src/lib/language/moduleloader.cpp b/src/lib/language/moduleloader.cpp index 60a89e6df..c4fce38a1 100644 --- a/src/lib/language/moduleloader.cpp +++ b/src/lib/language/moduleloader.cpp @@ -206,6 +206,12 @@ void ModuleLoader::handleProject(ModuleLoaderResult *loadResult, Item *item, return; ProjectContext projectContext; projectContext.result = loadResult; + + ProductContext dummyProductContext; + dummyProductContext.project = &projectContext; + loadBaseModule(&dummyProductContext, item); + overrideItemProperties(item, QLatin1String("project"), m_overriddenProperties); + projectContext.extraModuleSearchPaths = readExtraModuleSearchPaths(item); projectContext.extraModuleSearchPaths += FileInfo::resolvePath(item->file()->dirPath(), moduleSearchSubDir); @@ -216,11 +222,6 @@ void ModuleLoader::handleProject(ModuleLoaderResult *loadResult, Item *item, projectContext.scope = Item::create(m_pool); projectContext.scope->setProperty(QLatin1String("project"), itemValue); - ProductContext dummyProductContext; - dummyProductContext.project = &projectContext; - loadBaseModule(&dummyProductContext, item); - overrideItemProperties(item, QLatin1String("project"), m_overriddenProperties); - foreach (Item *child, item->children()) { child->setScope(projectContext.scope); if (child->typeName() == QLatin1String("Product")) { diff --git a/src/lib/language/testdata/builtinFunctionInSearchPathsProperty.qbs b/src/lib/language/testdata/builtinFunctionInSearchPathsProperty.qbs new file mode 100644 index 000000000..f8f1b4d17 --- /dev/null +++ b/src/lib/language/testdata/builtinFunctionInSearchPathsProperty.qbs @@ -0,0 +1,8 @@ +import qbs + +Project { + qbsSearchPaths: { + if (!qbs.getenv("PATH")) + throw "getenv doesn't seem to work"; + } +} diff --git a/src/lib/language/tst_language.cpp b/src/lib/language/tst_language.cpp index dfe743c1f..20a977d70 100644 --- a/src/lib/language/tst_language.cpp +++ b/src/lib/language/tst_language.cpp @@ -190,6 +190,20 @@ void TestLanguage::buildConfigStringListSyntax() QCOMPARE(exceptionCaught, false); } +void TestLanguage::builtinFunctionInSearchPathsProperty() +{ + bool exceptionCaught = false; + try { + SetupProjectParameters parameters = defaultParameters; + parameters.setProjectFilePath(testProject("builtinFunctionInSearchPathsProperty.qbs")); + QVERIFY(loader->loadProject(parameters)); + } catch (const ErrorInfo &e) { + exceptionCaught = true; + qDebug() << e.toString(); + } + QCOMPARE(exceptionCaught, false); +} + void TestLanguage::conditionalDepends() { bool exceptionCaught = false; diff --git a/src/lib/language/tst_language.h b/src/lib/language/tst_language.h index bf2b49bcc..a0dbd78eb 100644 --- a/src/lib/language/tst_language.h +++ b/src/lib/language/tst_language.h @@ -68,6 +68,7 @@ private slots: void baseProperty(); void buildConfigStringListSyntax(); + void builtinFunctionInSearchPathsProperty(); void conditionalDepends(); void environmentVariable(); void erroneousFiles_data(); |
