git: 75838343ae56 - main - devel/rubygem-ruby-lsp: Allow build with rubygem-prism 0.17.1+
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 14 Nov 2023 17:21:47 UTC
The branch main has been updated by sunpoet:
URL: https://cgit.FreeBSD.org/ports/commit/?id=75838343ae565b6a9f75bff108395f90f7503ae6
commit 75838343ae565b6a9f75bff108395f90f7503ae6
Author: Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2023-11-14 16:42:59 +0000
Commit: Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2023-11-14 17:16:24 +0000
devel/rubygem-ruby-lsp: Allow build with rubygem-prism 0.17.1+
- Bump PORTREVISION for package change
Obtained from: https://github.com/Shopify/ruby-lsp/commit/8b5a311a4bdc1a73d96c5416a8a8854d98e2c4f3
---
devel/rubygem-ruby-lsp/Makefile | 3 +-
devel/rubygem-ruby-lsp/files/patch-prism | 178 +++++++++++++++++++++++++++++++
2 files changed, 180 insertions(+), 1 deletion(-)
diff --git a/devel/rubygem-ruby-lsp/Makefile b/devel/rubygem-ruby-lsp/Makefile
index 6e4d34d344fa..01ce5d3b00ca 100644
--- a/devel/rubygem-ruby-lsp/Makefile
+++ b/devel/rubygem-ruby-lsp/Makefile
@@ -1,5 +1,6 @@
PORTNAME= ruby-lsp
PORTVERSION= 0.12.2
+PORTREVISION= 1
CATEGORIES= devel rubygems
MASTER_SITES= RG
@@ -12,7 +13,7 @@ LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE.txt
RUN_DEPENDS= rubygem-language_server-protocol>=3.17.0<3.18:devel/rubygem-language_server-protocol \
- rubygem-prism>=0.15.1<0.16:textproc/rubygem-prism \
+ rubygem-prism>=0.17.1<0.18:textproc/rubygem-prism \
rubygem-sorbet-runtime>=0.5.5685:devel/rubygem-sorbet-runtime
USES= gem
diff --git a/devel/rubygem-ruby-lsp/files/patch-prism b/devel/rubygem-ruby-lsp/files/patch-prism
new file mode 100644
index 000000000000..184eb8bf126c
--- /dev/null
+++ b/devel/rubygem-ruby-lsp/files/patch-prism
@@ -0,0 +1,178 @@
+Obtained from: https://github.com/Shopify/ruby-lsp/commit/8b5a311a4bdc1a73d96c5416a8a8854d98e2c4f3
+
+--- lib/ruby_indexer/lib/ruby_indexer/entry.rb.orig 2023-11-05 06:57:55 UTC
++++ lib/ruby_indexer/lib/ruby_indexer/entry.rb
+@@ -136,8 +136,9 @@ module RubyIndexer
+ case node
+ when Prism::RequiredParameterNode
+ node.name
+- when Prism::RequiredDestructuredParameterNode
+- names = node.parameters.map { |parameter_node| parameter_name(parameter_node) }
++ when Prism::MultiTargetNode
++ names = [*node.lefts, *node.rest, *node.rights].map { |parameter_node| parameter_name(parameter_node) }
++
+ names_with_commas = names.join(", ")
+ :"(#{names_with_commas})"
+ end
+--- lib/ruby_indexer/lib/ruby_indexer/visitor.rb.orig 2023-11-05 06:57:55 UTC
++++ lib/ruby_indexer/lib/ruby_indexer/visitor.rb
+@@ -35,7 +35,7 @@ module RubyIndexer
+ value = node.value
+ values = value.is_a?(Prism::ArrayNode) && value.opening_loc ? value.elements : []
+
+- node.targets.each_with_index do |target, i|
++ [*node.lefts, *node.rest, *node.rights].each_with_index do |target, i|
+ current_value = values[i]
+ # The moment we find a splat on the right hand side of the assignment, we can no longer figure out which value
+ # gets assigned to what
+--- lib/ruby_lsp/requests/code_action_resolve.rb.orig 2023-11-05 06:57:55 UTC
++++ lib/ruby_lsp/requests/code_action_resolve.rb
+@@ -87,15 +87,19 @@ module RubyLsp
+ :start,
+ :line,
+ ) && closest_node_loc.end_line - 1 >= source_range.dig(:end, :line)
+- indentation_line = closest_node_loc.start_line - 1
+- target_line = indentation_line
++ indentation_line_number = closest_node_loc.start_line - 1
++ target_line = indentation_line_number
+ else
+ target_line = closest_node_loc.end_line
+- indentation_line = closest_node_loc.end_line - 1
++ indentation_line_number = closest_node_loc.end_line - 1
+ end
+
+ lines = @document.source.lines
+- indentation = T.must(T.must(lines[indentation_line])[/\A */]).size
++
++ indentation_line = lines[indentation_line_number]
++ return Error::InvalidTargetRange unless indentation_line
++
++ indentation = T.must(indentation_line[/\A */]).size
+
+ target_range = {
+ start: { line: target_line, character: indentation },
+--- lib/ruby_lsp/requests/document_highlight.rb.orig 2023-11-05 06:57:55 UTC
++++ lib/ruby_lsp/requests/document_highlight.rb
+@@ -97,7 +97,8 @@ module RubyLsp
+ Prism::LocalVariableWriteNode,
+ Prism::BlockParameterNode,
+ Prism::RequiredParameterNode,
+- Prism::KeywordParameterNode,
++ Prism::RequiredKeywordParameterNode,
++ Prism::OptionalKeywordParameterNode,
+ Prism::RestParameterNode,
+ Prism::OptionalParameterNode,
+ Prism::KeywordRestParameterNode,
+@@ -137,8 +138,9 @@ module RubyLsp
+ Prism::ClassVariableReadNode, Prism::ClassVariableTargetNode, Prism::ClassVariableWriteNode,
+ Prism::LocalVariableAndWriteNode, Prism::LocalVariableOperatorWriteNode, Prism::LocalVariableOrWriteNode,
+ Prism::LocalVariableReadNode, Prism::LocalVariableTargetNode, Prism::LocalVariableWriteNode,
+- Prism::CallNode, Prism::BlockParameterNode, Prism::KeywordParameterNode, Prism::KeywordRestParameterNode,
+- Prism::OptionalParameterNode, Prism::RequiredParameterNode, Prism::RestParameterNode
++ Prism::CallNode, Prism::BlockParameterNode, Prism::RequiredKeywordParameterNode,
++ Prism::RequiredKeywordParameterNode, Prism::KeywordRestParameterNode, Prism::OptionalParameterNode,
++ Prism::RequiredParameterNode, Prism::RestParameterNode
+ target
+ end
+
+@@ -171,7 +173,8 @@ module RubyLsp
+ :on_constant_path_and_write_node_enter,
+ :on_constant_path_operator_write_node_enter,
+ :on_local_variable_write_node_enter,
+- :on_keyword_parameter_node_enter,
++ :on_required_keyword_parameter_node_enter,
++ :on_optional_keyword_parameter_node_enter,
+ :on_rest_parameter_node_enter,
+ :on_optional_parameter_node_enter,
+ :on_keyword_rest_parameter_node_enter,
+@@ -359,13 +362,20 @@ module RubyLsp
+ add_highlight(Constant::DocumentHighlightKind::WRITE, node.name_loc)
+ end
+
+- sig { params(node: Prism::KeywordParameterNode).void }
+- def on_keyword_parameter_node_enter(node)
++ sig { params(node: Prism::RequiredKeywordParameterNode).void }
++ def on_required_keyword_parameter_node_enter(node)
+ return unless matches?(node, LOCAL_NODES)
+
+ add_highlight(Constant::DocumentHighlightKind::WRITE, node.name_loc)
+ end
+
++ sig { params(node: Prism::OptionalKeywordParameterNode).void }
++ def on_optional_keyword_parameter_node_enter(node)
++ return unless matches?(node, LOCAL_NODES)
++
++ add_highlight(Constant::DocumentHighlightKind::WRITE, node.name_loc)
++ end
++
+ sig { params(node: Prism::RestParameterNode).void }
+ def on_rest_parameter_node_enter(node)
+ return unless matches?(node, LOCAL_NODES)
+@@ -551,8 +561,8 @@ module RubyLsp
+ Prism::ClassVariableTargetNode, Prism::ClassVariableWriteNode, Prism::LocalVariableAndWriteNode,
+ Prism::LocalVariableOperatorWriteNode, Prism::LocalVariableOrWriteNode, Prism::LocalVariableReadNode,
+ Prism::LocalVariableTargetNode, Prism::LocalVariableWriteNode, Prism::DefNode, Prism::BlockParameterNode,
+- Prism::KeywordParameterNode, Prism::KeywordRestParameterNode, Prism::OptionalParameterNode,
+- Prism::RequiredParameterNode, Prism::RestParameterNode
++ Prism::RequiredKeywordParameterNode, Prism::OptionalKeywordParameterNode, Prism::KeywordRestParameterNode,
++ Prism::OptionalParameterNode, Prism::RequiredParameterNode, Prism::RestParameterNode
+
+ node.name.to_s
+ when Prism::CallNode
+--- lib/ruby_lsp/requests/folding_ranges.rb.orig 2023-11-05 06:57:55 UTC
++++ lib/ruby_lsp/requests/folding_ranges.rb
+@@ -94,7 +94,7 @@ module RubyLsp
+ opening_loc = node.opening_loc
+ closing_loc = node.closing_loc
+
+- add_lines_range(opening_loc.start_line, closing_loc.end_line - 1) if opening_loc && closing_loc
++ add_lines_range(opening_loc.start_line, closing_loc.start_line - 1) if opening_loc && closing_loc
+ end
+
+ sig { params(node: Prism::ArrayNode).void }
+--- lib/ruby_lsp/requests/semantic_highlighting.rb.orig 2023-11-05 06:57:55 UTC
++++ lib/ruby_lsp/requests/semantic_highlighting.rb
+@@ -135,7 +135,8 @@ module RubyLsp
+ :on_local_variable_write_node_enter,
+ :on_local_variable_read_node_enter,
+ :on_block_parameter_node_enter,
+- :on_keyword_parameter_node_enter,
++ :on_required_keyword_parameter_node_enter,
++ :on_optional_keyword_parameter_node_enter,
+ :on_keyword_rest_parameter_node_enter,
+ :on_optional_parameter_node_enter,
+ :on_required_parameter_node_enter,
+@@ -252,11 +253,18 @@ module RubyLsp
+ @current_scope << name.to_sym if name
+ end
+
+- sig { params(node: Prism::KeywordParameterNode).void }
+- def on_keyword_parameter_node_enter(node)
+- name = node.name
+- @current_scope << name.to_s.delete_suffix(":").to_sym if name
++ sig { params(node: Prism::RequiredKeywordParameterNode).void }
++ def on_required_keyword_parameter_node_enter(node)
++ @current_scope << node.name
++ return unless visible?(node, @range)
+
++ location = node.name_loc
++ add_token(location.copy(length: location.length - 1), :parameter)
++ end
++
++ sig { params(node: Prism::OptionalKeywordParameterNode).void }
++ def on_optional_keyword_parameter_node_enter(node)
++ @current_scope << node.name
+ return unless visible?(node, @range)
+
+ location = node.name_loc
+--- ruby-lsp.gemspec.orig 2023-11-05 06:57:55 UTC
++++ ruby-lsp.gemspec
+@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
+ s.specification_version = 4
+
+ s.add_runtime_dependency(%q<language_server-protocol>.freeze, ["~> 3.17.0"])
+- s.add_runtime_dependency(%q<prism>.freeze, [">= 0.15.1", "< 0.16"])
++ s.add_runtime_dependency(%q<prism>.freeze, [">= 0.17.1", "< 0.18"])
+ s.add_runtime_dependency(%q<sorbet-runtime>.freeze, [">= 0.5.5685"])
+ end
+