From a2d6048226ceb1b09a7e4cf330d75ced0d3f27a3 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 30 Nov 2020 14:28:27 -0800 Subject: [PATCH] Get the wasm build working w/ latest emscripten --- lib/binding_web/binding.c | 27 +++++++++++++++++---------- lib/binding_web/binding.js | 2 +- lib/binding_web/imports.js | 2 +- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/lib/binding_web/binding.c b/lib/binding_web/binding.c index eb463b26..9180f405 100644 --- a/lib/binding_web/binding.c +++ b/lib/binding_web/binding.c @@ -115,18 +115,10 @@ extern void tree_sitter_parse_callback( ); extern void tree_sitter_log_callback( - void *payload, - TSLogType log_type, + bool is_lex_message, const char *message ); -void ts_parser_new_wasm() { - TSParser *parser = ts_parser_new(); - char *input_buffer = calloc(INPUT_BUFFER_SIZE, sizeof(char)); - TRANSFER_BUFFER[0] = parser; - TRANSFER_BUFFER[1] = input_buffer; -} - static const char *call_parse_callback( void *payload, uint32_t byte, @@ -148,8 +140,23 @@ static const char *call_parse_callback( return buffer; } +static void call_log_callback( + void *payload, + TSLogType log_type, + const char *message +) { + tree_sitter_log_callback(log_type == TSLogTypeLex, message); +} + +void ts_parser_new_wasm() { + TSParser *parser = ts_parser_new(); + char *input_buffer = calloc(INPUT_BUFFER_SIZE, sizeof(char)); + TRANSFER_BUFFER[0] = parser; + TRANSFER_BUFFER[1] = input_buffer; +} + void ts_parser_enable_logger_wasm(TSParser *self, bool should_log) { - TSLogger logger = {self, should_log ? tree_sitter_log_callback : NULL}; + TSLogger logger = {self, should_log ? call_log_callback : NULL}; ts_parser_set_logger(self, logger); } diff --git a/lib/binding_web/binding.js b/lib/binding_web/binding.js index 15b07116..95bfa828 100644 --- a/lib/binding_web/binding.js +++ b/lib/binding_web/binding.js @@ -880,7 +880,7 @@ class Language { } return bytes - .then(bytes => loadWebAssemblyModule(bytes, {loadAsync: true})) + .then(bytes => loadSideModule(bytes, {loadAsync: true})) .then(mod => { const symbolNames = Object.keys(mod) const functionName = symbolNames.find(key => diff --git a/lib/binding_web/imports.js b/lib/binding_web/imports.js index ea34926f..a76c42ac 100644 --- a/lib/binding_web/imports.js +++ b/lib/binding_web/imports.js @@ -16,7 +16,7 @@ mergeInto(LibraryManager.library, { } }, - tree_sitter_log_callback: function(_payload, isLexMessage, messageAddress) { + tree_sitter_log_callback: function(isLexMessage, messageAddress) { if (currentLogCallback) { const message = UTF8ToString(messageAddress); currentLogCallback(message, isLexMessage !== 0);