Class: Empirical::IvarProcessor

Inherits:
BaseProcessor show all
Defined in:
lib/empirical/ivar_processor.rb

Constant Summary

Constants inherited from BaseProcessor

BaseProcessor::EVAL_METHODS

Instance Method Summary collapse

Methods inherited from BaseProcessor

#initialize

Constructor Details

This class inherits a constructor from Empirical::BaseProcessor

Instance Method Details

#visit_block_node(node) ⇒ Object



12
13
14
# File 'lib/empirical/ivar_processor.rb', line 12

def visit_block_node(node)
	new_context { super }
end

#visit_case_node(node) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'lib/empirical/ivar_processor.rb', line 31

def visit_case_node(node)
	visit(node.predicate)

	node.conditions.each do |condition|
		branch { visit(condition) }
	end

	branch { visit(node.else_clause) }
end

#visit_class_node(node) ⇒ Object



4
5
6
# File 'lib/empirical/ivar_processor.rb', line 4

def visit_class_node(node)
	new_context { super }
end

#visit_def_node(node) ⇒ Object



20
21
22
# File 'lib/empirical/ivar_processor.rb', line 20

def visit_def_node(node)
	new_context { super }
end

#visit_defined_node(node) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/empirical/ivar_processor.rb', line 41

def visit_defined_node(node)
	value = node.value

	return if Prism::InstanceVariableReadNode === value

	super
end

#visit_if_node(node) ⇒ Object



24
25
26
27
28
29
# File 'lib/empirical/ivar_processor.rb', line 24

def visit_if_node(node)
	visit(node.predicate)

	branch { visit(node.statements) }
	branch { visit(node.subsequent) }
end

#visit_instance_variable_read_node(node) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/empirical/ivar_processor.rb', line 49

def visit_instance_variable_read_node(node)
	name = node.name

	unless @context.include?(name)
		location = node.location

		@context << name

		@annotations.push(
			[location.start_character_offset, 0, "(defined?(#{name}) ? "],
			[location.end_character_offset, 0, " : (::Kernel.raise(::Empirical::NameError.new(self, :#{name}))))"]
		)
	end

	super
end

#visit_module_node(node) ⇒ Object



8
9
10
# File 'lib/empirical/ivar_processor.rb', line 8

def visit_module_node(node)
	new_context { super }
end

#visit_singleton_class_node(node) ⇒ Object



16
17
18
# File 'lib/empirical/ivar_processor.rb', line 16

def visit_singleton_class_node(node)
	new_context { super }
end