@@ -41,6 +41,7 @@ def initialize(dispatcher, response_builder)
41
41
:on_block_node_leave ,
42
42
:on_self_node_enter ,
43
43
:on_module_node_enter ,
44
+ :on_local_variable_write_node_enter ,
44
45
:on_local_variable_read_node_enter ,
45
46
:on_block_parameter_node_enter ,
46
47
:on_required_keyword_parameter_node_enter ,
@@ -49,6 +50,9 @@ def initialize(dispatcher, response_builder)
49
50
:on_optional_parameter_node_enter ,
50
51
:on_required_parameter_node_enter ,
51
52
:on_rest_parameter_node_enter ,
53
+ :on_local_variable_and_write_node_enter ,
54
+ :on_local_variable_operator_write_node_enter ,
55
+ :on_local_variable_or_write_node_enter ,
52
56
:on_local_variable_target_node_enter ,
53
57
:on_block_local_variable_node_enter ,
54
58
:on_match_write_node_enter ,
@@ -164,6 +168,12 @@ def on_self_node_enter(node)
164
168
@response_builder . add_token ( node . location , :variable , [ :default_library ] )
165
169
end
166
170
171
+ sig { params ( node : Prism ::LocalVariableWriteNode ) . void }
172
+ def on_local_variable_write_node_enter ( node )
173
+ type = @current_scope . type_for ( node . name )
174
+ @response_builder . add_token ( node . name_loc , type ) if type == :parameter
175
+ end
176
+
167
177
sig { params ( node : Prism ::LocalVariableReadNode ) . void }
168
178
def on_local_variable_read_node_enter ( node )
169
179
return if @inside_implicit_node
@@ -177,6 +187,24 @@ def on_local_variable_read_node_enter(node)
177
187
@response_builder . add_token ( node . location , @current_scope . type_for ( node . name ) )
178
188
end
179
189
190
+ sig { params ( node : Prism ::LocalVariableAndWriteNode ) . void }
191
+ def on_local_variable_and_write_node_enter ( node )
192
+ type = @current_scope . type_for ( node . name )
193
+ @response_builder . add_token ( node . name_loc , type ) if type == :parameter
194
+ end
195
+
196
+ sig { params ( node : Prism ::LocalVariableOperatorWriteNode ) . void }
197
+ def on_local_variable_operator_write_node_enter ( node )
198
+ type = @current_scope . type_for ( node . name )
199
+ @response_builder . add_token ( node . name_loc , type ) if type == :parameter
200
+ end
201
+
202
+ sig { params ( node : Prism ::LocalVariableOrWriteNode ) . void }
203
+ def on_local_variable_or_write_node_enter ( node )
204
+ type = @current_scope . type_for ( node . name )
205
+ @response_builder . add_token ( node . name_loc , type ) if type == :parameter
206
+ end
207
+
180
208
sig { params ( node : Prism ::LocalVariableTargetNode ) . void }
181
209
def on_local_variable_target_node_enter ( node )
182
210
# If we're inside a regex capture, Prism will add LocalVariableTarget nodes for each captured variable.
0 commit comments