Skip to content

Commit 8b5a311

Browse files
authored
Upgrade Prism requirement to v0.17.1 (#1165)
* Upgrade prism requirement to v0.17.1 * Fix breaking changes
1 parent 0f139ee commit 8b5a311

File tree

11 files changed

+7758
-27173
lines changed

11 files changed

+7758
-27173
lines changed

Gemfile.lock

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ PATH
33
specs:
44
ruby-lsp (0.12.2)
55
language_server-protocol (~> 3.17.0)
6-
prism (>= 0.15.1, < 0.16)
6+
prism (>= 0.17.1, < 0.18)
77
sorbet-runtime (>= 0.5.5685)
88

99
GEM
@@ -36,15 +36,15 @@ GEM
3636
ast (~> 2.4.1)
3737
racc
3838
prettier_print (1.2.1)
39-
prism (0.15.1)
39+
prism (0.17.1)
4040
psych (5.1.1.1)
4141
stringio
4242
racc (1.7.1)
4343
rainbow (3.1.1)
4444
rake (13.1.0)
45-
rbi (0.1.1)
45+
rbi (0.1.2)
46+
prism (>= 0.15.1)
4647
sorbet-runtime (>= 0.5.9204)
47-
yarp (>= 0.11.0)
4848
rdoc (6.5.0)
4949
psych (>= 4.0.0)
5050
regexp_parser (2.8.2)
@@ -105,7 +105,6 @@ GEM
105105
yard-sorbet (0.8.1)
106106
sorbet-runtime (>= 0.5)
107107
yard (>= 0.9)
108-
yarp (0.13.0)
109108

110109
PLATFORMS
111110
arm64-darwin

lib/ruby_indexer/lib/ruby_indexer/entry.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,9 @@ def parameter_name(node)
136136
case node
137137
when Prism::RequiredParameterNode
138138
node.name
139-
when Prism::RequiredDestructuredParameterNode
140-
names = node.parameters.map { |parameter_node| parameter_name(parameter_node) }
139+
when Prism::MultiTargetNode
140+
names = [*node.lefts, *node.rest, *node.rights].map { |parameter_node| parameter_name(parameter_node) }
141+
141142
names_with_commas = names.join(", ")
142143
:"(#{names_with_commas})"
143144
end

lib/ruby_indexer/lib/ruby_indexer/visitor.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def visit_multi_write_node(node)
3535
value = node.value
3636
values = value.is_a?(Prism::ArrayNode) && value.opening_loc ? value.elements : []
3737

38-
node.targets.each_with_index do |target, i|
38+
[*node.lefts, *node.rest, *node.rights].each_with_index do |target, i|
3939
current_value = values[i]
4040
# The moment we find a splat on the right hand side of the assignment, we can no longer figure out which value
4141
# gets assigned to what

lib/ruby_lsp/requests/code_action_resolve.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,19 @@ def run
8787
:start,
8888
:line,
8989
) && closest_node_loc.end_line - 1 >= source_range.dig(:end, :line)
90-
indentation_line = closest_node_loc.start_line - 1
91-
target_line = indentation_line
90+
indentation_line_number = closest_node_loc.start_line - 1
91+
target_line = indentation_line_number
9292
else
9393
target_line = closest_node_loc.end_line
94-
indentation_line = closest_node_loc.end_line - 1
94+
indentation_line_number = closest_node_loc.end_line - 1
9595
end
9696

9797
lines = @document.source.lines
98-
indentation = T.must(T.must(lines[indentation_line])[/\A */]).size
98+
99+
indentation_line = lines[indentation_line_number]
100+
return Error::InvalidTargetRange unless indentation_line
101+
102+
indentation = T.must(indentation_line[/\A */]).size
99103

