forked from qt-creator/qt-creator
Clang: Add clang query
Clang query is mechanism to use AST matcher to search for code. Think about regular expression but in the context of AST. So you get a semantic search tool for C++. Change-Id: I72e882c5b53a0c52f352a3664847c4c3e4f6fc2e Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -32,7 +32,9 @@
|
||||
#include <refactoringclientproxy.h>
|
||||
#include <refactoringserverproxy.h>
|
||||
#include <sourcelocationsforrenamingmessage.h>
|
||||
#include <sourcerangesanddiagnosticsforquerymessage.h>
|
||||
#include <requestsourcelocationforrenamingmessage.h>
|
||||
#include <requestsourcerangesanddiagnosticsforquerymessage.h>
|
||||
|
||||
#include <QBuffer>
|
||||
#include <QString>
|
||||
@@ -101,7 +103,7 @@ TEST_F(RefactoringClientServerInProcess, SendSourceLocationsForRenamingMessage)
|
||||
|
||||
TEST_F(RefactoringClientServerInProcess, SendRequestSourceLocationsForRenamingMessage)
|
||||
{
|
||||
RequestSourceLocationsForRenamingMessage message{{"/home/marco/dev/qt-creator/tests/unit/unittest/data", "renamevariable.cpp"},
|
||||
RequestSourceLocationsForRenamingMessage message{{TESTDATA_DIR, "renamevariable.cpp"},
|
||||
1,
|
||||
5,
|
||||
"int v;\n\nint x = v + 3;\n",
|
||||
@@ -115,6 +117,35 @@ TEST_F(RefactoringClientServerInProcess, SendRequestSourceLocationsForRenamingMe
|
||||
scheduleServerMessages();
|
||||
}
|
||||
|
||||
TEST_F(RefactoringClientServerInProcess, SourceRangesAndDiagnosticsForQueryMessage)
|
||||
{
|
||||
ClangBackEnd::SourceRangesContainer sourceRangesContainer;
|
||||
std::vector<ClangBackEnd::DynamicASTMatcherDiagnosticContainer> diagnosticContainers;
|
||||
ClangBackEnd::SourceRangesAndDiagnosticsForQueryMessage message(std::move(sourceRangesContainer),
|
||||
std::move(diagnosticContainers));
|
||||
|
||||
EXPECT_CALL(mockRefactoringClient, sourceRangesAndDiagnosticsForQueryMessage(message))
|
||||
.Times(1);
|
||||
|
||||
clientProxy.sourceRangesAndDiagnosticsForQueryMessage(message.clone());
|
||||
scheduleClientMessages();
|
||||
}
|
||||
|
||||
TEST_F(RefactoringClientServerInProcess, RequestSourceRangesAndDiagnosticsForQueryMessage)
|
||||
{
|
||||
RequestSourceRangesAndDiagnosticsForQueryMessage message{"functionDecl()",
|
||||
{{{TESTDATA_DIR, "query_simplefunction.cpp"},
|
||||
"void f();",
|
||||
{"cc", "query_simplefunction.cpp"},
|
||||
1}}};
|
||||
|
||||
EXPECT_CALL(mockRefactoringServer, requestSourceRangesAndDiagnosticsForQueryMessage(message))
|
||||
.Times(1);
|
||||
|
||||
serverProxy.requestSourceRangesAndDiagnosticsForQueryMessage(message.clone());
|
||||
scheduleServerMessages();
|
||||
}
|
||||
|
||||
RefactoringClientServerInProcess::RefactoringClientServerInProcess()
|
||||
: serverProxy(&mockRefactoringClient, &buffer),
|
||||
clientProxy(&mockRefactoringServer, &buffer)
|
||||
|
||||
Reference in New Issue
Block a user