class RuboCop::AST::NodePattern::Compiler::AtomSubcompiler
Generates code that evaluates to a value (Ruby object) This value responds to `===`.
Doc on how this fits in the compiling process:
/docs/modules/ROOT/pages/node_pattern.adoc
Private Instance Methods
visit_const()
click to toggle source
# File lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb, line 28 def visit_const node.child end
visit_named_parameter()
click to toggle source
# File lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb, line 32 def visit_named_parameter compiler.named_parameter(node.child) end
visit_other_type()
click to toggle source
Assumes other types are node patterns.
# File lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb, line 46 def visit_other_type compiler.with_temp_variables do |compare| code = compiler.compile_as_node_pattern(node, var: compare) "->(#{compare}) { #{code} }" end end
visit_positional_parameter()
click to toggle source
# File lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb, line 36 def visit_positional_parameter compiler.positional_parameter(node.child) end
visit_set()
click to toggle source
# File lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb, line 40 def visit_set set = node.children.map(&:child).to_set.freeze NodePattern::Sets[set] end
visit_symbol()
click to toggle source
# File lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb, line 21 def visit_symbol node.child.inspect end
visit_unify()
click to toggle source
# File lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb, line 15 def visit_unify compiler.bind(node.child) do raise Invalid, 'unified variables can not appear first as argument' end end