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