Revert "CppTools: Do not put configuration document into global snapshot and working copy"

This reverts commit 05942b63f8 because it
breaks refactoring, e.g. Q_PROPERTY generators.

Change-Id: I9a14b912ba72663f08ea99e7e066d824b18da4b0
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Nikolai Kosjar
2017-02-27 11:34:30 +01:00
parent 95f78f6c80
commit 45b7c5ac29
7 changed files with 29 additions and 11 deletions

View File

@@ -357,7 +357,6 @@ QFuture<void> BuiltinIndexingSupport::refreshSourceFiles(
params.indexerFileSizeLimitInMb = indexerFileSizeLimitInMb();
params.headerPaths = mgr->headerPaths();
params.workingCopy = mgr->workingCopy();
params.workingCopy.insert(mgr->configurationFileName(), mgr->definedMacros());
params.sourceFiles = sourceFiles;
QFuture<void> result = Utils::runAsync(mgr->sharedThreadPool(), parse, superFuture, params);

View File

@@ -594,6 +594,11 @@ WorkingCopy CppModelManager::buildWorkingCopyList()
workingCopy.insert(es->fileName(), es->contents(), es->revision());
}
// Add the project configuration file
QByteArray conf = codeModelConfiguration();
conf += definedMacros();
workingCopy.insert(configurationFileName(), conf);
return workingCopy;
}
@@ -871,6 +876,12 @@ QFuture<void> CppModelManager::updateProjectInfo(QFutureInterface<void> &futureI
removeProjectInfoFilesAndIncludesFromSnapshot(oldProjectInfo);
filesToReindex.unite(newSourceFiles);
// The "configuration file" includes all defines and therefore should be updated
if (comparer.definesChanged()) {
QMutexLocker snapshotLocker(&d->m_snapshotMutex);
d->m_snapshot.remove(configurationFileName());
}
// Otherwise check for added and modified files
} else {
const QSet<QString> addedFiles = comparer.addedFiles();
@@ -999,9 +1010,6 @@ bool CppModelManager::isClangCodeModelActive() const
void CppModelManager::emitDocumentUpdated(Document::Ptr doc)
{
if (Client::isInjectedFile(doc->fileName()))
return;
if (replaceDocument(doc))
emit documentUpdated(doc);
}

View File

@@ -618,7 +618,7 @@ void CppToolsPlugin::test_modelmanager_extraeditorsupport_uiFiles()
CppModelManager *mm = CppModelManager::instance();
WorkingCopy workingCopy = mm->workingCopy();
QCOMPARE(workingCopy.size(), 1);
QCOMPARE(workingCopy.size(), 2); // mm->configurationFileName() and "ui_*.h"
QStringList fileNamesInWorkinCopy;
QHashIterator<Utils::FileName, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
@@ -628,7 +628,8 @@ void CppToolsPlugin::test_modelmanager_extraeditorsupport_uiFiles()
}
fileNamesInWorkinCopy.sort();
const QString expectedUiHeaderFileName = _("ui_mainwindow.h");
QCOMPARE(fileNamesInWorkinCopy.at(0), expectedUiHeaderFileName);
QCOMPARE(fileNamesInWorkinCopy.at(0), mm->configurationFileName());
QCOMPARE(fileNamesInWorkinCopy.at(1), expectedUiHeaderFileName);
// Check CppSourceProcessor / includes.
// The CppSourceProcessor is expected to find the ui_* file in the working copy.
@@ -777,7 +778,7 @@ void CppToolsPlugin::test_modelmanager_defines_per_project()
pi.appendProjectPart(part2);
helper.updateProjectInfo(pi);
QCOMPARE(mm->snapshot().size(), 3);
QCOMPARE(mm->snapshot().size(), 4);
// Open a file in the editor
QCOMPARE(Core::DocumentModel::openedDocuments().size(), 0);
@@ -845,7 +846,7 @@ void CppToolsPlugin::test_modelmanager_precompiled_headers()
pi.appendProjectPart(part2);
helper.updateProjectInfo(pi);
QCOMPARE(mm->snapshot().size(), 3);
QCOMPARE(mm->snapshot().size(), 4);
// Open a file in the editor
QCOMPARE(Core::DocumentModel::openedDocuments().size(), 0);
@@ -925,7 +926,7 @@ void CppToolsPlugin::test_modelmanager_defines_per_editor()
helper.updateProjectInfo(pi);
QCOMPARE(mm->snapshot().size(), 3);
QCOMPARE(mm->snapshot().size(), 4);
// Open a file in the editor
QCOMPARE(Core::DocumentModel::openedDocuments().size(), 0);

View File

@@ -423,8 +423,11 @@ bool VerifyCleanCppModelManager::isClean(bool testOnlyForCleanedProjects)
RETURN_FALSE_IF_NOT(mm->headerPaths().isEmpty());
RETURN_FALSE_IF_NOT(mm->definedMacros().isEmpty());
RETURN_FALSE_IF_NOT(mm->projectFiles().isEmpty());
if (!testOnlyForCleanedProjects)
if (!testOnlyForCleanedProjects) {
RETURN_FALSE_IF_NOT(mm->snapshot().isEmpty());
RETURN_FALSE_IF_NOT(mm->workingCopy().size() == 1);
RETURN_FALSE_IF_NOT(mm->workingCopy().contains(mm->configurationFileName()));
}
return true;
}