Class: Testprune::SemanticMap::Visitor

Inherits:
Prism::Visitor
  • Object
show all
Defined in:
lib/testprune/semantic_map.rb

Overview

Walks the AST, tracking class/module nesting, registering methods and control-flow nodes.

Instance Method Summary collapse

Constructor Details

#initialize(map) ⇒ Visitor

Returns a new instance of Visitor.



112
113
114
115
116
# File 'lib/testprune/semantic_map.rb', line 112

def initialize(map)
  @map = map
  @scope = []
  super()
end

Instance Method Details

#visit_and_node(node) ⇒ Object



166
167
168
169
# File 'lib/testprune/semantic_map.rb', line 166

def visit_and_node(node)
  @map.add_control(node, '&&')
  super
end

#visit_case_match_node(node) ⇒ Object



146
147
148
149
# File 'lib/testprune/semantic_map.rb', line 146

def visit_case_match_node(node)
  @map.add_control(node, 'case')
  super
end

#visit_case_node(node) ⇒ Object



141
142
143
144
# File 'lib/testprune/semantic_map.rb', line 141

def visit_case_node(node)
  @map.add_control(node, 'case')
  super
end

#visit_class_node(node) ⇒ Object



118
119
120
# File 'lib/testprune/semantic_map.rb', line 118

def visit_class_node(node)
  with_scope(node.constant_path.slice) { super }
end

#visit_def_node(node) ⇒ Object



126
127
128
129
# File 'lib/testprune/semantic_map.rb', line 126

def visit_def_node(node)
  @map.add_method(node, @scope, node.receiver ? '.' : '#')
  super
end

#visit_if_node(node) ⇒ Object



131
132
133
134
# File 'lib/testprune/semantic_map.rb', line 131

def visit_if_node(node)
  @map.add_control(node, 'if')
  super
end

#visit_module_node(node) ⇒ Object



122
123
124
# File 'lib/testprune/semantic_map.rb', line 122

def visit_module_node(node)
  with_scope(node.constant_path.slice) { super }
end

#visit_or_node(node) ⇒ Object



171
172
173
174
# File 'lib/testprune/semantic_map.rb', line 171

def visit_or_node(node)
  @map.add_control(node, '||')
  super
end

#visit_rescue_node(node) ⇒ Object



161
162
163
164
# File 'lib/testprune/semantic_map.rb', line 161

def visit_rescue_node(node)
  @map.add_control(node, 'rescue')
  super
end

#visit_unless_node(node) ⇒ Object



136
137
138
139
# File 'lib/testprune/semantic_map.rb', line 136

def visit_unless_node(node)
  @map.add_control(node, 'unless')
  super
end

#visit_until_node(node) ⇒ Object



156
157
158
159
# File 'lib/testprune/semantic_map.rb', line 156

def visit_until_node(node)
  @map.add_control(node, 'until')
  super
end

#visit_while_node(node) ⇒ Object



151
152
153
154
# File 'lib/testprune/semantic_map.rb', line 151

def visit_while_node(node)
  @map.add_control(node, 'while')
  super
end