Skip to content

Commit

Permalink
devel/rubygem-ruby-lsp: Allow build with rubygem-prism 0.17.1+
Browse files Browse the repository at this point in the history
- Bump PORTREVISION for package change

Obtained from:	Shopify/ruby-lsp@8b5a311
  • Loading branch information
sunpoet committed Nov 14, 2023
1 parent d495357 commit 7583834
Show file tree
Hide file tree
Showing 2 changed files with 180 additions and 1 deletion.
3 changes: 2 additions & 1 deletion devel/rubygem-ruby-lsp/Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
PORTNAME= ruby-lsp
PORTVERSION= 0.12.2
PORTREVISION= 1
CATEGORIES= devel rubygems
MASTER_SITES= RG

Expand All @@ -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
Expand Down
178 changes: 178 additions & 0 deletions devel/rubygem-ruby-lsp/files/patch-prism
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 7583834

Please sign in to comment.