summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clangd/fuzzer/ClangdFuzzer.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/clang-tools-extra/clangd/fuzzer/ClangdFuzzer.cpp b/clang-tools-extra/clangd/fuzzer/ClangdFuzzer.cpp
index d521e62ad18..8c9c7bdbf26 100644
--- a/clang-tools-extra/clangd/fuzzer/ClangdFuzzer.cpp
+++ b/clang-tools-extra/clangd/fuzzer/ClangdFuzzer.cpp
@@ -19,20 +19,23 @@
#include <sstream>
#include <stdio.h>
+using namespace clang::clangd;
+
extern "C" int LLVMFuzzerTestOneInput(uint8_t *data, size_t size) {
if (size == 0)
return 0;
- clang::clangd::JSONOutput Out(llvm::nulls(), llvm::nulls(),
- clang::clangd::Logger::Error, nullptr);
- clang::clangd::CodeCompleteOptions CCOpts;
+ // fmemopen isn't portable, but I think we only run the fuzzer on Linux.
+ std::FILE *In = fmemopen(data, size, "r");
+ auto Transport = newJSONTransport(In, llvm::nulls(),
+ /*InMirror=*/nullptr, /*Pretty=*/false,
+ /*Style=*/JSONStreamStyle::Standard);
+ CodeCompleteOptions CCOpts;
CCOpts.EnableSnippets = false;
- clang::clangd::ClangdServer::Options Opts;
+ ClangdServer::Options Opts;
// Initialize and run ClangdLSPServer.
- clang::clangd::ClangdLSPServer LSPServer(Out, CCOpts, llvm::None, false,
- Opts);
- // fmemopen isn't portable, but I think we only run the fuzzer on Linux.
- LSPServer.run(fmemopen(data, size, "r"));
+ ClangdLSPServer LSPServer(*Transport, CCOpts, llvm::None, false, Opts);
+ LSPServer.run();
return 0;
}
OpenPOWER on IntegriCloud