Class: StrictIvars::Processor
- Inherits:
-
BaseProcessor
- Object
- Prism::Visitor
- BaseProcessor
- StrictIvars::Processor
- Defined in:
- lib/strict_ivars/processor.rb
Constant Summary
Constants inherited from BaseProcessor
Instance Attribute Summary
Attributes inherited from BaseProcessor
Instance Method Summary collapse
-
#visit_block_node(node) ⇒ Object
: (Prism::BlockNode) -> void.
-
#visit_case_node(node) ⇒ Object
: (Prism::CaseNode) -> void.
-
#visit_class_node(node) ⇒ Object
: (Prism::ClassNode) -> void.
-
#visit_def_node(node) ⇒ Object
: (Prism::DefNode) -> void.
-
#visit_defined_node(node) ⇒ Object
: (Prism::DefinedNode) -> void.
-
#visit_if_node(node) ⇒ Object
: (Prism::IfNode) -> void.
-
#visit_instance_variable_read_node(node) ⇒ Object
: (Prism::InstanceVariableReadNode) -> void.
-
#visit_module_node(node) ⇒ Object
: (Prism::ModuleNode) -> void.
-
#visit_singleton_class_node(node) ⇒ Object
: (Prism::SingletonClassNode) -> void.
Methods inherited from BaseProcessor
call, #initialize, #visit_call_node
Constructor Details
This class inherits a constructor from StrictIvars::BaseProcessor
Instance Method Details
#visit_block_node(node) ⇒ Object
: (Prism::BlockNode) -> void
15 16 17 |
# File 'lib/strict_ivars/processor.rb', line 15 def visit_block_node(node) new_context { super } end |
#visit_case_node(node) ⇒ Object
: (Prism::CaseNode) -> void
38 39 40 41 42 43 44 45 46 |
# File 'lib/strict_ivars/processor.rb', line 38 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
: (Prism::ClassNode) -> void
5 6 7 |
# File 'lib/strict_ivars/processor.rb', line 5 def visit_class_node(node) new_context { super } end |
#visit_def_node(node) ⇒ Object
: (Prism::DefNode) -> void
25 26 27 |
# File 'lib/strict_ivars/processor.rb', line 25 def visit_def_node(node) new_context { super } end |
#visit_defined_node(node) ⇒ Object
: (Prism::DefinedNode) -> void
49 50 51 52 53 54 55 |
# File 'lib/strict_ivars/processor.rb', line 49 def visit_defined_node(node) value = node.value return if Prism::InstanceVariableReadNode === value super end |
#visit_if_node(node) ⇒ Object
: (Prism::IfNode) -> void
30 31 32 33 34 35 |
# File 'lib/strict_ivars/processor.rb', line 30 def visit_if_node(node) visit(node.predicate) branch { visit(node.statements) } branch { visit(node.subsequent) } end |
#visit_instance_variable_read_node(node) ⇒ Object
: (Prism::InstanceVariableReadNode) -> void
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/strict_ivars/processor.rb', line 58 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, "(defined?(#{name}) ? "], [location.end_character_offset, " : (::Kernel.raise(::StrictIvars::NameError.new(self, :#{name}))))"] ) end super end |
#visit_module_node(node) ⇒ Object
: (Prism::ModuleNode) -> void
10 11 12 |
# File 'lib/strict_ivars/processor.rb', line 10 def visit_module_node(node) new_context { super } end |
#visit_singleton_class_node(node) ⇒ Object
: (Prism::SingletonClassNode) -> void
20 21 22 |
# File 'lib/strict_ivars/processor.rb', line 20 def visit_singleton_class_node(node) new_context { super } end |