aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-12-11 15:59:24 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2018-12-13 13:36:22 +0000
commit7b5349d182bcb4c9d7a3d1501768b91c9fa93fe9 (patch)
tree7625e9568275056dccac058b283871296366e132 /src
parent85cf0b14b7c07334989f74edd1902c3fe200dda8 (diff)
Fix bogus error about duplicate source files
There is no conflict if the same file is pulled in both as a target artifact of a module and a normal source file. Fixes: QBS-1416 Change-Id: Ic7467af5a8728ebb1540381c845ffc0f40e06a9c Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/lib/corelib/language/projectresolver.cpp6
-rw-r--r--src/lib/corelib/language/projectresolver.h3
2 files changed, 5 insertions, 4 deletions
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index 59b4efc34..cf0e6b706 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -99,7 +99,7 @@ struct ProjectResolver::ProductContext
Item *item;
typedef std::pair<ArtifactPropertiesPtr, CodeLocation> ArtifactPropertiesInfo;
QHash<QStringList, ArtifactPropertiesInfo> artifactPropertiesPerFilter;
- QHash<QString, CodeLocation> sourceArtifactLocations;
+ ProjectResolver::FileLocations sourceArtifactLocations;
GroupConstPtr currentGroup;
};
@@ -578,7 +578,7 @@ void ProjectResolver::gatherProductTypes(ResolvedProduct *product, Item *item)
SourceArtifactPtr ProjectResolver::createSourceArtifact(const ResolvedProductPtr &rproduct,
const QString &fileName, const GroupPtr &group, bool wildcard,
- const CodeLocation &filesLocation, QHash<QString, CodeLocation> *fileLocations,
+ const CodeLocation &filesLocation, FileLocations *fileLocations,
ErrorInfo *errorInfo)
{
const QString &baseDir = FileInfo::path(group->location.filePath());
@@ -590,7 +590,7 @@ SourceArtifactPtr ProjectResolver::createSourceArtifact(const ResolvedProductPtr
return SourceArtifactPtr();
}
if (group->enabled && fileLocations) {
- CodeLocation &loc = (*fileLocations)[absFilePath];
+ CodeLocation &loc = (*fileLocations)[std::make_pair(group->targetOfModule, absFilePath)];
if (loc.isValid()) {
if (errorInfo) {
errorInfo->append(Tr::tr("Duplicate source file '%1'.").arg(absFilePath));
diff --git a/src/lib/corelib/language/projectresolver.h b/src/lib/corelib/language/projectresolver.h
index 660bf6259..e81034b5a 100644
--- a/src/lib/corelib/language/projectresolver.h
+++ b/src/lib/corelib/language/projectresolver.h
@@ -76,10 +76,11 @@ public:
static void applyFileTaggers(const SourceArtifactPtr &artifact,
const ResolvedProductConstPtr &product);
+ using FileLocations = QHash<std::pair<QString, QString>, CodeLocation>;
static SourceArtifactPtr createSourceArtifact(const ResolvedProductPtr &rproduct,
const QString &fileName, const GroupPtr &group, bool wildcard,
const CodeLocation &filesLocation = CodeLocation(),
- QHash<QString, CodeLocation> *fileLocations = nullptr, ErrorInfo *errorInfo = nullptr);
+ FileLocations *fileLocations = nullptr, ErrorInfo *errorInfo = nullptr);
private:
struct ProjectContext;