2018-05-21 12:49:23 -07:00
|
|
|
#include <cassert>
|
2019-01-10 15:22:39 -08:00
|
|
|
#include "tree_sitter/api.h"
|
2017-07-14 10:42:01 -07:00
|
|
|
|
2018-03-02 09:10:52 -08:00
|
|
|
extern "C" const TSLanguage *TS_LANG();
|
2017-07-14 10:42:01 -07:00
|
|
|
|
|
|
|
|
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
|
|
|
|
const char *str = reinterpret_cast<const char *>(data);
|
|
|
|
|
|
2018-05-11 12:47:49 -07:00
|
|
|
TSParser *parser = ts_parser_new();
|
2018-05-21 12:49:23 -07:00
|
|
|
|
|
|
|
|
// This can fail if the language version doesn't match the runtime version
|
|
|
|
|
bool language_ok = ts_parser_set_language(parser, TS_LANG());
|
|
|
|
|
assert(language_ok);
|
|
|
|
|
|
2018-05-11 12:47:49 -07:00
|
|
|
ts_parser_halt_on_error(parser, TS_HALT_ON_ERROR);
|
2017-07-14 10:42:01 -07:00
|
|
|
|
2018-05-11 12:47:49 -07:00
|
|
|
TSTree *tree = ts_parser_parse_string(parser, NULL, str, size);
|
2018-05-21 10:48:19 -07:00
|
|
|
TSNode root_node = ts_tree_root_node(tree);
|
2017-07-14 10:42:01 -07:00
|
|
|
|
2018-05-11 12:47:49 -07:00
|
|
|
ts_tree_delete(tree);
|
|
|
|
|
ts_parser_delete(parser);
|
2017-07-14 10:42:01 -07:00
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|