diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2017-11-08 15:05:06 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2017-11-08 14:27:32 +0000 |
commit | 97f8ec24fa1cfce7efdf96ab5ab779fff6940bf9 (patch) | |
tree | c231427abac4d89cff72f30192b107379c727974 | |
parent | 4d4cb193e40ff0dd55b2a201ab4fc783dabe1214 (diff) |
Fix import search path precedence
Items located lower in the search path stack would overwrite existing,
higher-priorized entries.
Change-Id: Ie7660428cf6f0969bf880941344a9f88cdb51021
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
9 files changed, 37 insertions, 1 deletions
diff --git a/src/lib/corelib/language/astimportshandler.cpp b/src/lib/corelib/language/astimportshandler.cpp index 783b67dfe..c4c701f22 100644 --- a/src/lib/corelib/language/astimportshandler.cpp +++ b/src/lib/corelib/language/astimportshandler.cpp @@ -232,7 +232,8 @@ bool ASTImportsHandler::addPrototype(const QString &fileName, const QString &fil if (!as.isEmpty()) prototypeName.append(as); prototypeName.append(componentName); - m_typeNameToFile.insert(prototypeName, filePath); + if (!m_typeNameToFile.contains(prototypeName)) + m_typeNameToFile.insert(prototypeName, filePath); return true; } diff --git a/tests/auto/blackbox/testdata/import-searchpath/import-searchpath.qbs b/tests/auto/blackbox/testdata/import-searchpath/import-searchpath.qbs new file mode 100644 index 000000000..b4d0194a2 --- /dev/null +++ b/tests/auto/blackbox/testdata/import-searchpath/import-searchpath.qbs @@ -0,0 +1,11 @@ +import qbs + +Project { + Project { + qbsSearchPaths: ["qbs"] + references: ["src/import-searchpath-app1.qbs"] + } + Project { + references: ["src/import-searchpath-app2.qbs"] + } +} diff --git a/tests/auto/blackbox/testdata/import-searchpath/qbs/imports/CppApplication.qbs b/tests/auto/blackbox/testdata/import-searchpath/qbs/imports/CppApplication.qbs new file mode 100644 index 000000000..18dc695f3 --- /dev/null +++ b/tests/auto/blackbox/testdata/import-searchpath/qbs/imports/CppApplication.qbs @@ -0,0 +1,4 @@ +import qbs + +Product { +} diff --git a/tests/auto/blackbox/testdata/import-searchpath/src/import-searchpath-app1.qbs b/tests/auto/blackbox/testdata/import-searchpath/src/import-searchpath-app1.qbs new file mode 100644 index 000000000..c12158d24 --- /dev/null +++ b/tests/auto/blackbox/testdata/import-searchpath/src/import-searchpath-app1.qbs @@ -0,0 +1,5 @@ +import qbs + +CppApplication { + files: ["somefile.cpp"] +} diff --git a/tests/auto/blackbox/testdata/import-searchpath/src/import-searchpath-app2.qbs b/tests/auto/blackbox/testdata/import-searchpath/src/import-searchpath-app2.qbs new file mode 100644 index 000000000..f6ae698a0 --- /dev/null +++ b/tests/auto/blackbox/testdata/import-searchpath/src/import-searchpath-app2.qbs @@ -0,0 +1,5 @@ +import qbs + +CppApplication { + files: ["main.cpp"] +} diff --git a/tests/auto/blackbox/testdata/import-searchpath/src/main.cpp b/tests/auto/blackbox/testdata/import-searchpath/src/main.cpp new file mode 100644 index 000000000..8b8d58de0 --- /dev/null +++ b/tests/auto/blackbox/testdata/import-searchpath/src/main.cpp @@ -0,0 +1 @@ +int main() { } diff --git a/tests/auto/blackbox/testdata/import-searchpath/src/somefile.cpp b/tests/auto/blackbox/testdata/import-searchpath/src/somefile.cpp new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/auto/blackbox/testdata/import-searchpath/src/somefile.cpp diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp index 3b123f779..3981b99ad 100644 --- a/tests/auto/blackbox/tst_blackbox.cpp +++ b/tests/auto/blackbox/tst_blackbox.cpp @@ -4796,6 +4796,14 @@ void TestBlackbox::importInPropertiesCondition() QCOMPARE(runQbs(), 0); } +void TestBlackbox::importSearchPath() +{ + QDir::setCurrent(testDataDir + "/import-searchpath"); + QCOMPARE(runQbs(), 0); + QVERIFY2(m_qbsStdout.contains("compiling main.cpp"), m_qbsStdout.constData()); + QVERIFY2(!m_qbsStdout.contains("compiling somefile.cpp"), m_qbsStdout.constData()); +} + 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 07917746c..a75cf1aa4 100644 --- a/tests/auto/blackbox/tst_blackbox.h +++ b/tests/auto/blackbox/tst_blackbox.h @@ -94,6 +94,7 @@ private slots: void generatedArtifactAsInputToDynamicRule(); void groupsInModules(); void importInPropertiesCondition(); + void importSearchPath(); void importingProduct(); void importsConflict(); void includeLookup(); |