diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-12-11 15:59:24 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-12-13 13:36:22 +0000 |
commit | 7b5349d182bcb4c9d7a3d1501768b91c9fa93fe9 (patch) | |
tree | 7625e9568275056dccac058b283871296366e132 /src | |
parent | 85cf0b14b7c07334989f74edd1902c3fe200dda8 (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.cpp | 6 | ||||
-rw-r--r-- | src/lib/corelib/language/projectresolver.h | 3 |
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; |