class RubyNext::Language::Rewriters::ArgsForward
Constants
- BLOCK
- MIN_SUPPORTED_VERSION
- NAME
- REST
- SYNTAX_PROBE
Public Instance Methods
on_forward_arg(node)
click to toggle source
Calls superclass method
# File lib/ruby-next/language/rewriters/args_forward.rb, line 14 def on_forward_arg(node) context.track! self node = super(node) replace(node.loc.expression, "*#{REST}, &#{BLOCK}") node.updated( :args, [ s(:restarg, REST), s(:blockarg, BLOCK) ] ) end
on_send(node)
click to toggle source
Calls superclass method
# File lib/ruby-next/language/rewriters/args_forward.rb, line 30 def on_send(node) fargs = extract_fargs(node) return super(node) unless fargs process_fargs(node, fargs) end
on_super(node)
click to toggle source
Calls superclass method
# File lib/ruby-next/language/rewriters/args_forward.rb, line 37 def on_super(node) fargs = extract_fargs(node) return super(node) unless fargs process_fargs(node, fargs) end
Private Instance Methods
extract_fargs(node)
click to toggle source
# File lib/ruby-next/language/rewriters/args_forward.rb, line 46 def extract_fargs(node) node.children.find { |child| child.is_a?(::Parser::AST::Node) && child.type == :forwarded_args } end
forwarded_args()
click to toggle source
# File lib/ruby-next/language/rewriters/args_forward.rb, line 64 def forwarded_args [ s(:splat, s(:lvar, REST)), s(:block_pass, s(:lvar, BLOCK)) ] end
process_fargs(node, fargs)
click to toggle source
# File lib/ruby-next/language/rewriters/args_forward.rb, line 50 def process_fargs(node, fargs) replace(fargs.loc.expression, "*#{REST}, &#{BLOCK}") process( node.updated( nil, [ *node.children.take(node.children.index(fargs)), *forwarded_args ] ) ) end