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"
26 std::function<void(
const llvm::SMDiagnostic &)>
callback() {
27 return [
this](
const llvm::SMDiagnostic &D) {
28 if (
Files.empty() ||
Files.back() != D.getFilename())
29 Files.push_back(D.getFilename().str());
31 if (D.getKind() > llvm::SourceMgr::DK_Warning)
36 Out.Message = D.getMessage().str();
37 Out.Kind = D.getKind();
38 Out.Pos.line = D.getLineNo() - 1;
39 Out.Pos.character = D.getColumnNo();
40 if (!D.getRanges().empty()) {
41 const auto &R = D.getRanges().front();
43 Out.Rng->start.line =
Out.Rng->end.line =
Out.Pos.line;
44 Out.Rng->start.character = R.first;
45 Out.Rng->end.character = R.second;
51 llvm::SourceMgr::DiagKind
Kind;
53 std::optional<Range>
Rng;
56 *
OS << (D.Kind == llvm::SourceMgr::DK_Error ?
"error: " :
"warning: ")
57 << D.Message <<
"@" << llvm::to_string(D.Pos);
75 auto LineCol = SM.getLineAndColumn(L);
77 P.
line = LineCol.first - 1;
CompiledFragmentImpl & Out
const google::protobuf::Message & M
Position toPosition(llvm::SMLoc L, const llvm::SourceMgr &SM)
MATCHER_P(diagMessage, M, "")
Range toRange(llvm::SMRange R, const llvm::SourceMgr &SM)
===– Representation.cpp - ClangDoc Representation --------—*- C++ -*-===//
int line
Line position in a document (zero-based).
int character
Character offset on a line in a document (zero-based).
std::optional< Range > Rng
llvm::SourceMgr::DiagKind Kind
friend void PrintTo(const Diag &D, std::ostream *OS)
std::vector< std::string > Files
std::function< void(const llvm::SMDiagnostic &)> callback()
std::vector< Diag > Diagnostics