aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2016-10-18 13:49:02 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2016-10-19 08:04:21 +0000
commitbfd950260a2cd2c290ffaa5593620202eb5b080c (patch)
tree2121a3d431253d12e5d9ed75c2435ae0936f5716 /src
parent830503d04708ebd6a64dfd260b35cfeea26ba60a (diff)
Take relaxed error handling mode into account in more places
Change-Id: I01c218ec244427e2a56697c457f02728a89ff020 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/lib/corelib/language/moduleloader.cpp39
-rw-r--r--src/lib/corelib/language/moduleloader.h2
2 files changed, 30 insertions, 11 deletions
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index 3a4611ba1..78dbf51e4 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -406,22 +406,22 @@ void ModuleLoader::handleTopLevelProject(ModuleLoaderResult *loadResult, Item *p
try {
setupProductDependencies(it);
} catch (const ErrorInfo &err) {
- if (m_parameters.productErrorMode() == ErrorHandlingMode::Strict
- || it->name.isEmpty()) {
+ if (it->name.isEmpty())
throw err;
- }
- m_logger.printWarning(err);
- it->info.hasError = true;
- it->project->result->productInfos.insert(it->item, it->info);
- m_disabledItems << it->item;
+ handleProductError(err, it);
}
}
}
ProductSortByDependencies productSorter(tlp);
productSorter.apply();
- foreach (ProductContext * const p, productSorter.sortedProducts())
- handleProduct(p);
+ foreach (ProductContext * const p, productSorter.sortedProducts()) {
+ try {
+ handleProduct(p);
+ } catch (const ErrorInfo &err) {
+ handleProductError(err, p);
+ }
+ }
m_reader->clearExtraSearchPathsStack();
PropertyDeclarationCheck check(m_disabledItems, m_parameters, m_logger);
@@ -726,8 +726,13 @@ void ModuleLoader::handleProduct(ModuleLoader::ProductContext *productContext)
}
m_evaluator->boolValue(module.item, QLatin1String("validate"));
} catch (const ErrorInfo &error) {
- if (module.required) { // Error will be thrown for enabled products only
- module.item->setDelayedError(error);
+ if (module.required) {
+ try {
+ handleProductError(error, productContext);
+ } catch (const ErrorInfo &) {
+ // Error will be thrown for enabled products only
+ module.item->setDelayedError(error);
+ }
} else {
createNonPresentModule(module.name.toString(), QLatin1String("failed validation"),
module.item);
@@ -2098,6 +2103,18 @@ Item *ModuleLoader::createNonPresentModule(const QString &name, const QString &r
return module;
}
+void ModuleLoader::handleProductError(const ErrorInfo &error,
+ ModuleLoader::ProductContext *productContext)
+{
+ if (m_parameters.productErrorMode() == ErrorHandlingMode::Strict)
+ throw error;
+ m_logger.printWarning(error);
+ productContext->info.hasError = true;
+ productContext->project->result->productInfos.insert(productContext->item,
+ productContext->info);
+ m_disabledItems << productContext->item;
+}
+
void ModuleLoader::copyGroupsFromModuleToProduct(const ProductContext &productContext,
const Item *modulePrototype)
{
diff --git a/src/lib/corelib/language/moduleloader.h b/src/lib/corelib/language/moduleloader.h
index 04b93dd3e..028289e2c 100644
--- a/src/lib/corelib/language/moduleloader.h
+++ b/src/lib/corelib/language/moduleloader.h
@@ -263,6 +263,8 @@ private:
const QVariantMap &initialProperties) const;
void printProfilingInfo();
+ void handleProductError(const ErrorInfo &error, ProductContext *productContext);
+
ScriptEngine *m_engine;
ItemPool *m_pool;
Logger &m_logger;