From 05942b63f8bad6d6787fea10c31f10458cdccd06 Mon Sep 17 00:00:00 2001
From: Nikolai Kosjar <nikolai.kosjar@qt.io>
Date: Tue, 6 Dec 2016 11:00:27 +0100
Subject: [PATCH] CppTools: Do not put configuration document into global
 snapshot and working copy

These are remnants of the time when we had only one snapshot.

Change-Id: I6ff4db645d1065a0ef195834890e0774e2e2c60e
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
---
 .../clangstaticanalyzerruncontrol.cpp              |  2 --
 src/plugins/cpptools/builtinindexingsupport.cpp    |  1 +
 src/plugins/cpptools/cppmodelmanager.cpp           | 14 +++-----------
 src/plugins/cpptools/cppmodelmanager_test.cpp      | 11 +++++------
 src/plugins/cpptools/cpptoolstestcase.cpp          |  5 +----
 src/plugins/designer/qtcreatorintegration.cpp      |  5 +----
 src/plugins/qmakeprojectmanager/qmakeproject.cpp   |  2 --
 7 files changed, 11 insertions(+), 29 deletions(-)

diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
index 2a8a5f58c9..404dc735e8 100644
--- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
+++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
@@ -382,8 +382,6 @@ static AnalyzeUnits unitsToAnalyzeFromProjectParts(const QList<ProjectPart::Ptr>
             continue;
 
         foreach (const ProjectFile &file, projectPart->files) {
-            if (file.path == CppModelManager::configurationFileName())
-                continue;
             QTC_CHECK(file.kind != ProjectFile::Unclassified);
             if (ProjectFile::isSource(file.kind)) {
                 const CompilerOptionsBuilder::PchUsage pchUsage = CppTools::getPchUsage();
diff --git a/src/plugins/cpptools/builtinindexingsupport.cpp b/src/plugins/cpptools/builtinindexingsupport.cpp
index 99277ddb13..2325ae138e 100644
--- a/src/plugins/cpptools/builtinindexingsupport.cpp
+++ b/src/plugins/cpptools/builtinindexingsupport.cpp
@@ -355,6 +355,7 @@ QFuture<void> BuiltinIndexingSupport::refreshSourceFiles(const QSet<QString> &so
     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, params);
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 201af6f6a2..b2327f294e 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -593,11 +593,6 @@ 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;
 }
 
@@ -850,12 +845,6 @@ QFuture<void> CppModelManager::updateProjectInfo(const ProjectInfo &newProjectIn
                     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();
@@ -985,6 +974,9 @@ 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 38e194dde6..6c1bf16c5b 100644
--- a/src/plugins/cpptools/cppmodelmanager_test.cpp
+++ b/src/plugins/cpptools/cppmodelmanager_test.cpp
@@ -632,7 +632,7 @@ void CppToolsPlugin::test_modelmanager_extraeditorsupport_uiFiles()
     CppModelManager *mm = CppModelManager::instance();
     WorkingCopy workingCopy = mm->workingCopy();
 
-    QCOMPARE(workingCopy.size(), 2); // mm->configurationFileName() and "ui_*.h"
+    QCOMPARE(workingCopy.size(), 1);
 
     QStringList fileNamesInWorkinCopy;
     QHashIterator<Utils::FileName, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
@@ -642,8 +642,7 @@ void CppToolsPlugin::test_modelmanager_extraeditorsupport_uiFiles()
     }
     fileNamesInWorkinCopy.sort();
     const QString expectedUiHeaderFileName = _("ui_mainwindow.h");
-    QCOMPARE(fileNamesInWorkinCopy.at(0), mm->configurationFileName());
-    QCOMPARE(fileNamesInWorkinCopy.at(1), expectedUiHeaderFileName);
+    QCOMPARE(fileNamesInWorkinCopy.at(0), expectedUiHeaderFileName);
 
     // Check CppSourceProcessor / includes.
     // The CppSourceProcessor is expected to find the ui_* file in the working copy.
@@ -794,7 +793,7 @@ void CppToolsPlugin::test_modelmanager_defines_per_project()
     pi.appendProjectPart(part2);
 
     helper.updateProjectInfo(pi);
-    QCOMPARE(mm->snapshot().size(), 4);
+    QCOMPARE(mm->snapshot().size(), 3);
 
     // Open a file in the editor
     QCOMPARE(Core::DocumentModel::openedDocuments().size(), 0);
@@ -862,7 +861,7 @@ void CppToolsPlugin::test_modelmanager_precompiled_headers()
     pi.appendProjectPart(part2);
 
     helper.updateProjectInfo(pi);
-    QCOMPARE(mm->snapshot().size(), 4);
+    QCOMPARE(mm->snapshot().size(), 3);
 
     // Open a file in the editor
     QCOMPARE(Core::DocumentModel::openedDocuments().size(), 0);
@@ -944,7 +943,7 @@ void CppToolsPlugin::test_modelmanager_defines_per_editor()
 
     helper.updateProjectInfo(pi);
 
-    QCOMPARE(mm->snapshot().size(), 4);
+    QCOMPARE(mm->snapshot().size(), 3);
 
     // 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 b8eb67bef1..efe935997d 100644
--- a/src/plugins/cpptools/cpptoolstestcase.cpp
+++ b/src/plugins/cpptools/cpptoolstestcase.cpp
@@ -423,11 +423,8 @@ 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;
 }
 
diff --git a/src/plugins/designer/qtcreatorintegration.cpp b/src/plugins/designer/qtcreatorintegration.cpp
index fb0f964282..4db4d5dcbc 100644
--- a/src/plugins/designer/qtcreatorintegration.cpp
+++ b/src/plugins/designer/qtcreatorintegration.cpp
@@ -535,14 +535,11 @@ bool QtCreatorIntegration::navigateToSlot(const QString &objectName,
     } else {
         const CppTools::WorkingCopy workingCopy =
                 CppTools::CppModelManager::instance()->workingCopy();
-        const Utils::FileName configFileName =
-                Utils::FileName::fromString(CppTools::CppModelManager::configurationFileName());
         QHashIterator<Utils::FileName, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
         while (it.hasNext()) {
             it.next();
             const Utils::FileName &fileName = it.key();
-            if (fileName != configFileName)
-                newDocTable.insert(docTable.document(fileName));
+            newDocTable.insert(docTable.document(fileName));
         }
     }
     docTable = newDocTable;
diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
index aab83f38a4..2a4632b44c 100644
--- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
@@ -461,8 +461,6 @@ void QmakeProject::updateCppCodeModel()
         }
         generators.append(proGenerators);
 
-        cppPart->files.prepend(ProjectFile(CppTools::CppModelManager::configurationFileName(),
-                                           ProjectFile::CXXSource));
         projectInfo.appendProjectPart(cppPart);
 
         if (!objcppPart->files.isEmpty()) {
-- 
GitLab