From 497900eb3fe1b1dfe42669cc93ca8360e38db08d Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 31 Jan 2018 14:14:34 +0100 Subject: [PATCH] Clang: Handle source dependencies in symbol indexer Get the source dependencies from the collector and save them in the symbol storage. Change-Id: Ibc141970a100625398c1526f5bc644cc14d25c0c Reviewed-by: Ivan Donchevskii --- .../clangrefactoringbackend/source/symbolindexer.cpp | 2 ++ tests/unit/unittest/symbolindexer-test.cpp | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/tools/clangrefactoringbackend/source/symbolindexer.cpp b/src/tools/clangrefactoringbackend/source/symbolindexer.cpp index 41c824d5b88..50823f86e43 100644 --- a/src/tools/clangrefactoringbackend/source/symbolindexer.cpp +++ b/src/tools/clangrefactoringbackend/source/symbolindexer.cpp @@ -73,6 +73,8 @@ void SymbolIndexer::updateProjectPart(V2::ProjectPartContainer &&projectPart, m_symbolStorage.insertFileInformations(m_symbolsCollector.fileInformations()); + m_symbolStorage.insertOrUpdateSourceDependencies(m_symbolsCollector.sourceDependencies()); + transaction.commit(); } diff --git a/tests/unit/unittest/symbolindexer-test.cpp b/tests/unit/unittest/symbolindexer-test.cpp index 143e9a17231..4fea3116153 100644 --- a/tests/unit/unittest/symbolindexer-test.cpp +++ b/tests/unit/unittest/symbolindexer-test.cpp @@ -45,6 +45,7 @@ using ClangBackEnd::V2::ProjectPartContainers; using ClangBackEnd::V2::FileContainers; using ClangBackEnd::SymbolEntries; using ClangBackEnd::SymbolEntry; +using ClangBackEnd::SourceDependencies; using ClangBackEnd::SourceLocationEntries; using ClangBackEnd::SourceLocationEntry; using ClangBackEnd::SymbolType; @@ -67,6 +68,7 @@ protected: ON_CALL(mockCollector, sourceFiles()).WillByDefault(ReturnRef(sourceFileIds)); ON_CALL(mockCollector, usedMacros()).WillByDefault(ReturnRef(usedMacros)); ON_CALL(mockCollector, fileInformations()).WillByDefault(ReturnRef(fileInformation)); + ON_CALL(mockCollector, sourceDependencies()).WillByDefault(ReturnRef(sourceDependencies)); } protected: @@ -94,6 +96,7 @@ protected: FilePathIds sourceFileIds{{1, 1}, {42, 23}}; UsedMacros usedMacros{{"Foo", {1, 1}}}; FileInformations fileInformation{{{1, 2}, 3, 4}}; + SourceDependencies sourceDependencies{{{1, 1}, {1, 2}}, {{1, 1}, {1, 3}}}; NiceMock mockSqliteTransactionBackend; NiceMock mockCollector; NiceMock mockStorage; @@ -204,6 +207,14 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsInsertFileInformations) indexer.updateProjectParts({projectPart1, projectPart2}, Utils::clone(unsaved)); } +TEST_F(SymbolIndexer, UpdateProjectPartsCallsInsertOrUpdateSourceDependencies) +{ + EXPECT_CALL(mockStorage, insertOrUpdateSourceDependencies(Eq(sourceDependencies))) + .Times(2); + + indexer.updateProjectParts({projectPart1, projectPart2}, Utils::clone(unsaved)); +} + TEST_F(SymbolIndexer, UpdateProjectPartsCallsInOrder) { InSequence s; @@ -218,6 +229,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsInOrder) EXPECT_CALL(mockStorage, updateProjectPartSources(_, _)); EXPECT_CALL(mockStorage, insertOrUpdateUsedMacros(Eq(usedMacros))); EXPECT_CALL(mockStorage, insertFileInformations(Eq(fileInformation))); + EXPECT_CALL(mockStorage, insertOrUpdateSourceDependencies(Eq(sourceDependencies))); EXPECT_CALL(mockSqliteTransactionBackend, commit()); indexer.updateProjectParts({projectPart1}, Utils::clone(unsaved));