diff options
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r-- | src/plugins/cpptools/builtinindexingsupport.cpp | 1 | ||||
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 14 | ||||
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager_test.cpp | 11 | ||||
-rw-r--r-- | src/plugins/cpptools/cpptoolstestcase.cpp | 5 |
4 files changed, 21 insertions, 10 deletions
diff --git a/src/plugins/cpptools/builtinindexingsupport.cpp b/src/plugins/cpptools/builtinindexingsupport.cpp index eadcda99bd..d51ba79e1a 100644 --- a/src/plugins/cpptools/builtinindexingsupport.cpp +++ b/src/plugins/cpptools/builtinindexingsupport.cpp @@ -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); diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 4cb5ce107e..d8a197b45a 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -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); } diff --git a/src/plugins/cpptools/cppmodelmanager_test.cpp b/src/plugins/cpptools/cppmodelmanager_test.cpp index 79ce311dbc..35f9931f21 100644 --- a/src/plugins/cpptools/cppmodelmanager_test.cpp +++ b/src/plugins/cpptools/cppmodelmanager_test.cpp @@ -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); diff --git a/src/plugins/cpptools/cpptoolstestcase.cpp b/src/plugins/cpptools/cpptoolstestcase.cpp index eb7235b7f7..43ed514efe 100644 --- a/src/plugins/cpptools/cpptoolstestcase.cpp +++ b/src/plugins/cpptools/cpptoolstestcase.cpp @@ -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; } |