aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/moduleloader.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-05-08 15:55:41 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-05-09 07:05:51 +0000
commit03d1b289e4f2dd8021b57a070e97092034ffa6ac (patch)
tree324ff6ce60ac9947c4f1de95be3439c9f22460f8 /src/lib/corelib/language/moduleloader.cpp
parent9ce75e086cc2cd22cbcc0541024fb9044f3cd7ec (diff)
Show location of invalid Project.references values
Change-Id: I8e55d065603521473190f2b8da332caa25956e3b Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/lib/corelib/language/moduleloader.cpp')
-rw-r--r--src/lib/corelib/language/moduleloader.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index e9320aba9..3ebfb38d3 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -327,7 +327,7 @@ ModuleLoaderResult ModuleLoader::load(const SetupProjectParameters &parameters)
Item *root;
{
SearchPathsManager searchPathsManager(m_reader, topLevelSearchPaths);
- root = loadItemFromFile(parameters.projectFilePath());
+ root = loadItemFromFile(parameters.projectFilePath(), CodeLocation());
if (!root)
return ModuleLoaderResult();
}
@@ -1473,7 +1473,7 @@ void ModuleLoader::handleSubProject(ModuleLoader::ProjectContext *projectContext
if (referencedFilePaths.contains(subProjectFilePath))
throw ErrorInfo(Tr::tr("Cycle detected while loading subproject file '%1'.")
.arg(relativeFilePath), projectItem->location());
- loadedItem = loadItemFromFile(subProjectFilePath);
+ loadedItem = loadItemFromFile(subProjectFilePath, projectItem->location());
} catch (const ErrorInfo &error) {
if (m_parameters.productErrorMode() == ErrorHandlingMode::Strict)
throw;
@@ -1528,7 +1528,7 @@ QList<Item *> ModuleLoader::loadReferencedFile(const QString &relativePath,
if (referencedFilePaths.contains(absReferencePath))
throw ErrorInfo(Tr::tr("Cycle detected while referencing file '%1'.").arg(relativePath),
referencingLocation);
- Item * const subItem = loadItemFromFile(absReferencePath);
+ Item * const subItem = loadItemFromFile(absReferencePath, referencingLocation);
if (subItem->type() != ItemType::Project && subItem->type() != ItemType::Product) {
ErrorInfo error(Tr::tr("Item type should be 'Product' or 'Project', but is '%1'.")
.arg(subItem->typeName()));
@@ -1863,9 +1863,17 @@ bool ModuleLoader::mergeExportItems(const ProductContext &productContext)
return exportItems.size() > 0;
}
-Item *ModuleLoader::loadItemFromFile(const QString &filePath)
+Item *ModuleLoader::loadItemFromFile(const QString &filePath,
+ const CodeLocation &referencingLocation)
{
- Item * const item = m_reader->readFile(filePath);
+ Item *item;
+ try {
+ item = m_reader->readFile(filePath);
+ } catch (const ErrorInfo &e) {
+ if (e.hasLocation())
+ throw;
+ throw ErrorInfo(e.toString(), referencingLocation);
+ }
handleAllPropertyOptionsItems(item);
return item;
}
@@ -2997,7 +3005,7 @@ Item *ModuleLoader::loadModuleFile(ProductContext *productContext, const QString
qCDebug(lcModuleLoader) << "loadModuleFile cache hit";
return cacheValue.enabled ? cacheValue.module : 0;
}
- Item * const module = loadItemFromFile(filePath);
+ Item * const module = loadItemFromFile(filePath, CodeLocation());
if (module->type() != ItemType::Module) {
qCDebug(lcModuleLoader).nospace()
<< "Alleged module " << fullModuleName << " has type '"