return std::move(Result);
}
+llvm::raw_ostream &operator<<(llvm::raw_ostream &O, const CompletionItem &I) {
+ O << I.label << " - " << toJSON(I);
+ return O;
+}
+
bool operator<(const CompletionItem &L, const CompletionItem &R) {
return (L.sortText.empty() ? L.label : L.sortText) <
(R.sortText.empty() ? R.label : R.sortText);
return std::move(Result);
}
+llvm::raw_ostream &operator<<(llvm::raw_ostream &O,
+ const SignatureInformation &I) {
+ O << I.label << " - " << toJSON(I);
+ return O;
+}
+
json::Expr toJSON(const SignatureHelp &SH) {
assert(SH.activeSignature >= 0 &&
"Unexpected negative value for number of active signatures.");
};
}
+llvm::raw_ostream &operator<<(llvm::raw_ostream &O,
+ const DocumentHighlight &V) {
+ O << V.range;
+ if (V.kind == DocumentHighlightKind::Read)
+ O << "(r)";
+ if (V.kind == DocumentHighlightKind::Write)
+ O << "(w)";
+ return O;
+}
+
bool fromJSON(const json::Expr &Params, DidChangeConfigurationParams &CCP) {
json::ObjectMapper O(Params);
return O && O.map("settings", CCP.settings);
// between a completion and a completion resolve request.
};
json::Expr toJSON(const CompletionItem &);
+llvm::raw_ostream &operator<<(llvm::raw_ostream &, const CompletionItem &);
bool operator<(const CompletionItem &, const CompletionItem &);
std::vector<ParameterInformation> parameters;
};
json::Expr toJSON(const SignatureInformation &);
+llvm::raw_ostream &operator<<(llvm::raw_ostream &,
+ const SignatureInformation &);
/// Represents the signature of a callable.
struct SignatureHelp {
}
};
json::Expr toJSON(const DocumentHighlight &DH);
+llvm::raw_ostream &operator<<(llvm::raw_ostream &, const DocumentHighlight &);
} // namespace clangd
} // namespace clang
namespace clang {
namespace clangd {
-// Let GMock print completion items and signature help.
-void PrintTo(const CompletionItem &I, std::ostream *O) {
- llvm::raw_os_ostream OS(*O);
- OS << I.label << " - " << toJSON(I);
-}
-void PrintTo(const std::vector<CompletionItem> &V, std::ostream *O) {
- *O << "{\n";
- for (const auto &I : V) {
- *O << "\t";
- PrintTo(I, O);
- *O << "\n";
- }
- *O << "}";
-}
-void PrintTo(const SignatureInformation &I, std::ostream *O) {
- llvm::raw_os_ostream OS(*O);
- OS << I.label << " - " << toJSON(I);
-}
-void PrintTo(const std::vector<SignatureInformation> &V, std::ostream *O) {
- *O << "{\n";
- for (const auto &I : V) {
- *O << "\t";
- PrintTo(I, O);
- *O << "\n";
- }
- *O << "}";
-}
namespace {
using namespace llvm;
namespace clang {
namespace clangd {
namespace json {
-void PrintTo(const Expr &E, std::ostream *OS) {
- llvm::raw_os_ostream(*OS) << llvm::formatv("{0:2}", E);
-}
+
namespace {
std::string s(const Expr &E) { return llvm::formatv("{0}", E).str(); }
namespace clangd {
using namespace llvm;
-void PrintTo(const DocumentHighlight &V, std::ostream *O) {
- llvm::raw_os_ostream OS(*O);
- OS << V.range;
- if (V.kind == DocumentHighlightKind::Read)
- OS << "(r)";
- if (V.kind == DocumentHighlightKind::Write)
- OS << "(w)";
-}
-
namespace {
using testing::ElementsAre;
using testing::Field;