aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2019-05-06 15:37:55 +0200
committerMarco Bubke <marco.bubke@qt.io>2019-06-26 12:21:24 +0000
commit98d7b502caf8d0976a116c5d798be00cfb95e373 (patch)
treea5be64df01bea541bd47b6f47084f57194e3f236
parent63c44282879a374cf46d373a1b55bb99a125521b (diff)
ClangRefactoring: Clear input files after collecting symbols
Change-Id: Ic4fbaac7ad3b3f80223d6cbb84a34dffa741fc4f Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--src/tools/clangrefactoringbackend/source/symbolscollector.cpp6
-rw-r--r--src/tools/clangrefactoringbackend/source/symbolscollector.h2
-rw-r--r--tests/unit/unittest/symbolscollector-test.cpp23
3 files changed, 26 insertions, 5 deletions
diff --git a/src/tools/clangrefactoringbackend/source/symbolscollector.cpp b/src/tools/clangrefactoringbackend/source/symbolscollector.cpp
index 071837ac52..ab5a00fc6b 100644
--- a/src/tools/clangrefactoringbackend/source/symbolscollector.cpp
+++ b/src/tools/clangrefactoringbackend/source/symbolscollector.cpp
@@ -129,7 +129,11 @@ bool SymbolsCollector::collectSymbols()
auto actionFactory = ClangBackEnd::newFrontendActionFactory(&m_collectSymbolsAction);
- return tool.run(actionFactory.get()) != 1;
+ bool noErrors = tool.run(actionFactory.get()) != 1;
+
+ m_clangTool = ClangTool();
+
+ return noErrors;
}
void SymbolsCollector::doInMainThreadAfterFinished()
diff --git a/src/tools/clangrefactoringbackend/source/symbolscollector.h b/src/tools/clangrefactoringbackend/source/symbolscollector.h
index cc7ca4396c..e103471372 100644
--- a/src/tools/clangrefactoringbackend/source/symbolscollector.h
+++ b/src/tools/clangrefactoringbackend/source/symbolscollector.h
@@ -63,6 +63,8 @@ public:
bool isUsed() const override;
void setIsUsed(bool isUsed) override;
+ bool isClean() const { return m_clangTool.isClean(); }
+
private:
FilePathCaching m_filePathCache;
ClangTool m_clangTool;
diff --git a/tests/unit/unittest/symbolscollector-test.cpp b/tests/unit/unittest/symbolscollector-test.cpp
index f0080a5d2c..a766b70fa4 100644
--- a/tests/unit/unittest/symbolscollector-test.cpp
+++ b/tests/unit/unittest/symbolscollector-test.cpp
@@ -53,17 +53,18 @@ using testing::Value;
using testing::_;
using ClangBackEnd::FilePath;
-using ClangBackEnd::FilePathId;
using ClangBackEnd::FilePathCaching;
-using ClangBackEnd::V2::FileContainers;
+using ClangBackEnd::FilePathId;
+using ClangBackEnd::FileStatus;
using ClangBackEnd::SourceDependency;
using ClangBackEnd::SourceLocationEntry;
+using ClangBackEnd::SourceLocationKind;
using ClangBackEnd::SymbolEntry;
+using ClangBackEnd::SymbolIndex;
using ClangBackEnd::SymbolKind;
using ClangBackEnd::SymbolTag;
-using ClangBackEnd::SourceLocationKind;
-using ClangBackEnd::SymbolIndex;
using ClangBackEnd::UsedMacro;
+using ClangBackEnd::V2::FileContainers;
using Sqlite::Database;
@@ -130,6 +131,9 @@ MATCHER_P(HasSymbolTag, symbolTag,
class SymbolsCollector : public testing::Test
{
protected:
+ SymbolsCollector() { setFilePathCache(&filePathCache); }
+ ~SymbolsCollector() { setFilePathCache({}); }
+
FilePathId filePathId(Utils::SmallStringView filePath) const
{
return filePathCache.filePathId(ClangBackEnd::FilePathView{filePath});
@@ -664,4 +668,15 @@ TEST_F(SymbolsCollector, CollectReturnsFalseIfThereIsNoError)
ASSERT_TRUE(success);
}
+
+TEST_F(SymbolsCollector, ClearInputFilesAfterCollectingSymbols)
+{
+ collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main2.cpp"), {"cc"});
+ collector.collectSymbols();
+ collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), {"cc"});
+
+ collector.collectSymbols();
+
+ ASSERT_TRUE(collector.isClean());
+}
} // namespace