class RubyNext::Language::Rewriters::InPattern
Separate pattern matching rewriter for Ruby 2.7 to transpile only `in` patterns
Constants
- MIN_SUPPORTED_VERSION
- NAME
- SYNTAX_PROBE
Public Instance Methods
on_case_match(node)
click to toggle source
Make case-match no-op
# File lib/ruby-next/language/rewriters/in_pattern.rb, line 18 def on_case_match(node) node end
on_match_pattern_p(node)
click to toggle source
# File lib/ruby-next/language/rewriters/in_pattern.rb, line 22 def on_match_pattern_p(node) context.track! self @deconstructed_keys = {} @predicates = Predicates::Noop.new matchee = s(:begin, s(:lvasgn, MATCHEE, node.children[0])) pattern = locals.with( matchee: MATCHEE, arr: MATCHEE_ARR, hash: MATCHEE_HASH ) do send( :"#{node.children[1].type}_clause", node.children[1] ) end node.updated( :and, [ matchee, pattern ] ).tap do |new_node| replace(node.loc.expression, inline_blocks(unparse(new_node))) end end