Skip to content

Commit eaae400

Browse files
White-Greenmame
authored andcommitted
Add support for 'it' local variable in AST and parameter handling
1 parent b5392f1 commit eaae400

3 files changed

Lines changed: 20 additions & 0 deletions

File tree

lib/typeprof/core/ast.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ def self.create_node(raw_node, lenv, use_result = true)
9292
# variables
9393
when :local_variable_read_node
9494
LocalVariableReadNode.new(raw_node, lenv)
95+
when :it_local_variable_read_node
96+
ItLocalVariableReadNode.new(raw_node, lenv)
9597
when :local_variable_write_node
9698
LocalVariableWriteNode.new(raw_node, AST.create_node(raw_node.value, lenv), lenv)
9799
when :local_variable_operator_write_node

lib/typeprof/core/ast/call.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ def initialize(raw_node, recv, mid, mid_code_range, raw_args, last_arg, raw_bloc
5555
raw_block.parameters.parameters.requireds.map {|n| n.is_a?(Prism::MultiTargetNode) ? nil : n.name }
5656
when Prism::NumberedParametersNode
5757
1.upto(raw_block.parameters.maximum).map { |n| :"_#{n}" }
58+
when Prism::ItParametersNode
59+
[:it]
5860
when nil
5961
[]
6062
else

lib/typeprof/core/ast/variable.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,22 @@ def retrieve_at(pos)
1919
end
2020
end
2121

22+
class ItLocalVariableReadNode < Node
23+
def initialize(raw_node, lenv)
24+
super(raw_node, lenv)
25+
end
26+
27+
def attrs = {}
28+
29+
def install0(genv)
30+
@lenv.get_var(:it)
31+
end
32+
33+
def retrieve_at(pos)
34+
yield self if code_range.include?(pos)
35+
end
36+
end
37+
2238
class LocalVariableWriteNode < Node
2339
def initialize(raw_node, rhs, lenv)
2440
super(raw_node, lenv)

0 commit comments

Comments
 (0)