mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 22:02:23 +01:00
Just opening files in vscode and seeing what clangd flags. Some edits to ostream.h to stop it from getting flagged (the usage pattern means it's not always obviously used).
42 lines
1.3 KiB
C++
42 lines
1.3 KiB
C++
// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
|
// Exceptions. See /LICENSE for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
#include <cstring>
|
|
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "toolchain/diagnostics/diagnostic_emitter.h"
|
|
#include "toolchain/diagnostics/null_diagnostics.h"
|
|
#include "toolchain/lexer/tokenized_buffer.h"
|
|
#include "toolchain/parser/parse_tree.h"
|
|
|
|
namespace Carbon::Testing {
|
|
|
|
// NOLINTNEXTLINE: Match the documented fuzzer entry point declaration style.
|
|
extern "C" int LLVMFuzzerTestOneInput(const unsigned char* data,
|
|
std::size_t size) {
|
|
// Ignore large inputs.
|
|
// TODO: See tokenized_buffer_fuzzer.cpp.
|
|
if (size > 100000) {
|
|
return 0;
|
|
}
|
|
|
|
auto source = SourceBuffer::CreateFromText(
|
|
llvm::StringRef(reinterpret_cast<const char*>(data), size));
|
|
|
|
// Lex the input.
|
|
auto tokens = TokenizedBuffer::Lex(*source, NullDiagnosticConsumer());
|
|
if (tokens.has_errors()) {
|
|
return 0;
|
|
}
|
|
|
|
// Now parse it into a tree. Note that parsing will (when asserts are enabled)
|
|
// walk the entire tree to verify it so we don't have to do that here.
|
|
ParseTree::Parse(tokens, NullDiagnosticConsumer(), /*vlog_stream=*/nullptr);
|
|
return 0;
|
|
}
|
|
|
|
} // namespace Carbon::Testing
|