diff options
author | Marco Bubke <marco.bubke@qt.io> | 2019-05-06 15:37:55 +0200 |
---|---|---|
committer | Marco Bubke <marco.bubke@qt.io> | 2019-06-26 12:21:24 +0000 |
commit | 98d7b502caf8d0976a116c5d798be00cfb95e373 (patch) | |
tree | a5be64df01bea541bd47b6f47084f57194e3f236 | |
parent | 63c44282879a374cf46d373a1b55bb99a125521b (diff) |
ClangRefactoring: Clear input files after collecting symbols
Change-Id: Ic4fbaac7ad3b3f80223d6cbb84a34dffa741fc4f
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
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 |