Qt4ProjectManager: Skip files that are actually directories

Since the cumulative parsing now parses for loops, we get bogus data
in creator's own .pro files.

Task-number: QTCREATORBUG-10045
Change-Id: I627772f221cc5c928458788feb036cdd93b25a08
Reviewed-by: Robert Loehning <robert.loehning@digia.com>
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
Daniel Teske
2013-09-09 14:05:06 +02:00
parent 3a23264e05
commit 967cebcef2

View File

@@ -599,6 +599,7 @@ void Qt4PriFileNode::update(ProFile *includeFileExact, QtSupport::ProFileReader
folders[i] = QDir::cleanPath(projectDir + QLatin1Char('/') + folders.at(i)); folders[i] = QDir::cleanPath(projectDir + QLatin1Char('/') + folders.at(i));
} }
folders.removeDuplicates();
m_recursiveEnumerateFiles.clear(); m_recursiveEnumerateFiles.clear();
// Remove non existing items and non folders // Remove non existing items and non folders
@@ -620,7 +621,6 @@ void Qt4PriFileNode::update(ProFile *includeFileExact, QtSupport::ProFileReader
} }
} }
folders.removeDuplicates();
watchFolders(folders.toSet()); watchFolders(folders.toSet());
foreach (const QString &folder, folders) { foreach (const QString &folder, folders) {
@@ -638,6 +638,7 @@ void Qt4PriFileNode::update(ProFile *includeFileExact, QtSupport::ProFileReader
const QVector<Qt4NodeStaticData::FileTypeData> &fileTypes = qt4NodeStaticData()->fileTypeData; const QVector<Qt4NodeStaticData::FileTypeData> &fileTypes = qt4NodeStaticData()->fileTypeData;
// update files // update files
QFileInfo tmpFi;
for (int i = 0; i < fileTypes.size(); ++i) { for (int i = 0; i < fileTypes.size(); ++i) {
FileType type = fileTypes.at(i).type; FileType type = fileTypes.at(i).type;
QStringList qmakeVariables = varNames(type); QStringList qmakeVariables = varNames(type);
@@ -647,14 +648,20 @@ void Qt4PriFileNode::update(ProFile *includeFileExact, QtSupport::ProFileReader
if (includeFileExact) { if (includeFileExact) {
QStringList vPathsExact = fullVPaths(baseVPathsExact, readerExact, qmakeVariable, projectDir); QStringList vPathsExact = fullVPaths(baseVPathsExact, readerExact, qmakeVariable, projectDir);
QStringList tmp = readerExact->absoluteFileValues(qmakeVariable, projectDir, vPathsExact, includeFileExact); QStringList tmp = readerExact->absoluteFileValues(qmakeVariable, projectDir, vPathsExact, includeFileExact);
foreach (const QString &t, tmp) foreach (const QString &t, tmp) {
newFilePaths += Utils::FileName::fromString(t); tmpFi.setFile(t);
if (tmpFi.isFile())
newFilePaths += Utils::FileName::fromString(t);
}
} }
if (includeFileCumlative) { if (includeFileCumlative) {
QStringList vPathsCumulative = fullVPaths(baseVPathsCumulative, readerCumulative, qmakeVariable, projectDir); QStringList vPathsCumulative = fullVPaths(baseVPathsCumulative, readerCumulative, qmakeVariable, projectDir);
QStringList tmp = readerCumulative->absoluteFileValues(qmakeVariable, projectDir, vPathsCumulative, includeFileCumlative); QStringList tmp = readerCumulative->absoluteFileValues(qmakeVariable, projectDir, vPathsCumulative, includeFileCumlative);
foreach (const QString &t, tmp) foreach (const QString &t, tmp) {
newFilePaths += Utils::FileName::fromString(t); tmpFi.setFile(t);
if (tmpFi.isFile())
newFilePaths += Utils::FileName::fromString(t);
}
} }
} }
@@ -662,6 +669,7 @@ void Qt4PriFileNode::update(ProFile *includeFileExact, QtSupport::ProFileReader
m_recursiveEnumerateFiles.subtract(newFilePaths); m_recursiveEnumerateFiles.subtract(newFilePaths);
} }
for (int i = 0; i < fileTypes.size(); ++i) { for (int i = 0; i < fileTypes.size(); ++i) {
FileType type = fileTypes.at(i).type; FileType type = fileTypes.at(i).type;
QSet<Utils::FileName> newFilePaths = filterFilesProVariables(type, foundFiles[type]); QSet<Utils::FileName> newFilePaths = filterFilesProVariables(type, foundFiles[type]);
@@ -1314,7 +1322,7 @@ QStringList Qt4PriFileNode::dynamicVarNames(QtSupport::ProFileReader *readerExac
result << (var + files); result << (var + files);
} }
} }
result.removeDuplicates();
return result; return result;
} }