100104
target_range = {
101105
start: { line: target_line, character: indentation },

lib/ruby_lsp/requests/document_highlight.rb

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ class DocumentHighlight < Listener
9797
Prism::LocalVariableWriteNode,
9898
Prism::BlockParameterNode,
9999
Prism::RequiredParameterNode,
100-
Prism::KeywordParameterNode,
100+
Prism::RequiredKeywordParameterNode,
101+
Prism::OptionalKeywordParameterNode,
101102
Prism::RestParameterNode,
102103
Prism::OptionalParameterNode,
103104
Prism::KeywordRestParameterNode,
@@ -137,8 +138,9 @@ def initialize(target, parent, dispatcher, message_queue)
137138
Prism::ClassVariableReadNode, Prism::ClassVariableTargetNode, Prism::ClassVariableWriteNode,
138139
Prism::LocalVariableAndWriteNode, Prism::LocalVariableOperatorWriteNode, Prism::LocalVariableOrWriteNode,
139140
Prism::LocalVariableReadNode, Prism::LocalVariableTargetNode, Prism::LocalVariableWriteNode,
140-
Prism::CallNode, Prism::BlockParameterNode, Prism::KeywordParameterNode, Prism::KeywordRestParameterNode,
141-
Prism::OptionalParameterNode, Prism::RequiredParameterNode, Prism::RestParameterNode
141+
Prism::CallNode, Prism::BlockParameterNode, Prism::RequiredKeywordParameterNode,
142+
Prism::RequiredKeywordParameterNode, Prism::KeywordRestParameterNode, Prism::OptionalParameterNode,
143+
Prism::RequiredParameterNode, Prism::RestParameterNode
142144
target
143145
end
144146

@@ -171,7 +173,8 @@ def initialize(target, parent, dispatcher, message_queue)
171173
:on_constant_path_and_write_node_enter,
172174
:on_constant_path_operator_write_node_enter,
173175
:on_local_variable_write_node_enter,
174-
:on_keyword_parameter_node_enter,
176+
:on_required_keyword_parameter_node_enter,
177+
:on_optional_keyword_parameter_node_enter,
175178
:on_rest_parameter_node_enter,
176179
:on_optional_parameter_node_enter,
177180
:on_keyword_rest_parameter_node_enter,
@@ -359,8 +362,15 @@ def on_local_variable_write_node_enter(node)
359362
add_highlight(Constant::DocumentHighlightKind::WRITE, node.name_loc)
360363
end
361364

362-
sig { params(node: Prism::KeywordParameterNode).void }
363-
def on_keyword_parameter_node_enter(node)
365+
sig { params(node: Prism::RequiredKeywordParameterNode).void }
366+
def on_required_keyword_parameter_node_enter(node)
367+
return unless matches?(node, LOCAL_NODES)
368+
369+
add_highlight(Constant::DocumentHighlightKind::WRITE, node.name_loc)
370+
end
371+
372+
sig { params(node: Prism::OptionalKeywordParameterNode).void }
373+
def on_optional_keyword_parameter_node_enter(node)
364374
return unless matches?(node, LOCAL_NODES)
365375

366376
add_highlight(Constant::DocumentHighlightKind::WRITE, node.name_loc)
@@ -551,8 +561,8 @@ def node_value(node)
551561
Prism::ClassVariableTargetNode, Prism::ClassVariableWriteNode, Prism::LocalVariableAndWriteNode,
552562
Prism::LocalVariableOperatorWriteNode, Prism::LocalVariableOrWriteNode, Prism::LocalVariableReadNode,
553563
Prism::LocalVariableTargetNode, Prism::LocalVariableWriteNode, Prism::DefNode, Prism::BlockParameterNode,
554-
Prism::KeywordParameterNode, Prism::KeywordRestParameterNode, Prism::OptionalParameterNode,
555-
Prism::RequiredParameterNode, Prism::RestParameterNode
564+
Prism::RequiredKeywordParameterNode, Prism::OptionalKeywordParameterNode, Prism::KeywordRestParameterNode,
565+
Prism::OptionalParameterNode, Prism::RequiredParameterNode, Prism::RestParameterNode
556566

557567
node.name.to_s
558568
when Prism::CallNode

lib/ruby_lsp/requests/folding_ranges.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def on_interpolated_string_node_enter(node)
9494
opening_loc = node.opening_loc
9595
closing_loc = node.closing_loc
9696

97-
add_lines_range(opening_loc.start_line, closing_loc.end_line - 1) if opening_loc && closing_loc
97+
add_lines_range(opening_loc.start_line, closing_loc.start_line - 1) if opening_loc && closing_loc
9898
end
9999

100100
sig { params(node: Prism::ArrayNode).void }

lib/ruby_lsp/requests/semantic_highlighting.rb

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@ def initialize(dispatcher, message_queue, range: nil)
135135
:on_local_variable_write_node_enter,
136136
:on_local_variable_read_node_enter,
137137
:on_block_parameter_node_enter,
138-
:on_keyword_parameter_node_enter,
138+
:on_required_keyword_parameter_node_enter,
139+
:on_optional_keyword_parameter_node_enter,
139140
:on_keyword_rest_parameter_node_enter,
140141
:on_optional_parameter_node_enter,
141142
:on_required_parameter_node_enter,
@@ -252,11 +253,18 @@ def on_block_parameter_node_enter(node)
252253
@current_scope << name.to_sym if name
253254
end
254255

255-
sig { params(node: Prism::KeywordParameterNode).void }
256-
def on_keyword_parameter_node_enter(node)
257-
name = node.name
258-
@current_scope << name.to_s.delete_suffix(":").to_sym if name
256+
sig { params(node: Prism::RequiredKeywordParameterNode).void }
257+
def on_required_keyword_parameter_node_enter(node)
258+
@current_scope << node.name
259+
return unless visible?(node, @range)
260+
261+
location = node.name_loc
262+
add_token(location.copy(length: location.length - 1), :parameter)
263+
end
259264

265+
sig { params(node: Prism::OptionalKeywordParameterNode).void }
266+
def on_optional_keyword_parameter_node_enter(node)
267+
@current_scope << node.name
260268
return unless visible?(node, @range)
261269

262270
location = node.name_loc

ruby-lsp.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
1818
s.require_paths = ["lib"]
1919

2020
s.add_dependency("language_server-protocol", "~> 3.17.0")
21-
s.add_dependency("prism", ">= 0.15.1", "< 0.16")
21+
s.add_dependency("prism", ">= 0.17.1", "< 0.18")
2222
s.add_dependency("sorbet-runtime", ">= 0.5.5685")
2323

2424
s.required_ruby_version = ">= 3.0"

0 commit comments

Comments
 (0)