aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/projectresolver.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-07-09 14:54:13 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-07-10 10:47:44 +0200
commit3b50726352fd1b1c5fc5424856ccb9446c87a30f (patch)
tree41fc8c9f1d0158b60aca9ccdee978b4d041f5f1f /src/lib/corelib/language/projectresolver.cpp
parent89513bce4f2996be93bdb30b32a1ef844d9cec36 (diff)
prohibit duplicate source files in enabled groups
Having the same source files in more than one enabled group is considered an error. There's no proper way to define conflict resolution rules. Task-number: QBS-593 Change-Id: I93d25b7e3484ce3a4da4e10299e1a3bf10951ca2 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/language/projectresolver.cpp')
-rw-r--r--src/lib/corelib/language/projectresolver.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index ebe60e032..d61956249 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -533,12 +533,20 @@ void ProjectResolver::resolveGroup(Item *item, ProjectContext *projectContext)
group->fileTags, group->overrideTags, group->files);
ErrorInfo fileError;
if (group->enabled) {
- foreach (const SourceArtifactConstPtr &a, group->files) {
+ const ValuePtr filesValue = item->property(QLatin1String("files"));
+ foreach (const SourceArtifactConstPtr &a, group->allFiles()) {
if (!FileInfo(a->absoluteFilePath).exists()) {
fileError.append(Tr::tr("File '%1' does not exist.")
.arg(a->absoluteFilePath),
item->property(QLatin1String("files"))->location());
}
+ CodeLocation &loc = m_productContext->sourceArtifactLocations[a->absoluteFilePath];
+ if (loc.isValid()) {
+ fileError.append(Tr::tr("Duplicate source file '%1' at %2 and %3.")
+ .arg(a->absoluteFilePath, loc.toString(),
+ filesValue->location().toString()));
+ }
+ loc = filesValue->location();
}
if (fileError.hasError())
throw ErrorInfo(fileError);