Class: Opal::Rewriters::ForwardArgs
  
  
  
  
  
    - Inherits:
- 
      Base
      
        
          - Object
- Parser::AST::Processor
- Base
- Opal::Rewriters::ForwardArgs
 show all
    - Defined in:
- opal/lib/opal/rewriters/forward_args.rb
 
  Constant Summary
  
  Constants inherited
     from Base
  Base::DUMMY_LOCATION
  Instance Attribute Summary
  
  Attributes inherited from Base
  #current_node
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  Methods inherited from Base
  #append_to_body, #begin_with_stmts, #dynamic!, #error, #on_top, #prepend_to_body, #process, s, #s, #stmts_of
  
  
    Instance Method Details
    
      
  
  
    #on_args(node)  ⇒ Object 
  
  
  
  
    | 
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | # File 'opal/lib/opal/rewriters/forward_args.rb', line 38
def on_args(node)
  if node.children.last && node.children.last.type == :forward_arg
    prev_children = node.children[0..-2]
    super(node.updated(nil,
      [
        *prev_children,
        s(:restarg, '$fwd_rest'),
        s(:blockarg, '$fwd_block')
      ]
    ))
  else
    super
  end
end | 
 
    
      
  
  
    #on_block_pass(node)  ⇒ Object 
  
  
  
  
    | 
26
27
28
29
30
31
32
33
34
35
36 | # File 'opal/lib/opal/rewriters/forward_args.rb', line 26
def on_block_pass(node)
  if !node.children.first
    process(
      node.updated(nil,
        [s(:lvar, '$fwd_block')]
      )
    )
  else
    super
  end
end | 
 
    
      
  
  
    #on_blockarg(node)  ⇒ Object 
  
  
  
  
    | 
70
71
72
73
74
75
76 | # File 'opal/lib/opal/rewriters/forward_args.rb', line 70
def on_blockarg(node)
  if !node.children.first
    node.updated(nil, ['$fwd_block'])
  else
    super
  end
end | 
 
    
      
  
  
    #on_forward_args(_node)  ⇒ Object 
  
  
  
  
    | 
8
9
10
11
12 | # File 'opal/lib/opal/rewriters/forward_args.rb', line 8
def on_forward_args(_node)
  process(
    s(:args, s(:forward_arg, :"$"))
  )
end | 
 
    
      
  
  
    #on_forwarded_kwrestarg(_node)  ⇒ Object 
  
  
  
  
    | 
20
21
22
23
24 | # File 'opal/lib/opal/rewriters/forward_args.rb', line 20
def on_forwarded_kwrestarg(_node)
  process(
    s(:kwsplat, s(:lvar, '$fwd_kwrest'))
  )
end | 
 
    
      
  
  
    #on_forwarded_restarg(_node)  ⇒ Object 
  
  
  
  
    | 
14
15
16
17
18 | # File 'opal/lib/opal/rewriters/forward_args.rb', line 14
def on_forwarded_restarg(_node)
  process(
    s(:splat, s(:lvar, '$fwd_rest'))
  )
end | 
 
    
      
  
  
    #on_kwrestarg(node)  ⇒ Object 
  
  
  
  
    | 
62
63
64
65
66
67
68 | # File 'opal/lib/opal/rewriters/forward_args.rb', line 62
def on_kwrestarg(node)
  if !node.children.first
    node.updated(nil, ['$fwd_kwrest'])
  else
    super
  end
end | 
 
    
      
  
  
    #on_restarg(node)  ⇒ Object 
  
  
  
  
    | 
54
55
56
57
58
59
60 | # File 'opal/lib/opal/rewriters/forward_args.rb', line 54
def on_restarg(node)
  if !node.children.first
    node.updated(nil, ['$fwd_rest'])
  else
    super
  end
end | 
 
    
      
  
  
    #on_send(node)  ⇒ Object 
  
  
  
  
    | 
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 | # File 'opal/lib/opal/rewriters/forward_args.rb', line 78
def on_send(node)
  if node.children.last &&
     node.children.last.class != Symbol &&
     node.children.last.type == :forwarded_args
    prev_children = node.children[0..-2]
    super(node.updated(nil,
      [
        *prev_children,
        s(:splat,
          s(:lvar, '$fwd_rest')
        ),
        s(:block_pass,
          s(:lvar, '$fwd_block')
        )
      ]
    ))
  else
    super
  end
end |