9 #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_UNITTESTS_CONFIGTESTING_H
10 #define LLVM_CLANG_TOOLS_EXTRA_CLANGD_UNITTESTS_CONFIGTESTING_H
13 #include "llvm/Support/ScopedPrinter.h"
14 #include "llvm/Support/SourceMgr.h"
15 #include "gmock/gmock.h"
25 std::function<void(
const llvm::SMDiagnostic &)>
callback() {
26 return [
this](
const llvm::SMDiagnostic &D) {
29 Out.Message = D.getMessage().str();
30 Out.Kind = D.getKind();
31 Out.Pos.line = D.getLineNo() - 1;
32 Out.Pos.character = D.getColumnNo();
33 if (!D.getRanges().empty()) {
34 const auto &R = D.getRanges().front();
36 Out.Rng->start.line =
Out.Rng->end.line =
Out.Pos.line;
37 Out.Rng->start.character = R.first;
38 Out.Rng->end.character = R.second;
44 llvm::SourceMgr::DiagKind
Kind;
46 llvm::Optional<Range>
Rng;
49 *
OS << (D.
Kind == llvm::SourceMgr::DK_Error ?
"error: " :
"warning: ")
56 MATCHER_P(DiagMessage, M,
"") {
return arg.Message == M; }
57 MATCHER_P(DiagKind, K,
"") {
return arg.Kind == K; }
59 MATCHER_P(DiagRange, R,
"") {
return arg.Rng == R; }
62 auto LineCol = SM.getLineAndColumn(L);
64 P.
line = LineCol.first - 1;