diff options
| author | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2015-08-11 10:41:30 +0200 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2015-08-11 09:58:53 +0000 |
| commit | a84d578eddad00007f88a78ba2c4e425cde9377e (patch) | |
| tree | 28be20fbee6f9c35c4aa962188c3e5e7956290ec | |
| parent | 254df5fb2c797e3e5e46c47f884f976e108bcfe4 (diff) | |
| download | qbs-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>
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") |
