summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@theqtcompany.com>2015-08-11 10:41:30 +0200
committerChristian Kandeler <christian.kandeler@theqtcompany.com>2015-08-11 09:58:53 +0000
commita84d578eddad00007f88a78ba2c4e425cde9377e (patch)
tree28be20fbee6f9c35c4aa962188c3e5e7956290ec
parent254df5fb2c797e3e5e46c47f884f976e108bcfe4 (diff)
downloadqbs-a84d578eddad00007f88a78ba2c4e425cde9377e.tar.gz
PropertyDeclarationCheck: Take Export items into account.
Only skip these items when they occur as child items (of the exporting product), but not when they occur as part of item values (of the importing products). Change-Id: Id0193c2c44250461c69357705f8703b8defa082e Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
-rw-r--r--src/lib/corelib/language/moduleloader.cpp8
-rw-r--r--src/lib/corelib/language/testdata/erroneous/undeclared_property_in_export_item.qbs14
-rw-r--r--src/lib/corelib/language/tst_language.cpp2
3 files changed, 20 insertions, 4 deletions
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index 552deb24e..ea571721e 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -207,8 +207,6 @@ private:
void handleItem(Item *item)
{
if (m_disabledItems.contains(item)
- || item->typeName() == QLatin1String("Export")
-
// The Properties child of a SubProject item is not a regular item.
|| item->typeName() == QLatin1String("Properties")) {
return;
@@ -224,8 +222,10 @@ private:
it.value()->apply(this);
}
m_parentItem = oldParentItem;
- foreach (Item *child, item->children())
- handleItem(child);
+ foreach (Item *child, item->children()) {
+ if (child->typeName() != QLatin1String("Export"))
+ handleItem(child);
+ }
}
void handle(VariantValue *) { /* only created internally - no need to check */ }
diff --git a/src/lib/corelib/language/testdata/erroneous/undeclared_property_in_export_item.qbs b/src/lib/corelib/language/testdata/erroneous/undeclared_property_in_export_item.qbs
new file mode 100644
index 000000000..e5fc74b74
--- /dev/null
+++ b/src/lib/corelib/language/testdata/erroneous/undeclared_property_in_export_item.qbs
@@ -0,0 +1,14 @@
+import qbs
+
+Project {
+ Product {
+ name: "p1"
+ Export {
+ Depends { name: "cpp" }
+ cpp.blubb: "x"
+ }
+ }
+ Product {
+ Depends { name: "p1" }
+ }
+}
diff --git a/src/lib/corelib/language/tst_language.cpp b/src/lib/corelib/language/tst_language.cpp
index 4cfad8b83..02234927d 100644
--- a/src/lib/corelib/language/tst_language.cpp
+++ b/src/lib/corelib/language/tst_language.cpp
@@ -468,6 +468,8 @@ void TestLanguage::erroneousFiles_data()
<< "Item 'cpp' is not declared.";
QTest::newRow("undeclared_property_wrapper")
<< "Property 'doesntexist' is not declared.";
+ QTest::newRow("undeclared_property_in_export_item")
+ << "Property 'blubb' is not declared.";
QTest::newRow("unknown_item_type")
<< "Unexpected item type 'Narf'";
QTest::newRow("invalid_child_item_type")