diff options
-rw-r--r-- | clang-tools-extra/clangd/fuzzer/ClangdFuzzer.cpp | 19 |
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; } |