Date: Saturday, April 18, 2020 @ 11:10:00 Author: maximbaz Revision: 616036
upgpkg: bash-language-server 1.13.1-1 Modified: bash-language-server/trunk/PKGBUILD Deleted: bash-language-server/trunk/0001-node-tree-sitter-nodejs-12-update.patch bash-language-server/trunk/bash-language-server-nodejs-12-update.patch ----------------------------------------------+ 0001-node-tree-sitter-nodejs-12-update.patch | 744 ------------------------- PKGBUILD | 5 bash-language-server-nodejs-12-update.patch | 15 3 files changed, 2 insertions(+), 762 deletions(-) Deleted: 0001-node-tree-sitter-nodejs-12-update.patch =================================================================== --- 0001-node-tree-sitter-nodejs-12-update.patch 2020-04-18 09:09:25 UTC (rev 616035) +++ 0001-node-tree-sitter-nodejs-12-update.patch 2020-04-18 11:10:00 UTC (rev 616036) @@ -1,744 +0,0 @@ -From c526efc6500a1c35d71aee9ce170190b06a7210f Mon Sep 17 00:00:00 2001 -From: "Xl.W" <[email protected]> -Date: Thu, 22 Aug 2019 13:33:30 +0800 -Subject: [PATCH] node-tree-sitter: nodejs 12 update - ---- - src/conversions.cc | 69 +++++++++++++++++++++------------- - src/language.cc | 4 +- - src/logger.cc | 10 ++--- - src/node.cc | 75 +++++++++++++++++++++---------------- - src/parser.cc | 91 ++++++++++++++++++++++++++------------------- - src/tree.cc | 37 ++++++++++++------ - src/tree_cursor.cc | 14 ++++--- - test/node_test.js | 2 +- - test/parser_test.js | 2 +- - 9 files changed, 180 insertions(+), 124 deletions(-) - -diff --git a/src/conversions.cc b/src/conversions.cc -index d024b4c..6d685cd 100644 ---- a/src/conversions.cc -+++ b/src/conversions.cc -@@ -29,7 +29,7 @@ void InitConversions(Local<Object> exports) { - - point_transfer_buffer = static_cast<uint32_t *>(malloc(2 * sizeof(uint32_t))); - auto js_point_transfer_buffer = ArrayBuffer::New(Isolate::GetCurrent(), point_transfer_buffer, 2 * sizeof(uint32_t)); -- exports->Set(Nan::New("pointTransferArray").ToLocalChecked(), Uint32Array::New(js_point_transfer_buffer, 0, 2)); -+ Nan::Set(exports, Nan::New("pointTransferArray").ToLocalChecked(), Uint32Array::New(js_point_transfer_buffer, 0, 2)); - } - - void TransferPoint(const TSPoint &point) { -@@ -39,10 +39,10 @@ void TransferPoint(const TSPoint &point) { - - Local<Object> RangeToJS(const TSRange &range) { - Local<Object> result = Nan::New<Object>(); -- result->Set(Nan::New(start_position_key), PointToJS(range.start_point)); -- result->Set(Nan::New(start_index_key), ByteCountToJS(range.start_byte)); -- result->Set(Nan::New(end_position_key), PointToJS(range.end_point)); -- result->Set(Nan::New(end_index_key), ByteCountToJS(range.end_byte)); -+ Nan::Set(result, Nan::New(start_position_key), PointToJS(range.start_point)); -+ Nan::Set(result, Nan::New(start_index_key), ByteCountToJS(range.start_byte)); -+ Nan::Set(result, Nan::New(end_position_key), PointToJS(range.end_point)); -+ Nan::Set(result, Nan::New(end_index_key), ByteCountToJS(range.end_byte)); - return result; - } - -@@ -56,8 +56,13 @@ Nan::Maybe<TSRange> RangeFromJS(const Local<Value> &arg) { - - Local<Object> js_range = Local<Object>::Cast(arg); - -- #define INIT(field, key, Type) { \ -- auto field = Type(js_range->Get(Nan::New(key))); \ -+ #define INIT(field, key, Convert) { \ -+ auto value = Nan::Get(js_range, Nan::New(key)); \ -+ if (value.IsEmpty()) { \ -+ Nan::ThrowTypeError("Range must be a {startPosition, endPosition, startIndex, endIndex} object"); \ -+ return Nan::Nothing<TSRange>(); \ -+ } \ -+ auto field = Convert(value.ToLocalChecked()); \ - if (field.IsJust()) { \ - result.field = field.FromJust(); \ - } else { \ -@@ -77,41 +82,52 @@ Nan::Maybe<TSRange> RangeFromJS(const Local<Value> &arg) { - - Local<Object> PointToJS(const TSPoint &point) { - Local<Object> result = Nan::New<Object>(); -- result->Set(Nan::New(row_key), Nan::New<Number>(point.row)); -- result->Set(Nan::New(column_key), ByteCountToJS(point.column)); -+ Nan::Set(result, Nan::New(row_key), Nan::New<Number>(point.row)); -+ Nan::Set(result, Nan::New(column_key), ByteCountToJS(point.column)); - return result; - } - - Nan::Maybe<TSPoint> PointFromJS(const Local<Value> &arg) { -- if (!arg->IsObject()) { -+ Local<Object> js_point; -+ if (!Nan::To<Object>(arg).ToLocal(&js_point)) { - Nan::ThrowTypeError("Point must be a {row, column} object"); - return Nan::Nothing<TSPoint>(); - } - -- Local<Object> js_point = Local<Object>::Cast(arg); -- Local<Value> js_row = js_point->Get(Nan::New(row_key)); -- if (!js_row->IsNumber()) { -- Nan::ThrowTypeError("Point.row must be a number"); -+ Local<Value> js_row; -+ if (!Nan::Get(js_point, Nan::New(row_key)).ToLocal(&js_row)) { -+ Nan::ThrowTypeError("Point must be a {row, column} object"); - return Nan::Nothing<TSPoint>(); - } - -- Local<Value> js_column = js_point->Get(Nan::New(column_key)); -- if (!js_column->IsNumber()) { -- Nan::ThrowTypeError("Point.column must be a number"); -+ Local<Value> js_column; -+ if (!Nan::Get(js_point, Nan::New(column_key)).ToLocal(&js_column)) { -+ Nan::ThrowTypeError("Point must be a {row, column} object"); - return Nan::Nothing<TSPoint>(); - } - -- uint32_t row, column; -- if (std::isfinite(js_row->NumberValue())) { -- row = static_cast<uint32_t>(js_row->Int32Value()); -- } else { -+ uint32_t row; -+ if (!std::isfinite(Nan::To<double>(js_row).FromMaybe(0))) { - row = UINT32_MAX; -+ } else { -+ auto maybe_row = Nan::To<uint32_t>(js_row); -+ if (!maybe_row.IsJust()) { -+ Nan::ThrowTypeError("Point.row must be a number"); -+ return Nan::Nothing<TSPoint>(); -+ } -+ row = maybe_row.FromJust(); - } - -- if (std::isfinite(js_column->NumberValue())) { -- column = static_cast<uint32_t>(js_column->Int32Value()) * BYTES_PER_CHARACTER; -- } else { -+ uint32_t column; -+ if (!std::isfinite(Nan::To<double>(js_column).FromMaybe(0))) { - column = UINT32_MAX; -+ } else { -+ auto maybe_column = Nan::To<uint32_t>(js_column); -+ if (!maybe_column.IsJust()) { -+ Nan::ThrowTypeError("Point.column must be a number"); -+ return Nan::Nothing<TSPoint>(); -+ } -+ column = maybe_column.FromJust(); - } - - return Nan::Just<TSPoint>({row, column}); -@@ -122,12 +138,13 @@ Local<Number> ByteCountToJS(uint32_t byte_count) { - } - - Nan::Maybe<uint32_t> ByteCountFromJS(const v8::Local<v8::Value> &arg) { -- if (!arg->IsUint32()) { -+ auto result = Nan::To<uint32_t>(arg); -+ if (!result.IsJust()) { - Nan::ThrowTypeError("Character index must be a number"); - return Nan::Nothing<uint32_t>(); - } - -- return Nan::Just<uint32_t>(arg->Uint32Value() * BYTES_PER_CHARACTER); -+ return Nan::Just<uint32_t>(result.FromJust() * BYTES_PER_CHARACTER); - } - - } // namespace node_tree_sitter -diff --git a/src/language.cc b/src/language.cc -index 9a25b02..a804433 100644 ---- a/src/language.cc -+++ b/src/language.cc -@@ -77,12 +77,12 @@ static void GetNodeFieldNamesById(const Nan::FunctionCallbackInfo<Value> &info) - void Init(Local<Object> exports) { - exports->Set( - Nan::New("getNodeTypeNamesById").ToLocalChecked(), -- Nan::New<FunctionTemplate>(GetNodeTypeNamesById)->GetFunction() -+ Nan::GetFunction(Nan::New<FunctionTemplate>(GetNodeTypeNamesById)).ToLocalChecked() - ); - - exports->Set( - Nan::New("getNodeFieldNamesById").ToLocalChecked(), -- Nan::New<FunctionTemplate>(GetNodeFieldNamesById)->GetFunction() -+ Nan::GetFunction(Nan::New<FunctionTemplate>(GetNodeFieldNamesById)).ToLocalChecked() - ); - } - -diff --git a/src/logger.cc b/src/logger.cc -index 00e624e..5f0cacd 100644 ---- a/src/logger.cc -+++ b/src/logger.cc -@@ -36,21 +36,21 @@ void Logger::Log(void *payload, TSLogType type, const char *message_str) { - - string key = message.substr(key_pos, (value_sep_pos - key_pos)); - string value = message.substr(val_pos, (param_sep_pos - val_pos)); -- params->Set(Nan::New(key).ToLocalChecked(), Nan::New(value).ToLocalChecked()); -+ Nan::Set(params, Nan::New(key).ToLocalChecked(), Nan::New(value).ToLocalChecked()); - } - - Local<Value> argv[3] = { name, params, type_name }; - TryCatch try_catch(Isolate::GetCurrent()); -- fn->Call(fn->CreationContext()->Global(), 3, argv); -+ Nan::Call(fn, fn->CreationContext()->Global(), 3, argv); - if (try_catch.HasCaught()) { - Local<Value> log_argv[2] = { - Nan::New("Error in debug callback:").ToLocalChecked(), - try_catch.Exception() - }; - -- Local<Object> console = Local<Object>::Cast(fn->CreationContext()->Global()->Get(Nan::New("console").ToLocalChecked())); -- Local<Function> error_fn = Local<Function>::Cast(console->Get(Nan::New("error").ToLocalChecked())); -- error_fn->Call(console, 2, log_argv); -+ Local<Object> console = Local<Object>::Cast(Nan::Get(fn->CreationContext()->Global(), Nan::New("console").ToLocalChecked()).ToLocalChecked()); -+ Local<Function> error_fn = Local<Function>::Cast(Nan::Get(console, Nan::New("error").ToLocalChecked()).ToLocalChecked()); -+ Nan::Call(error_fn, console, 2, log_argv); - } - } - -diff --git a/src/node.cc b/src/node.cc -index 8a5517f..5f4ad93 100644 ---- a/src/node.cc -+++ b/src/node.cc -@@ -27,7 +27,8 @@ static inline void setup_transfer_buffer(uint32_t node_count) { - transfer_buffer_length = new_length; - transfer_buffer = static_cast<uint32_t *>(malloc(transfer_buffer_length * sizeof(uint32_t))); - auto js_transfer_buffer = ArrayBuffer::New(Isolate::GetCurrent(), transfer_buffer, transfer_buffer_length * sizeof(uint32_t)); -- Nan::New(module_exports)->Set( -+ Nan::Set( -+ Nan::New(module_exports), - Nan::New("nodeTransferArray").ToLocalChecked(), - Uint32Array::New(js_transfer_buffer, 0, transfer_buffer_length) - ); -@@ -56,13 +57,12 @@ static void MarshalNodes(const Nan::FunctionCallbackInfo<Value> &info, - *(p++) = node.context[2]; - *(p++) = node.context[3]; - if (node.id) { -- result->Set(i, Nan::New(ts_node_symbol(node))); -+ Nan::Set(result, i, Nan::New(ts_node_symbol(node))); - } else { -- result->Set(i, Nan::Null()); -+ Nan::Set(result, i, Nan::Null()); - } - } else { -- assert(!cache_entry->second->node.IsNearDeath()); -- result->Set(i, Nan::New(cache_entry->second->node)); -+ Nan::Set(result, i, Nan::New(cache_entry->second->node)); - } - } - info.GetReturnValue().Set(result); -@@ -83,7 +83,6 @@ void MarshalNode(const Nan::FunctionCallbackInfo<Value> &info, const Tree *tree, - info.GetReturnValue().Set(Nan::New(ts_node_symbol(node))); - } - } else { -- assert(!cache_entry->second->node.IsNearDeath()); - info.GetReturnValue().Set(Nan::New(cache_entry->second->node)); - } - } -@@ -317,7 +316,7 @@ static void Child(const Nan::FunctionCallbackInfo<Value> &info) { - Nan::ThrowTypeError("Second argument must be an integer"); - return; - } -- uint32_t index = info[1]->Uint32Value(); -+ uint32_t index = Nan::To<uint32_t>(info[1]).FromJust(); - MarshalNode(info, tree, ts_node_child(node, index)); - return; - } -@@ -333,7 +332,7 @@ static void NamedChild(const Nan::FunctionCallbackInfo<Value> &info) { - Nan::ThrowTypeError("Second argument must be an integer"); - return; - } -- uint32_t index = info[1]->Uint32Value(); -+ uint32_t index = Nan::To<uint32_t>(info[1]).FromJust(); - MarshalNode(info, tree, ts_node_named_child(node, index)); - return; - } -@@ -470,26 +469,37 @@ bool symbol_set_from_js(SymbolSet *symbols, const Local<Value> &value, const TSL - - Local<Array> js_types = Local<Array>::Cast(value); - for (unsigned i = 0, n = js_types->Length(); i < n; i++) { -- Local<Value> js_types_i = js_types->Get(i); -- if (!js_types_i->IsString()) { -- Nan::ThrowTypeError("Argument must be a string or array of strings"); -- return false; -- } -- -- Local<String> js_node_type = Local<String>::Cast(js_types_i); -- std::string node_type(js_node_type->Utf8Length(), '\0'); -- js_node_type->WriteUtf8(&node_type[0]); -- -- if (node_type == "ERROR") { -- symbols->add(static_cast<TSSymbol>(-1)); -- continue; -- } -+ Local<Value> js_node_type_value; -+ if (Nan::Get(js_types, i).ToLocal(&js_node_type_value)) { -+ Local<String> js_node_type; -+ if (Nan::To<String>(js_node_type_value).ToLocal(&js_node_type)) { -+ std::string node_type(js_node_type->Utf8Length(Isolate::GetCurrent()), '\0'); -+ js_node_type->WriteUtf8( -+ -+ // Nan doesn't wrap this functionality -+ #if NODE_MAJOR_VERSION >= 12 -+ Isolate::GetCurrent(), -+ #endif -+ -+ &node_type[0] -+ ); -+ -+ if (node_type == "ERROR") { -+ symbols->add(static_cast<TSSymbol>(-1)); -+ } else { -+ for (TSSymbol j = 0; j < symbol_count; j++) { -+ if (node_type == ts_language_symbol_name(language, j)) { -+ symbols->add(j); -+ } -+ } -+ } - -- for (TSSymbol j = 0; j < symbol_count; j++) { -- if (node_type == ts_language_symbol_name(language, j)) { -- symbols->add(j); -+ continue; - } - } -+ -+ Nan::ThrowTypeError("Argument must be a string or array of strings"); -+ return false; - } - - return true; -@@ -542,13 +552,13 @@ static void DescendantsOfType(const Nan::FunctionCallbackInfo<Value> &info) { - TSPoint start_point = {0, 0}; - TSPoint end_point = {UINT32_MAX, UINT32_MAX}; - -- if (info[2]->BooleanValue()) { -+ if (info.Length() > 2) { - auto maybe_start_point = PointFromJS(info[2]); - if (maybe_start_point.IsNothing()) return; - start_point = maybe_start_point.FromJust(); - } - -- if (info[3]->BooleanValue()) { -+ if (info.Length() > 3) { - auto maybe_end_point = PointFromJS(info[3]); - if (maybe_end_point.IsNothing()) return; - end_point = maybe_end_point.FromJust(); -@@ -606,7 +616,7 @@ static void ChildNodesForFieldId(const Nan::FunctionCallbackInfo<Value> &info) { - Nan::ThrowTypeError("Second argument must be an integer"); - return; - } -- uint32_t field_id = info[1]->Uint32Value(); -+ uint32_t field_id = Nan::To<uint32_t>(info[1]).FromJust(); - - vector<TSNode> result; - ts_tree_cursor_reset(&scratch_cursor, node); -@@ -631,7 +641,7 @@ static void ChildNodeForFieldId(const Nan::FunctionCallbackInfo<Value> &info) { - Nan::ThrowTypeError("Second argument must be an integer"); - return; - } -- uint32_t field_id = info[1]->Uint32Value(); -+ uint32_t field_id = Nan::To<uint32_t>(info[1]).FromJust(); - MarshalNode(info, tree, ts_node_child_by_field_id(node, field_id)); - return; - } -@@ -710,16 +720,17 @@ void Init(Local<Object> exports) { - }; - - for (size_t i = 0; i < length_of_array(methods); i++) { -- result->Set( -+ Nan::Set( -+ result, - Nan::New(methods[i].name).ToLocalChecked(), -- Nan::New<FunctionTemplate>(methods[i].callback)->GetFunction() -+ Nan::GetFunction(Nan::New<FunctionTemplate>(methods[i].callback)).ToLocalChecked() - ); - } - - module_exports.Reset(exports); - setup_transfer_buffer(1); - -- exports->Set(Nan::New("NodeMethods").ToLocalChecked(), result); -+ Nan::Set(exports, Nan::New("NodeMethods").ToLocalChecked(), result); - } - - } // namespace node_methods -diff --git a/src/parser.cc b/src/parser.cc -index 7eddd39..420c7b1 100644 ---- a/src/parser.cc -+++ b/src/parser.cc -@@ -26,11 +26,8 @@ class CallbackInput { - : callback(callback), - byte_offset(0), - partial_string_offset(0) { -- if (js_buffer_size->IsUint32()) { -- buffer.resize(Local<Integer>::Cast(js_buffer_size)->Uint32Value()); -- } else { -- buffer.resize(32 * 1024); -- } -+ uint32_t buffer_size = Nan::To<uint32_t>(js_buffer_size).FromMaybe(32 * 1024); -+ buffer.resize(buffer_size); - } - - TSInput Input() { -@@ -51,8 +48,9 @@ class CallbackInput { - reader->partial_string.Reset(); - } - -+ *bytes_read = 0; - Local<String> result; -- uint32_t start; -+ uint32_t start = 0; - if (reader->partial_string_offset) { - result = Nan::New(reader->partial_string); - start = reader->partial_string_offset; -@@ -61,18 +59,26 @@ class CallbackInput { - uint32_t utf16_unit = byte / 2; - Local<Value> argv[2] = { Nan::New<Number>(utf16_unit), PointToJS(position) }; - TryCatch try_catch(Isolate::GetCurrent()); -- auto result_value = callback->Call(Nan::Null(), 2, argv); -- if (!try_catch.HasCaught() && result_value->IsString()) { -- result = Local<String>::Cast(result_value); -- start = 0; -- } else { -- *bytes_read = 0; -- start = 0; -- return ""; -- } -+ auto maybe_result_value = Nan::Call(callback, callback->CreationContext()->Global(), 2, argv); -+ if (try_catch.HasCaught()) return nullptr; -+ -+ Local<Value> result_value; -+ if (!maybe_result_value.ToLocal(&result_value)) return nullptr; -+ if (!Nan::To<String>(result_value).ToLocal(&result)) return nullptr; - } - -- int utf16_units_read = result->Write(reader->buffer.data(), start, reader->buffer.size(), 2); -+ int utf16_units_read = result->Write( -+ -+ // Nan doesn't wrap this functionality -+ #if NODE_MAJOR_VERSION >= 12 -+ Isolate::GetCurrent(), -+ #endif -+ -+ reader->buffer.data(), -+ start, -+ reader->buffer.size(), -+ 2 -+ ); - int end = start + utf16_units_read; - *bytes_read = 2 * utf16_units_read; - -@@ -173,9 +179,9 @@ void Parser::Init(Local<Object> exports) { - Nan::SetPrototypeMethod(tpl, methods[i].name, methods[i].callback); - } - -- constructor.Reset(Nan::Persistent<Function>(tpl->GetFunction())); -- exports->Set(class_name, Nan::New(constructor)); -- exports->Set(Nan::New("LANGUAGE_VERSION").ToLocalChecked(), Nan::New<Number>(TREE_SITTER_LANGUAGE_VERSION)); -+ constructor.Reset(Nan::Persistent<Function>(Nan::GetFunction(tpl).ToLocalChecked())); -+ Nan::Set(exports, class_name, Nan::New(constructor)); -+ Nan::Set(exports, Nan::New("LANGUAGE_VERSION").ToLocalChecked(), Nan::New<Number>(TREE_SITTER_LANGUAGE_VERSION)); - } - - Parser::Parser() : parser_(ts_parser_new()), is_parsing_async_(false) {} -@@ -188,7 +194,9 @@ static bool handle_included_ranges(TSParser *parser, Local<Value> arg) { - auto js_included_ranges = Local<Array>::Cast(arg); - vector<TSRange> included_ranges; - for (unsigned i = 0; i < js_included_ranges->Length(); i++) { -- auto maybe_range = RangeFromJS(js_included_ranges->Get(i)); -+ Local<Value> range_value; -+ if (!Nan::Get(js_included_ranges, i).ToLocal(&range_value)) return false; -+ auto maybe_range = RangeFromJS(range_value); - if (!maybe_range.IsJust()) return false; - auto range = maybe_range.FromJust(); - if (range.start_byte < last_included_range_end) { -@@ -250,9 +258,10 @@ void Parser::Parse(const Nan::FunctionCallbackInfo<Value> &info) { - - Local<Function> callback = Local<Function>::Cast(info[0]); - -+ Local<Object> js_old_tree; - const TSTree *old_tree = nullptr; -- if (info.Length() > 1 && info[1]->BooleanValue()) { -- const Tree *tree = Tree::UnwrapTree(info[1]); -+ if (info.Length() > 1 && Nan::To<Object>(info[1]).ToLocal(&js_old_tree)) { -+ const Tree *tree = Tree::UnwrapTree(js_old_tree); - if (!tree) { - Nan::ThrowTypeError("Second argument must be a tree"); - return; -@@ -305,9 +314,10 @@ void Parser::ParseTextBuffer(const Nan::FunctionCallbackInfo<Value> &info) { - return; - } - -+ Local<Object> js_old_tree; - const TSTree *old_tree = nullptr; -- if (info.Length() > 2 && info[2]->BooleanValue()) { -- const Tree *tree = Tree::UnwrapTree(info[2]); -+ if (info.Length() > 2 && Nan::To<Object>(info[2]).ToLocal(&js_old_tree)) { -+ const Tree *tree = Tree::UnwrapTree(js_old_tree); - if (!tree) { - Nan::ThrowTypeError("Second argument must be a tree"); - return; -@@ -322,18 +332,21 @@ void Parser::ParseTextBuffer(const Nan::FunctionCallbackInfo<Value> &info) { - - // If a `syncTimeoutMicros` option is passed, parse synchronously - // for the given amount of time before queuing an async task. -- if (info[4]->BooleanValue()) { -- double js_sync_timeout = info[4]->NumberValue(); -+ double js_sync_timeout = Nan::To<double>(info[4]).FromMaybe(-1); -+ if (js_sync_timeout > 0) { - size_t sync_timeout; - - // If the timeout is `Infinity`, then parse synchronously with no timeout. -- if (js_sync_timeout > 0 && !std::isfinite(js_sync_timeout)) { -+ if (js_sync_timeout && !std::isfinite(js_sync_timeout)) { - sync_timeout = 0; -- } else if (info[4]->IsUint32()) { -- sync_timeout = info[4]->Uint32Value(); - } else { -- Nan::ThrowTypeError("The `syncTimeoutMicros` option must be a positive integer."); -- return; -+ auto maybe_sync_timeout = Nan::To<uint32_t>(info[4]); -+ if (maybe_sync_timeout.IsJust()) { -+ sync_timeout = maybe_sync_timeout.FromJust(); -+ } else { -+ Nan::ThrowTypeError("The `syncTimeoutMicros` option must be a positive integer."); -+ return; -+ } - } - - // Logging is disabled for this method, because we can't call the -@@ -348,7 +361,8 @@ void Parser::ParseTextBuffer(const Nan::FunctionCallbackInfo<Value> &info) { - if (result) { - delete input; - Local<Value> argv[] = {Tree::NewInstance(result)}; -- info[0].As<Function>()->Call(Nan::Null(), 1, argv); -+ auto callback = info[0].As<Function>(); -+ Nan::Call(callback, callback->CreationContext()->Global(), 1, argv); - return; - } - } -@@ -369,9 +383,10 @@ void Parser::ParseTextBufferSync(const Nan::FunctionCallbackInfo<Value> &info) { - return; - } - -- TSTree *old_tree = nullptr; -- if (info.Length() > 1 && info[1]->BooleanValue()) { -- const Tree *tree = Tree::UnwrapTree(info[1]); -+ Local<Object> js_old_tree; -+ const TSTree *old_tree = nullptr; -+ if (info.Length() > 1 && Nan::To<Object>(info[1]).ToLocal(&js_old_tree)) { -+ const Tree *tree = Tree::UnwrapTree(js_old_tree); - if (!tree) { - Nan::ThrowTypeError("Second argument must be a tree"); - return; -@@ -411,7 +426,7 @@ void Parser::SetLogger(const Nan::FunctionCallbackInfo<Value> &info) { - if (info[0]->IsFunction()) { - if (current_logger.payload) delete (Logger *)current_logger.payload; - ts_parser_set_logger(parser->parser_, Logger::Make(Local<Function>::Cast(info[0]))); -- } else if (!info[0]->BooleanValue()) { -+ } else if (!Nan::To<bool>(info[0]).FromMaybe(true)) { - if (current_logger.payload) delete (Logger *)current_logger.payload; - ts_parser_set_logger(parser->parser_, { 0, 0 }); - } else { -@@ -429,9 +444,7 @@ void Parser::PrintDotGraphs(const Nan::FunctionCallbackInfo<Value> &info) { - return; - } - -- Local<Boolean> value = Local<Boolean>::Cast(info[0]); -- -- if (value->IsBoolean() && value->BooleanValue()) { -+ if (Nan::To<bool>(info[0]).FromMaybe(false)) { - ts_parser_print_dot_graphs(parser->parser_, 2); - } else { - ts_parser_print_dot_graphs(parser->parser_, -1); -diff --git a/src/tree.cc b/src/tree.cc -index c41437a..2800075 100644 ---- a/src/tree.cc -+++ b/src/tree.cc -@@ -34,11 +34,11 @@ void Tree::Init(Local<Object> exports) { - Nan::SetPrototypeMethod(tpl, methods[i].name, methods[i].callback); - } - -- Local<Function> ctor = tpl->GetFunction(); -+ Local<Function> ctor = Nan::GetFunction(tpl).ToLocalChecked(); - - constructor_template.Reset(tpl); - constructor.Reset(ctor); -- exports->Set(class_name, ctor); -+ Nan::Set(exports, class_name, ctor); - } - - Tree::Tree(TSTree *tree) : tree_(tree) {} -@@ -53,10 +53,14 @@ Tree::~Tree() { - Local<Value> Tree::NewInstance(TSTree *tree) { - if (tree) { - Local<Object> self; -- MaybeLocal<Object> maybe_self = Nan::New(constructor)->NewInstance(Nan::GetCurrentContext()); -+ printf("NEW INSTANCE TIME %d\n", Nan::New(constructor)->IsFunction()); -+ MaybeLocal<Object> maybe_self = Nan::NewInstance(Nan::New(constructor)); - if (maybe_self.ToLocal(&self)) { -+ puts("GOT A LOCAL"); - (new Tree(tree))->Wrap(self); - return self; -+ } else { -+ puts("DID NOT GOT A LOCAL"); - } - } - return Nan::Null(); -@@ -70,14 +74,17 @@ const Tree *Tree::UnwrapTree(const Local<Value> &value) { - } - - void Tree::New(const Nan::FunctionCallbackInfo<Value> &info) { -- info.GetReturnValue().Set(Nan::Null()); -+ printf("IS CONSTRUCT CALL %d\n", info.IsConstructCall()); -+ info.GetReturnValue().Set(info.This()); - } - - #define read_number_from_js(out, value, name) \ -- if (!(value)->IsUint32()) { \ -+ maybe_number = Nan::To<uint32_t>(value); \ -+ if (maybe_number.IsNothing()) { \ - Nan::ThrowTypeError(name " must be an integer"); \ -+ return; \ - } \ -- *(out) = (value)->Uint32Value() -+ *(out) = maybe_number.FromJust(); - - #define read_byte_count_from_js(out, value, name) \ - read_number_from_js(out, value, name); \ -@@ -87,6 +94,7 @@ void Tree::Edit(const Nan::FunctionCallbackInfo<Value> &info) { - Tree *tree = ObjectWrap::Unwrap<Tree>(info.This()); - - TSInputEdit edit; -+ Nan::Maybe<uint32_t> maybe_number = Nan::Nothing<uint32_t>(); - read_number_from_js(&edit.start_point.row, info[0], "startPosition.row"); - read_byte_count_from_js(&edit.start_point.column, info[1], "startPosition.column"); - read_number_from_js(&edit.old_end_point.row, info[2], "oldEndPosition.row"); -@@ -104,13 +112,16 @@ void Tree::Edit(const Nan::FunctionCallbackInfo<Value> &info) { - TSNode node; - node.id = entry.first; - for (unsigned i = 0; i < 4; i++) { -- node.context[i] = js_node->Get(i + 2)->Uint32Value(); -+ Local<Value> node_field; -+ if (Nan::Get(js_node, i + 2).ToLocal(&node_field)) { -+ node.context[i] = Nan::To<uint32_t>(node_field).FromMaybe(0); -+ } - } - - ts_node_edit(&node, &edit); - - for (unsigned i = 0; i < 4; i++) { -- js_node->Set(i + 2, Nan::New(node.context[i])); -+ Nan::Set(js_node, i + 2, Nan::New(node.context[i])); - } - } - -@@ -135,7 +146,7 @@ void Tree::GetChangedRanges(const Nan::FunctionCallbackInfo<Value> &info) { - - Local<Array> result = Nan::New<Array>(); - for (size_t i = 0; i < range_count; i++) { -- result->Set(i, RangeToJS(ranges[i])); -+ Nan::Set(result, i, RangeToJS(ranges[i])); - } - - info.GetReturnValue().Set(result); -@@ -197,7 +208,6 @@ void Tree::PrintDotGraph(const Nan::FunctionCallbackInfo<Value> &info) { - - static void FinalizeNode(const v8::WeakCallbackInfo<Tree::NodeCacheEntry> &info) { - Tree::NodeCacheEntry *cache_entry = info.GetParameter(); -- assert(cache_entry->node.IsNearDeath()); - assert(!cache_entry->node.IsEmpty()); - cache_entry->node.Reset(); - if (cache_entry->tree) { -@@ -211,9 +221,12 @@ void Tree::CacheNode(const Nan::FunctionCallbackInfo<Value> &info) { - Tree *tree = ObjectWrap::Unwrap<Tree>(info.This()); - Local<Object> js_node = Local<Object>::Cast(info[0]); - -+ Local<Value> js_node_field1, js_node_field2; -+ if (!Nan::Get(js_node, 0).ToLocal(&js_node_field1)) return; -+ if (!Nan::Get(js_node, 1).ToLocal(&js_node_field2)) return; - uint32_t key_parts[2] = { -- js_node->Get(0)->Uint32Value(), -- js_node->Get(1)->Uint32Value(), -+ Nan::To<uint32_t>(js_node_field1).FromMaybe(0), -+ Nan::To<uint32_t>(js_node_field2).FromMaybe(0) - }; - const void *key = UnmarshalNodeId(key_parts); - -diff --git a/src/tree_cursor.cc b/src/tree_cursor.cc -index 332a14b..a1bb741 100644 ---- a/src/tree_cursor.cc -+++ b/src/tree_cursor.cc -@@ -49,8 +49,8 @@ void TreeCursor::Init(v8::Local<v8::Object> exports) { - Nan::SetPrototypeMethod(tpl, methods[i].name, methods[i].callback); - } - -- Local<Function> constructor_local = tpl->GetFunction(); -- exports->Set(class_name, constructor_local); -+ Local<Function> constructor_local = Nan::GetFunction(tpl).ToLocalChecked(); -+ Nan::Set(exports, class_name, constructor_local); - constructor.Reset(Nan::Persistent<Function>(constructor_local)); - } - -@@ -87,10 +87,12 @@ void TreeCursor::GotoFirstChild(const Nan::FunctionCallbackInfo<Value> &info) { - - void TreeCursor::GotoFirstChildForIndex(const Nan::FunctionCallbackInfo<Value> &info) { - TreeCursor *cursor = Nan::ObjectWrap::Unwrap<TreeCursor>(info.This()); -- if (!info[0]->IsUint32()) { -+ auto maybe_index = Nan::To<uint32_t>(info[0]); -+ if (maybe_index.IsNothing()) { - Nan::ThrowTypeError("Argument must be an integer"); -+ return; - } -- uint32_t goal_byte = info[0]->Uint32Value() * 2; -+ uint32_t goal_byte = maybe_index.FromJust() * 2; - int64_t child_index = ts_tree_cursor_goto_first_child_for_byte(&cursor->cursor_, goal_byte); - if (child_index < 0) { - info.GetReturnValue().Set(Nan::Null()); -@@ -120,7 +122,7 @@ void TreeCursor::EndPosition(const Nan::FunctionCallbackInfo<Value> &info) { - void TreeCursor::CurrentNode(const Nan::FunctionCallbackInfo<Value> &info) { - TreeCursor *cursor = Nan::ObjectWrap::Unwrap<TreeCursor>(info.This()); - Local<String> key = Nan::New<String>("tree").ToLocalChecked(); -- const Tree *tree = Tree::UnwrapTree(info.This()->Get(key)); -+ const Tree *tree = Tree::UnwrapTree(Nan::Get(info.This(), key).ToLocalChecked()); - TSNode node = ts_tree_cursor_current_node(&cursor->cursor_); - node_methods::MarshalNode(info, tree, node); - } -@@ -128,7 +130,7 @@ void TreeCursor::CurrentNode(const Nan::FunctionCallbackInfo<Value> &info) { - void TreeCursor::Reset(const Nan::FunctionCallbackInfo<Value> &info) { - TreeCursor *cursor = Nan::ObjectWrap::Unwrap<TreeCursor>(info.This()); - Local<String> key = Nan::New<String>("tree").ToLocalChecked(); -- const Tree *tree = Tree::UnwrapTree(info.This()->Get(key)); -+ const Tree *tree = Tree::UnwrapTree(Nan::Get(info.This(), key).ToLocalChecked()); - TSNode node = node_methods::UnmarshalNode(tree); - ts_tree_cursor_reset(&cursor->cursor_, node); - } -diff --git a/test/node_test.js b/test/node_test.js -index 6455a9f..643ab3e 100644 ---- a/test/node_test.js -+++ b/test/node_test.js -@@ -53,7 +53,7 @@ describe("Node", () => { - }); - - describe(".children", () => { -- it("returns an array of child nodes", () => { -+ it.only("returns an array of child nodes", () => { - const tree = parser.parse("x10 + 1000"); - assert.equal(1, tree.rootNode.children.length); - const sumNode = tree.rootNode.firstChild.firstChild; -diff --git a/test/parser_test.js b/test/parser_test.js -index 1645104..a1f6d17 100644 ---- a/test/parser_test.js -+++ b/test/parser_test.js -@@ -100,7 +100,7 @@ describe("Parser", () => { - - it("reads from the given input", () => { - const parts = ["first", "_", "second", "_", "third"]; -- const tree = parser.parse(() => parts.shift()); -+ const tree = parser.parse((index) => parts.shift()); - assert.equal(tree.rootNode.toString(), "(program (expression_statement (identifier)))"); - }); - --- -2.23.0 - Modified: PKGBUILD =================================================================== --- PKGBUILD 2020-04-18 09:09:25 UTC (rev 616035) +++ PKGBUILD 2020-04-18 11:10:00 UTC (rev 616036) @@ -2,7 +2,7 @@ # Maintainer: Maxim Baz <$pkgname at maximbaz dot com> pkgname=bash-language-server -pkgver=1.13.0 +pkgver=1.13.1 pkgrel=1 pkgdesc="Bash language server implementation based on Tree Sitter and its grammar for Bash" arch=("x86_64") @@ -11,12 +11,11 @@ depends=("nodejs" "acorn") makedepends=("yarn" "typescript" "git") source=("https://github.com/mads-hartmann/$pkgname/archive/server-$pkgver.tar.gz") -sha512sums=('051d2c55f7809fbecf2b13121f03a60c0820d4b0ea6a37a3c1901a4e52d2ed2c27ee1adea6f3e86138e2d1ad2670e8075c227fe49ca2ac62f97e58b6fc5bbf2a') +sha512sums=('66530d0484f19162bc03fd7d0e8c1a139a60be6cb603c6931d90d5589a1ccebe17b41ab37caa8000e0573c31041595ac1845e9778034f33005c7a4541dd5ae4d') build() { cd "$srcdir/$pkgname-server-$pkgver" yarn - cd server yarn run compile } Deleted: bash-language-server-nodejs-12-update.patch =================================================================== --- bash-language-server-nodejs-12-update.patch 2020-04-18 09:09:25 UTC (rev 616035) +++ bash-language-server-nodejs-12-update.patch 2020-04-18 11:10:00 UTC (rev 616036) @@ -1,15 +0,0 @@ -diff --git a/server/package.json b/server/package.json -index 88ed86a..cc71988 100644 ---- a/server/package.json -+++ b/server/package.json -@@ -20,8 +20,8 @@ - "glob": "^7.1.2", - "request": "^2.83.0", - "request-promise-native": "^1.0.5", -- "tree-sitter": "^0.13.22", -- "tree-sitter-bash": "^0.13.7", -+ "tree-sitter": "file:../../tree-sitter-0.15.8.tgz", -+ "tree-sitter-bash": "^0.16.0", - "turndown": "^4.0.2", - "urijs": "^1.19.1", - "vscode-languageserver": "^4.1.1"
