aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2017-11-08 15:05:06 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2017-11-08 14:27:32 +0000
commit97f8ec24fa1cfce7efdf96ab5ab779fff6940bf9 (patch)
treec231427abac4d89cff72f30192b107379c727974
parent4d4cb193e40ff0dd55b2a201ab4fc783dabe1214 (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>
-rw-r--r--src/lib/corelib/language/astimportshandler.cpp3
-rw-r--r--tests/auto/blackbox/testdata/import-searchpath/import-searchpath.qbs11
-rw-r--r--tests/auto/blackbox/testdata/import-searchpath/qbs/imports/CppApplication.qbs4
-rw-r--r--tests/auto/blackbox/testdata/import-searchpath/src/import-searchpath-app1.qbs5
-rw-r--r--tests/auto/blackbox/testdata/import-searchpath/src/import-searchpath-app2.qbs5
-rw-r--r--tests/auto/blackbox/testdata/import-searchpath/src/main.cpp1
-rw-r--r--tests/auto/blackbox/testdata/import-searchpath/src/somefile.cpp0
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp8
-rw-r--r--tests/auto/blackbox/tst_blackbox.h1
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();