diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-07-09 14:54:13 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-07-10 10:47:44 +0200 |
commit | 3b50726352fd1b1c5fc5424856ccb9446c87a30f (patch) | |
tree | 41fc8c9f1d0158b60aca9ccdee978b4d041f5f1f /src/lib/corelib/language/projectresolver.cpp | |
parent | 89513bce4f2996be93bdb30b32a1ef844d9cec36 (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.cpp | 10 |
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); |