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_number()
Alias for: visit_symbol
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_regexp()
Alias for: visit_symbol
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_string()
Alias for: visit_symbol
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