diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2016-10-18 13:49:02 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2016-10-19 08:04:21 +0000 |
commit | bfd950260a2cd2c290ffaa5593620202eb5b080c (patch) | |
tree | 2121a3d431253d12e5d9ed75c2435ae0936f5716 /src | |
parent | 830503d04708ebd6a64dfd260b35cfeea26ba60a (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.cpp | 39 | ||||
-rw-r--r-- | src/lib/corelib/language/moduleloader.h | 2 |
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; |