rubinius-melbourne 2.1.0.0 → 2.2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -56,8 +56,10 @@ namespace MELBOURNE {
56
56
  extern ID rb_sHash;
57
57
  extern ID rb_sIAsgn;
58
58
  extern ID rb_sIf;
59
+ extern ID rb_sImaginary;
59
60
  extern ID rb_sIter;
60
61
  extern ID rb_sIVar;
62
+ extern ID rb_sKwArg;
61
63
  extern ID rb_sLAsgn;
62
64
  extern ID rb_sLambda;
63
65
  extern ID rb_sLit;
@@ -82,6 +84,7 @@ namespace MELBOURNE {
82
84
  extern ID rb_sPostExe;
83
85
  extern ID rb_sPostArg;
84
86
  extern ID rb_sPreExe;
87
+ extern ID rb_sRational;
85
88
  extern ID rb_sRedo;
86
89
  extern ID rb_sRegex;
87
90
  extern ID rb_sResbody;
@@ -577,13 +577,14 @@ namespace MELBOURNE {
577
577
 
578
578
  node = node->nd_head;
579
579
  while (node) {
580
- rb_ary_push(array, process_parse_tree(parser_state, ptp, node->nd_head, locals));
581
- if (!(node = node->nd_next)) {
582
- // @todo: properly process the parse error
583
- printf("odd number list for Hash");
584
- abort();
580
+ if(node->nd_head) {
581
+ rb_ary_push(array, process_parse_tree(parser_state, ptp, node->nd_head, locals));
582
+ if (!(node = node->nd_next)) break;
583
+ rb_ary_push(array, process_parse_tree(parser_state, ptp, node->nd_head, locals));
584
+ } else {
585
+ // Marker for Hash splat.
586
+ rb_ary_push(array, Qnil);
585
587
  }
586
- rb_ary_push(array, process_parse_tree(parser_state, ptp, node->nd_head, locals));
587
588
  node = node->nd_next;
588
589
  }
589
590
  tree = rb_funcall(ptp, rb_sHash, 2, line, array);
@@ -693,61 +694,55 @@ namespace MELBOURNE {
693
694
  tree = rb_funcall(ptp, rb_sOptArg, 2, line, args);
694
695
  break;
695
696
  }
697
+ case NODE_KW_ARG: {
698
+ VALUE args = rb_ary_new();
699
+
700
+ do {
701
+ rb_ary_push(args, process_parse_tree(parser_state, ptp, node->nd_body, locals));
702
+ node = node->nd_next;
703
+ } while(node);
704
+
705
+ tree = rb_funcall(ptp, rb_sKwArg, 2, line, args);
706
+ break;
707
+ }
696
708
  case NODE_ARGS: {
697
709
  VALUE args = Qnil;
698
710
  VALUE opts = Qnil;
699
711
  VALUE splat = Qnil;
700
712
  VALUE post = Qnil;
713
+ VALUE kwargs = Qnil;
714
+ VALUE kwrest = Qnil;
701
715
  VALUE block = Qnil;
702
716
 
703
717
  int total_args = 0;
704
718
  ID* args_ary = 0;
705
719
 
706
- NODE* aux = node->nd_args;
707
- NODE* post_args = aux->nd_next;
720
+ struct rb_args_info *ainfo = node->nd_ainfo;
708
721
  NODE* masgn = 0;
709
722
  NODE* next = 0;
710
723
 
711
- if(post_args && post_args->nd_next && nd_type(post_args->nd_next) == NODE_AND) {
712
- if(post_args->nd_next->nd_head) {
713
- if (nd_type(post_args->nd_next->nd_head) == NODE_BLOCK) {
714
- masgn = post_args->nd_next->nd_head->nd_head;
715
- next = post_args->nd_next->nd_head->nd_next;
716
- } else {
717
- masgn = post_args->nd_next->nd_head;
718
- next = masgn->nd_next;
719
- // -1 comes from: mlhs_head tSTAR
720
- if(masgn->nd_cnt == -1) next = 0;
721
- }
722
- } else {
723
- masgn = post_args->nd_next->nd_2nd;
724
- if(masgn) {
725
- next = masgn->nd_next;
726
- if (nd_type(masgn) == NODE_BLOCK) {
727
- masgn = masgn->nd_head;
728
- }
729
- }
730
- }
731
- }
732
-
733
- if(node->nd_argc > 0) {
724
+ if(ainfo->pre_args_num > 0) {
734
725
  total_args = (int)locals[0];
735
726
  args_ary = locals + 1;
736
727
 
728
+ masgn = ainfo->pre_init;
729
+ if(masgn && nd_type(masgn) == NODE_BLOCK) {
730
+ next = masgn->nd_next;
731
+ masgn = masgn->nd_head;
732
+ }
733
+
737
734
  args = rb_ary_new();
738
- for(int i = 0; i < node->nd_argc && i < total_args; i++) {
735
+ for(int i = 0; i < ainfo->pre_args_num && i < total_args; i++) {
739
736
  VALUE arg = Qnil;
740
737
 
741
738
  if(!INTERNAL_ID_P(args_ary[i])) {
742
739
  arg = ID2SYM(args_ary[i]);
743
740
  } else if(masgn) {
744
741
  arg = process_parse_tree(parser_state, ptp, masgn, locals);
745
- if(next && nd_type(next) == NODE_BLOCK) {
742
+
743
+ if(next) {
746
744
  masgn = next->nd_head;
747
745
  next = next->nd_next;
748
- } else {
749
- masgn = next;
750
- if(masgn) next = masgn->nd_next;
751
746
  }
752
747
  }
753
748
 
@@ -755,53 +750,73 @@ namespace MELBOURNE {
755
750
  }
756
751
  }
757
752
 
758
- if(node->nd_opt) {
759
- opts = process_parse_tree(parser_state, ptp, node->nd_opt, locals);
753
+ if(ainfo->opt_args) {
754
+ opts = process_parse_tree(parser_state, ptp, ainfo->opt_args, locals);
755
+ }
756
+
757
+ if(ainfo->kw_args) {
758
+ kwargs = process_parse_tree(parser_state, ptp, ainfo->kw_args, locals);
760
759
  }
761
760
 
762
- if(INTERNAL_ID_P(aux->nd_rest)) {
763
- splat = Qtrue;
764
- } else if(aux->nd_rest) {
765
- if(aux->nd_rest == 1) {
761
+ if(ainfo->rest_arg) {
762
+ if(INTERNAL_ID_P(ainfo->rest_arg)) {
763
+ splat = Qtrue;
764
+ } else if(ainfo->rest_arg == 1) {
766
765
  // m { |a,| ... }
767
766
  splat = Qfalse;
768
767
  } else {
769
- splat = ID2SYM(aux->nd_rest);
768
+ splat = ID2SYM(ainfo->rest_arg);
769
+ }
770
+ }
771
+
772
+ if(ainfo->kw_rest_arg) {
773
+ if(INTERNAL_ID_P(ainfo->kw_rest_arg->nd_vid)) {
774
+ kwrest = Qtrue;
775
+ } else {
776
+ kwrest = ID2SYM(ainfo->kw_rest_arg->nd_vid);
770
777
  }
771
778
  }
772
- if(aux->nd_mid) block = ID2SYM(aux->nd_mid);
773
779
 
774
- if(post_args && post_args->nd_pid) {
780
+ if(ainfo->block_arg) block = ID2SYM(ainfo->block_arg);
781
+
782
+ if(ainfo->post_args_num > 0) {
775
783
  total_args = (int)locals[0];
776
784
  args_ary = locals + 1;
777
785
 
786
+ masgn = ainfo->post_init;
787
+ if(masgn && nd_type(masgn) == NODE_BLOCK) {
788
+ next = masgn->nd_next;
789
+ masgn = masgn->nd_head;
790
+ } else {
791
+ next = 0;
792
+ }
793
+
778
794
  int start;
779
795
  for(start = 0; start < total_args; start++) {
780
- if(args_ary[start] == post_args->nd_pid)
796
+ if(args_ary[start] == ainfo->first_post_arg)
781
797
  break;
782
798
  }
783
799
 
784
800
  post = rb_ary_new();
785
- for(int i = 0; i < post_args->nd_argc && start + i < total_args; i++) {
801
+ for(int i = 0; i < ainfo->post_args_num && start + i < total_args; i++) {
786
802
  VALUE arg = Qnil;
787
803
 
788
804
  if(!INTERNAL_ID_P(args_ary[start + i])) {
789
805
  arg = ID2SYM(args_ary[start + i]);
790
806
  } else if(masgn) {
791
807
  arg = process_parse_tree(parser_state, ptp, masgn, locals);
792
- if(next && nd_type(next) == NODE_BLOCK) {
808
+
809
+ if(next) {
793
810
  masgn = next->nd_head;
794
811
  next = next->nd_next;
795
- } else {
796
- masgn = next;
797
- if(masgn) next = masgn->nd_next;
798
812
  }
799
813
  }
800
814
  rb_ary_push(post, arg);
801
815
  }
802
816
  }
803
817
 
804
- tree = rb_funcall(ptp, rb_sArgs, 6, line, args, opts, splat, post, block);
818
+ tree = rb_funcall(ptp, rb_sArgs, 8, line, args, opts, splat,
819
+ post, kwargs, kwrest, block);
805
820
  break;
806
821
  }
807
822
  case NODE_LVAR:
@@ -863,6 +878,14 @@ namespace MELBOURNE {
863
878
  tree = rb_funcall(ptp, rb_sFloat, 2, line, node->nd_lit);
864
879
  break;
865
880
 
881
+ case NODE_IMAGINARY:
882
+ tree = rb_funcall(ptp, rb_sImaginary, 2, line, node->nd_lit);
883
+ break;
884
+
885
+ case NODE_RATIONAL:
886
+ tree = rb_funcall(ptp, rb_sRational, 2, line, node->nd_lit);
887
+ break;
888
+
866
889
  case NODE_NTH_REF: /* u2 u3 ($1) - u3 is local_cnt('~') ignorable? */
867
890
  tree = rb_funcall(ptp, rb_sNthRef, 2, line, INT2FIX(node->nd_nth));
868
891
  break;
@@ -1,5 +1,5 @@
1
- module Rubinius::ToolSets.current::ToolSet
1
+ module CodeTools
2
2
  class Melbourne
3
- VERSION = "2.1.0.0"
3
+ VERSION = "2.2.0.0"
4
4
  end
5
5
  end
@@ -1,7 +1,7 @@
1
- require "rubinius/melbourne/melbourne"
2
1
  require "rubinius/melbourne/version"
2
+ require "rubinius/melbourne/melbourne"
3
3
 
4
- module Rubinius::ToolSets.current::ToolSet
4
+ module CodeTools
5
5
  class Melbourne
6
6
  attr_accessor :transforms
7
7
  attr_accessor :magic_handler
@@ -1,5 +1,4 @@
1
1
  # -*- encoding: utf-8 -*-
2
- require 'rubinius/toolset'
3
2
  require './lib/rubinius/melbourne/version'
4
3
 
5
4
  Gem::Specification.new do |spec|
@@ -16,9 +15,7 @@ Gem::Specification.new do |spec|
16
15
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
16
  spec.name = "rubinius-melbourne"
18
17
  spec.require_paths = ["lib"]
19
- spec.version = Rubinius::ToolSets.current::ToolSet::Melbourne::VERSION
20
-
21
- spec.add_runtime_dependency "rubinius-toolset", "~> 2.2"
18
+ spec.version = CodeTools::Melbourne::VERSION
22
19
 
23
20
  spec.add_development_dependency "rubinius-processor", "~> 2.0"
24
21
  spec.add_development_dependency "rubinius-compiler", "~> 2.0"
data/spec/array_spec.rb CHANGED
@@ -23,6 +23,26 @@ describe "An Array node" do
23
23
  [:str, "c"]]
24
24
  end
25
25
 
26
+ parse "%i[a b c]" do
27
+ [:array, [:lit, :a], [:lit, :b], [:lit, :c]]
28
+ end
29
+
30
+ parse '%i[a #{@b} c]' do
31
+ [:array, [:lit, :a], [:lit, :"\#{@b}"], [:lit, :c]]
32
+ end
33
+
34
+ parse "%I[a b c]" do
35
+ [:array,
36
+ [:dsym, "a"], [:dsym, "b"], [:dsym, "c"]]
37
+ end
38
+
39
+ parse '%I[a #{@b} c]' do
40
+ [:array,
41
+ [:dsym, "a"],
42
+ [:dsym, "", [:evstr, [:ivar, :@b]]],
43
+ [:dsym, "c"]]
44
+ end
45
+
26
46
  parse "[*[1]]" do
27
47
  [:splat, [:array, [:lit, 1]]]
28
48
  end
@@ -10,7 +10,8 @@ class ParseAsMatcher
10
10
  end
11
11
 
12
12
  def matches?(actual)
13
- @actual = actual.to_sexp.to_a
13
+ parse = CodeTools::Melbourne.parse_string actual
14
+ @actual = parse.to_sexp.to_a
14
15
  @actual == @expected
15
16
  end
16
17
 
data/spec/defn_spec.rb CHANGED
@@ -1,8 +1,6 @@
1
1
  describe "A Defn node" do
2
2
  parse <<-ruby do
3
3
  def m
4
- begin
5
- end
6
4
  end
7
5
  ruby
8
6
 
@@ -10,483 +8,776 @@ describe "A Defn node" do
10
8
  end
11
9
 
12
10
  parse <<-ruby do
13
- def m
14
- return :a
15
- ensure
16
- return :b
17
- end
11
+ def m() end
12
+ ruby
13
+
14
+ [:defn, :m, [:args], [:scope, [:block, [:nil]]]]
15
+ end
16
+
17
+ parse <<-ruby do
18
+ def m(a) end
19
+ ruby
20
+
21
+ [:defn, :m, [:args, :a], [:scope, [:block, [:nil]]]]
22
+ end
23
+
24
+ parse <<-ruby do
25
+ def m((a)) end
18
26
  ruby
19
27
 
20
28
  [:defn,
21
29
  :m,
22
- [:args],
23
- [:scope, [:block, [:ensure, [:return, [:lit, :a]], [:return, [:lit, :b]]]]]]
30
+ [:args, [:masgn, [:array, [:lasgn, :a]], [:lvar, :"_:1"]]],
31
+ [:scope, [:block, [:nil]]]]
24
32
  end
25
33
 
26
34
  parse <<-ruby do
27
- def blah(*args, &block)
28
- other(42, *args, &block)
29
- end
35
+ def m((*a, b)) end
30
36
  ruby
31
37
 
32
38
  [:defn,
33
- :blah,
34
- [:args, :"*args", :"&block"],
35
- [:scope,
36
- [:block,
37
- [:call,
38
- nil,
39
- :other,
40
- [:arglist,
41
- [:lit, 42],
42
- [:splat, [:lvar, :args]],
43
- [:block_pass, [:lvar, :block]]]]]]]
39
+ :m,
40
+ [:args,
41
+ [:masgn, [:array, [:splat, [:lasgn, :a]]], [:lasgn, :b], [:lvar, :"_:1"]]],
42
+ [:scope, [:block, [:nil]]]]
44
43
  end
45
44
 
46
45
  parse <<-ruby do
47
- def blah(*args, &block)
48
- other(*args, &block)
49
- end
46
+ def m(a=1) end
50
47
  ruby
51
48
 
52
49
  [:defn,
53
- :blah,
54
- [:args, :"*args", :"&block"],
55
- [:scope,
56
- [:block,
57
- [:call,
58
- nil,
59
- :other,
60
- [:arglist,
61
- [:splat, [:lvar, :args]],
62
- [:block_pass, [:lvar, :block]]]]]]]
50
+ :m,
51
+ [:args, :a, [:block, [:lasgn, :a, [:lit, 1]]]],
52
+ [:scope, [:block, [:nil]]]]
63
53
  end
64
54
 
65
55
  parse <<-ruby do
66
- def f
67
- begin
68
- b
69
- rescue
70
- c
71
- end
56
+ def m(*) end
57
+ ruby
72
58
 
73
- d
74
- end
59
+ [:defn, :m, [:args, :*], [:scope, [:block, [:nil]]]]
60
+ end
61
+
62
+ parse <<-ruby do
63
+ def m(*a) end
64
+ ruby
65
+
66
+ [:defn, :m, [:args, :"*a"], [:scope, [:block, [:nil]]]]
67
+ end
68
+
69
+ parse <<-ruby do
70
+ def m(a:) end
71
+ ruby
72
+
73
+ [:defn, :m, [:args, :a, [:block, [:a]]], [:scope, [:block, [:nil]]]]
74
+ end
75
+
76
+ parse <<-ruby do
77
+ def m(a: 1) end
75
78
  ruby
76
79
 
77
80
  [:defn,
78
- :f,
79
- [:args],
80
- [:scope,
81
- [:block,
82
- [:rescue,
83
- [:call, nil, :b, [:arglist]],
84
- [:resbody,
85
- [:array, [:const, :StandardError]],
86
- [:call, nil, :c, [:arglist]]]],
87
- [:call, nil, :d, [:arglist]]]]]
88
- end
89
-
90
- parse <<-ruby do
91
- def f
92
- a
93
- begin
94
- b
95
- rescue
96
- c
97
- end
98
- end
81
+ :m,
82
+ [:args, :a, [:block, [:a], [[:lasgn, :a, [:lit, 1]]]]],
83
+ [:scope, [:block, [:nil]]]]
84
+ end
85
+
86
+ parse <<-ruby do
87
+ def m(**) end
88
+ ruby
89
+
90
+ [:defn, :m, [:args, :**, [:block, [:**]]], [:scope, [:block, [:nil]]]]
91
+ end
92
+
93
+ parse <<-ruby do
94
+ def m(**k) end
95
+ ruby
96
+
97
+ [:defn, :m, [:args, :"**k", [:block, [:"**k"]]], [:scope, [:block, [:nil]]]]
98
+ end
99
+
100
+ parse <<-ruby do
101
+ def m(&b) end
102
+ ruby
103
+
104
+ [:defn, :m, [:args, :"&b"], [:scope, [:block, [:nil]]]]
105
+ end
106
+
107
+ parse <<-ruby do
108
+ def m(a, b) end
109
+ ruby
110
+
111
+ [:defn, :m, [:args, :a, :b], [:scope, [:block, [:nil]]]]
112
+ end
113
+
114
+ parse <<-ruby do
115
+ def m(a, (b, c)) end
99
116
  ruby
100
117
 
101
118
  [:defn,
102
- :f,
103
- [:args],
104
- [:scope,
105
- [:block,
106
- [:call, nil, :a, [:arglist]],
107
- [:rescue,
108
- [:call, nil, :b, [:arglist]],
109
- [:resbody,
110
- [:array, [:const, :StandardError]],
111
- [:call, nil, :c, [:arglist]]]]]]]
112
- end
113
-
114
- parse <<-ruby do
115
- def f
116
- a
117
- begin
118
- b
119
- rescue
120
- c
121
- end
122
- d
123
- end
119
+ :m,
120
+ [:args, :a, [:masgn, [:array, [:lasgn, :b], [:lasgn, :c]], [:lvar, :"_:1"]]],
121
+ [:scope, [:block, [:nil]]]]
122
+ end
123
+
124
+ parse <<-ruby do
125
+ def m((a), (b)) end
124
126
  ruby
125
127
 
126
128
  [:defn,
127
- :f,
128
- [:args],
129
- [:scope,
130
- [:block,
131
- [:call, nil, :a, [:arglist]],
132
- [:rescue,
133
- [:call, nil, :b, [:arglist]],
134
- [:resbody,
135
- [:array, [:const, :StandardError]],
136
- [:call, nil, :c, [:arglist]]]],
137
- [:call, nil, :d, [:arglist]]]]]
129
+ :m,
130
+ [:args,
131
+ [:masgn, [:array, [:lasgn, :a]], [:lvar, :"_:1"]],
132
+ [:masgn, [:array, [:lasgn, :b]], [:lvar, :"_:2"]]],
133
+ [:scope, [:block, [:nil]]]]
138
134
  end
139
135
 
140
136
  parse <<-ruby do
141
- def f(&block)
142
- end
137
+ def m((*), (*)) end
143
138
  ruby
144
139
 
145
- [:defn, :f, [:args, :"&block"], [:scope, [:block, [:nil]]]]
140
+ [:defn,
141
+ :m,
142
+ [:args,
143
+ [:masgn, [:array, [:splat]], [:lvar, :"_:1"]],
144
+ [:masgn, [:array, [:splat]], [:lvar, :"_:2"]]],
145
+ [:scope, [:block, [:nil]]]]
146
146
  end
147
147
 
148
148
  parse <<-ruby do
149
- def f(mand, opt = 42, &block)
150
- end
149
+ def m((*a), (*c)) end
151
150
  ruby
152
151
 
153
152
  [:defn,
154
- :f,
155
- [:args, :mand, :opt, :"&block", [:block, [:lasgn, :opt, [:lit, 42]]]],
153
+ :m,
154
+ [:args,
155
+ [:masgn, [:array, [:splat, [:lasgn, :a]]], [:lvar, :"_:1"]],
156
+ [:masgn, [:array, [:splat, [:lasgn, :c]]], [:lvar, :"_:2"]]],
156
157
  [:scope, [:block, [:nil]]]]
157
158
  end
158
159
 
159
160
  parse <<-ruby do
160
- def f(x, a=x.b)
161
- end
161
+ def m((a, b), (c, d)) end
162
162
  ruby
163
163
 
164
164
  [:defn,
165
- :f,
166
- [:args, :x, :a, [:block, [:lasgn, :a, [:call, [:lvar, :x], :b, [:arglist]]]]],
165
+ :m,
166
+ [:args,
167
+ [:masgn, [:array, [:lasgn, :a], [:lasgn, :b]], [:lvar, :"_:1"]],
168
+ [:masgn, [:array, [:lasgn, :c], [:lasgn, :d]], [:lvar, :"_:2"]]],
167
169
  [:scope, [:block, [:nil]]]]
168
170
  end
169
171
 
170
172
  parse <<-ruby do
171
- def f(mand, &block)
172
- end
173
+ def m((a, *b), (*c, d)) end
173
174
  ruby
174
175
 
175
- [:defn, :f, [:args, :mand, :"&block"], [:scope, [:block, [:nil]]]]
176
+ [:defn,
177
+ :m,
178
+ [:args,
179
+ [:masgn, [:array, [:lasgn, :a], [:splat, [:lasgn, :b]]], [:lvar, :"_:1"]],
180
+ [:masgn, [:array, [:splat, [:lasgn, :c]]], [:lasgn, :d], [:lvar, :"_:2"]]],
181
+ [:scope, [:block, [:nil]]]]
176
182
  end
177
183
 
178
184
  parse <<-ruby do
179
- def f(mand, opt = 42)
180
- end
185
+ def m((a, b, *c, d), (*e, f, g), (*h)) end
181
186
  ruby
182
187
 
183
188
  [:defn,
184
- :f,
185
- [:args, :mand, :opt, [:block, [:lasgn, :opt, [:lit, 42]]]],
189
+ :m,
190
+ [:args,
191
+ [:masgn,
192
+ [:array, [:lasgn, :a], [:lasgn, :b], [:splat, [:lasgn, :c]]],
193
+ [:lasgn, :d],
194
+ [:lvar, :"_:1"]],
195
+ [:masgn,
196
+ [:array, [:splat, [:lasgn, :e]]],
197
+ [:lasgn, :f],
198
+ [:lasgn, :g],
199
+ [:lvar, :"_:2"]],
200
+ [:masgn, [:array, [:splat, [:lasgn, :h]]], [:lvar, :"_:3"]]],
186
201
  [:scope, [:block, [:nil]]]]
187
202
  end
188
203
 
189
204
  parse <<-ruby do
190
- def f(mand, opt = 42, *rest, &block)
191
- end
205
+ def m(a, (b, (c, *d), *e)) end
192
206
  ruby
193
207
 
194
208
  [:defn,
195
- :f,
209
+ :m,
196
210
  [:args,
197
- :mand,
198
- :opt,
199
- :"*rest",
200
- :"&block",
201
- [:block, [:lasgn, :opt, [:lit, 42]]]],
211
+ :a,
212
+ [:masgn,
213
+ [:array,
214
+ [:lasgn, :b],
215
+ [:masgn, [:array, [:lasgn, :c], [:splat, [:lasgn, :d]]]],
216
+ [:splat, [:lasgn, :e]]],
217
+ [:lvar, :"_:1"]]],
202
218
  [:scope, [:block, [:nil]]]]
203
219
  end
204
220
 
205
221
  parse <<-ruby do
206
- def x(a, b = 42, *)
207
- end
222
+ def m(a, (b, (c, *d, (e, (*f)), g), (h, (i, j)))) end
208
223
  ruby
209
224
 
210
225
  [:defn,
211
- :x,
212
- [:args, :a, :b, :*, [:block, [:lasgn, :b, [:lit, 42]]]],
226
+ :m,
227
+ [:args,
228
+ :a,
229
+ [:masgn,
230
+ [:array,
231
+ [:lasgn, :b],
232
+ [:masgn,
233
+ [:array, [:lasgn, :c], [:splat, [:lasgn, :d]]],
234
+ [:masgn,
235
+ [:array, [:lasgn, :e], [:masgn, [:array, [:splat, [:lasgn, :f]]]]]],
236
+ [:lasgn, :g]],
237
+ [:masgn,
238
+ [:array, [:lasgn, :h], [:masgn, [:array, [:lasgn, :i], [:lasgn, :j]]]]]],
239
+ [:lvar, :"_:1"]]],
213
240
  [:scope, [:block, [:nil]]]]
214
241
  end
215
242
 
216
243
  parse <<-ruby do
217
- def f(mand, opt = 42, *rest)
218
- end
244
+ def m(a, b=1) end
219
245
  ruby
220
246
 
221
247
  [:defn,
222
- :f,
223
- [:args, :mand, :opt, :"*rest", [:block, [:lasgn, :opt, [:lit, 42]]]],
248
+ :m,
249
+ [:args, :a, :b, [:block, [:lasgn, :b, [:lit, 1]]]],
224
250
  [:scope, [:block, [:nil]]]]
225
251
  end
226
252
 
227
253
  parse <<-ruby do
228
- def empty
229
- end
254
+ def m(a, *) end
230
255
  ruby
231
256
 
232
- [:defn, :empty, [:args], [:scope, [:block, [:nil]]]]
257
+ [:defn, :m, [:args, :a, :*], [:scope, [:block, [:nil]]]]
233
258
  end
234
259
 
235
260
  parse <<-ruby do
236
- def f(mand)
237
- end
261
+ def m(a, *b) end
238
262
  ruby
239
263
 
240
- [:defn, :f, [:args, :mand], [:scope, [:block, [:nil]]]]
264
+ [:defn, :m, [:args, :a, :"*b"], [:scope, [:block, [:nil]]]]
241
265
  end
242
266
 
243
267
  parse <<-ruby do
244
- def f(mand, *rest, &block)
245
- end
268
+ def m(a, b:) end
246
269
  ruby
247
270
 
248
- [:defn, :f, [:args, :mand, :"*rest", :"&block"], [:scope, [:block, [:nil]]]]
271
+ [:defn, :m, [:args, :a, :b, [:block, [:b]]], [:scope, [:block, [:nil]]]]
249
272
  end
250
273
 
251
274
  parse <<-ruby do
252
- def x(a, *args)
253
- p(a, args)
254
- end
275
+ def m(a, b: 1) end
255
276
  ruby
256
277
 
257
278
  [:defn,
258
- :x,
259
- [:args, :a, :"*args"],
260
- [:scope, [:block, [:call, nil, :p, [:arglist, [:lvar, :a], [:lvar, :args]]]]]]
279
+ :m,
280
+ [:args, :a, :b, [:block, [:b], [[:lasgn, :b, [:lit, 1]]]]],
281
+ [:scope, [:block, [:nil]]]]
261
282
  end
262
283
 
263
284
  parse <<-ruby do
264
- def f(mand, *rest)
265
- end
285
+ def m(a, **) end
266
286
  ruby
267
287
 
268
- [:defn, :f, [:args, :mand, :"*rest"], [:scope, [:block, [:nil]]]]
288
+ [:defn, :m, [:args, :a, :**, [:block, [:**]]], [:scope, [:block, [:nil]]]]
269
289
  end
270
290
 
271
291
  parse <<-ruby do
272
- def f(opt = 42, &block)
273
- end
292
+ def m(a, **k) end
274
293
  ruby
275
294
 
276
295
  [:defn,
277
- :f,
278
- [:args, :opt, :"&block", [:block, [:lasgn, :opt, [:lit, 42]]]],
296
+ :m,
297
+ [:args, :a, :"**k", [:block, [:"**k"]]],
279
298
  [:scope, [:block, [:nil]]]]
280
299
  end
281
300
 
282
301
  parse <<-ruby do
283
- def f(a = 42, b = '1', c=lambda {|n| n })
284
- end
302
+ def m(a, &b) end
303
+ ruby
304
+
305
+ [:defn, :m, [:args, :a, :"&b"], [:scope, [:block, [:nil]]]]
306
+ end
307
+
308
+ parse <<-ruby do
309
+ def m(a=1, b) end
310
+ ruby
311
+
312
+ [:defn,
313
+ :m,
314
+ [:args, :a, :b, [:block, [:lasgn, :a, [:lit, 1]]]],
315
+ [:scope, [:block, [:nil]]]]
316
+ end
317
+
318
+ parse <<-ruby do
319
+ def m(a=1, *) end
320
+ ruby
321
+
322
+ [:defn,
323
+ :m,
324
+ [:args, :a, :*, [:block, [:lasgn, :a, [:lit, 1]]]],
325
+ [:scope, [:block, [:nil]]]]
326
+ end
327
+
328
+ parse <<-ruby do
329
+ def m(a=1, *b) end
330
+ ruby
331
+
332
+ [:defn,
333
+ :m,
334
+ [:args, :a, :"*b", [:block, [:lasgn, :a, [:lit, 1]]]],
335
+ [:scope, [:block, [:nil]]]]
336
+ end
337
+
338
+ parse <<-ruby do
339
+ def m(a=1, (b, c)) end
340
+ ruby
341
+
342
+ [:defn,
343
+ :m,
344
+ [:args,
345
+ :a,
346
+ [:masgn, [:array, [:lasgn, :b], [:lasgn, :c]], [:lvar, :"_:1"]],
347
+ [:block, [:lasgn, :a, [:lit, 1]]]],
348
+ [:scope, [:block, [:nil]]]]
349
+ end
350
+
351
+ parse <<-ruby do
352
+ def m(a=1, (b, (c, *d))) end
353
+ ruby
354
+
355
+ [:defn,
356
+ :m,
357
+ [:args,
358
+ :a,
359
+ [:masgn,
360
+ [:array,
361
+ [:lasgn, :b],
362
+ [:masgn, [:array, [:lasgn, :c], [:splat, [:lasgn, :d]]]]],
363
+ [:lvar, :"_:1"]],
364
+ [:block, [:lasgn, :a, [:lit, 1]]]],
365
+ [:scope, [:block, [:nil]]]]
366
+ end
367
+
368
+ parse <<-ruby do
369
+ def m(a=1, (b, (c, *d), *e)) end
370
+ ruby
371
+
372
+ [:defn,
373
+ :m,
374
+ [:args,
375
+ :a,
376
+ [:masgn,
377
+ [:array,
378
+ [:lasgn, :b],
379
+ [:masgn, [:array, [:lasgn, :c], [:splat, [:lasgn, :d]]]],
380
+ [:splat, [:lasgn, :e]]],
381
+ [:lvar, :"_:1"]],
382
+ [:block, [:lasgn, :a, [:lit, 1]]]],
383
+ [:scope, [:block, [:nil]]]]
384
+ end
385
+
386
+ parse <<-ruby do
387
+ def m(a=1, (b), (c)) end
388
+ ruby
389
+
390
+ [:defn,
391
+ :m,
392
+ [:args,
393
+ :a,
394
+ [:masgn, [:array, [:lasgn, :b]], [:lvar, :"_:1"]],
395
+ [:masgn, [:array, [:lasgn, :c]], [:lvar, :"_:2"]],
396
+ [:block, [:lasgn, :a, [:lit, 1]]]],
397
+ [:scope, [:block, [:nil]]]]
398
+ end
399
+
400
+ parse <<-ruby do
401
+ def m(a=1, (*b), (*c)) end
402
+ ruby
403
+
404
+ [:defn,
405
+ :m,
406
+ [:args,
407
+ :a,
408
+ [:masgn, [:array, [:splat, [:lasgn, :b]]], [:lvar, :"_:1"]],
409
+ [:masgn, [:array, [:splat, [:lasgn, :c]]], [:lvar, :"_:2"]],
410
+ [:block, [:lasgn, :a, [:lit, 1]]]],
411
+ [:scope, [:block, [:nil]]]]
412
+ end
413
+
414
+ parse <<-ruby do
415
+ def m(a=1, (b, c), (d, e)) end
416
+ ruby
417
+
418
+ [:defn,
419
+ :m,
420
+ [:args,
421
+ :a,
422
+ [:masgn, [:array, [:lasgn, :b], [:lasgn, :c]], [:lvar, :"_:1"]],
423
+ [:masgn, [:array, [:lasgn, :d], [:lasgn, :e]], [:lvar, :"_:2"]],
424
+ [:block, [:lasgn, :a, [:lit, 1]]]],
425
+ [:scope, [:block, [:nil]]]]
426
+ end
427
+
428
+ parse <<-ruby do
429
+ def m(a=1, (b, *c), (*d, e)) end
285
430
  ruby
286
431
 
287
432
  [:defn,
288
- :f,
433
+ :m,
434
+ [:args,
435
+ :a,
436
+ [:masgn, [:array, [:lasgn, :b], [:splat, [:lasgn, :c]]], [:lvar, :"_:1"]],
437
+ [:masgn, [:array, [:splat, [:lasgn, :d]]], [:lasgn, :e], [:lvar, :"_:2"]],
438
+ [:block, [:lasgn, :a, [:lit, 1]]]],
439
+ [:scope, [:block, [:nil]]]]
440
+ end
441
+
442
+ parse <<-ruby do
443
+ def m(a=1, (b, *c), (d, (*e, f))) end
444
+ ruby
445
+
446
+ [:defn,
447
+ :m,
448
+ [:args,
449
+ :a,
450
+ [:masgn, [:array, [:lasgn, :b], [:splat, [:lasgn, :c]]], [:lvar, :"_:1"]],
451
+ [:masgn,
452
+ [:array,
453
+ [:lasgn, :d],
454
+ [:masgn, [:array, [:splat, [:lasgn, :e]]], [:lasgn, :f]]],
455
+ [:lvar, :"_:2"]],
456
+ [:block, [:lasgn, :a, [:lit, 1]]]],
457
+ [:scope, [:block, [:nil]]]]
458
+ end
459
+
460
+ parse <<-ruby do
461
+ def m(a=1, b:) end
462
+ ruby
463
+
464
+ [:defn,
465
+ :m,
466
+ [:args, :a, :b, [:block, [:lasgn, :a, [:lit, 1]]], [:block, [:b]]],
467
+ [:scope, [:block, [:nil]]]]
468
+ end
469
+
470
+ parse <<-ruby do
471
+ def m(a=1, b: 2) end
472
+ ruby
473
+
474
+ [:defn,
475
+ :m,
289
476
  [:args,
290
477
  :a,
291
478
  :b,
292
- :c,
293
- [:block,
294
- [:lasgn, :a, [:lit, 42]],
295
- [:lasgn, :b, [:str, "1"]],
296
- [:lasgn,
297
- :c,
298
- [:call, nil, :lambda, [:arglist, [:iter, [:args, :n], [:lvar, :n]]]]]]],
479
+ [:block, [:lasgn, :a, [:lit, 1]]],
480
+ [:block, [:b], [[:lasgn, :b, [:lit, 2]]]]],
299
481
  [:scope, [:block, [:nil]]]]
300
482
  end
301
483
 
302
484
  parse <<-ruby do
303
- def f(opt = 42)
304
- end
485
+ def m(a=1, **) end
305
486
  ruby
306
487
 
307
488
  [:defn,
308
- :f,
309
- [:args, :opt, [:block, [:lasgn, :opt, [:lit, 42]]]],
489
+ :m,
490
+ [:args, :a, :**, [:block, [:lasgn, :a, [:lit, 1]]], [:block, [:**]]],
310
491
  [:scope, [:block, [:nil]]]]
311
492
  end
312
493
 
313
494
  parse <<-ruby do
314
- def f(opt = 42, *rest, &block)
315
- end
495
+ def m(a=1, **k) end
316
496
  ruby
317
497
 
318
498
  [:defn,
319
- :f,
320
- [:args, :opt, :"*rest", :"&block", [:block, [:lasgn, :opt, [:lit, 42]]]],
499
+ :m,
500
+ [:args, :a, :"**k", [:block, [:lasgn, :a, [:lit, 1]]], [:block, [:"**k"]]],
321
501
  [:scope, [:block, [:nil]]]]
322
502
  end
323
503
 
324
504
  parse <<-ruby do
325
- def x(b = 42, *)
326
- end
505
+ def m(a=1, &b) end
327
506
  ruby
328
507
 
329
508
  [:defn,
330
- :x,
331
- [:args, :b, :*, [:block, [:lasgn, :b, [:lit, 42]]]],
509
+ :m,
510
+ [:args, :a, :"&b", [:block, [:lasgn, :a, [:lit, 1]]]],
332
511
  [:scope, [:block, [:nil]]]]
333
512
  end
334
513
 
335
514
  parse <<-ruby do
336
- def f(opt = 42, *rest)
337
- end
515
+ def m(*, a) end
516
+ ruby
517
+
518
+ [:defn, :m, [:args, :*, :a], [:scope, [:block, [:nil]]]]
519
+ end
520
+
521
+ parse <<-ruby do
522
+ def m(*a, b) end
523
+ ruby
524
+
525
+ [:defn, :m, [:args, :"*a", :b], [:scope, [:block, [:nil]]]]
526
+ end
527
+
528
+ parse <<-ruby do
529
+ def m(*, a:) end
530
+ ruby
531
+
532
+ [:defn, :m, [:args, :*, :a, [:block, [:a]]], [:scope, [:block, [:nil]]]]
533
+ end
534
+
535
+ parse <<-ruby do
536
+ def m(*a, b:) end
537
+ ruby
538
+
539
+ [:defn, :m, [:args, :"*a", :b, [:block, [:b]]], [:scope, [:block, [:nil]]]]
540
+ end
541
+
542
+ parse <<-ruby do
543
+ def m(*, a: 1) end
338
544
  ruby
339
545
 
340
546
  [:defn,
341
- :f,
342
- [:args, :opt, :"*rest", [:block, [:lasgn, :opt, [:lit, 42]]]],
547
+ :m,
548
+ [:args, :*, :a, [:block, [:a], [[:lasgn, :a, [:lit, 1]]]]],
343
549
  [:scope, [:block, [:nil]]]]
344
550
  end
345
551
 
346
552
  parse <<-ruby do
347
- def |(o)
348
- end
553
+ def m(*a, b: 1) end
349
554
  ruby
350
555
 
351
- [:defn, :|, [:args, :o], [:scope, [:block, [:nil]]]]
556
+ [:defn,
557
+ :m,
558
+ [:args, :"*a", :b, [:block, [:b], [[:lasgn, :b, [:lit, 1]]]]],
559
+ [:scope, [:block, [:nil]]]]
352
560
  end
353
561
 
354
562
  parse <<-ruby do
355
- def eql?(resource)
356
- (self.uuid == resource.uuid)
357
- rescue
358
- false
359
- end
563
+ def m(*, **) end
564
+ ruby
565
+
566
+ [:defn, :m, [:args, :*, :**, [:block, [:**]]], [:scope, [:block, [:nil]]]]
567
+ end
568
+
569
+ parse <<-ruby do
570
+ def m(*a, **) end
571
+ ruby
572
+
573
+ [:defn, :m, [:args, :"*a", :**, [:block, [:**]]], [:scope, [:block, [:nil]]]]
574
+ end
575
+
576
+ parse <<-ruby do
577
+ def m(*, **k) end
360
578
  ruby
361
579
 
362
580
  [:defn,
363
- :eql?,
364
- [:args, :resource],
365
- [:scope,
366
- [:block,
367
- [:rescue,
368
- [:call,
369
- [:call, [:self], :uuid, [:arglist]],
370
- :==,
371
- [:arglist, [:call, [:lvar, :resource], :uuid, [:arglist]]]],
372
- [:resbody, [:array, [:const, :StandardError]], [:false]]]]]]
581
+ :m,
582
+ [:args, :*, :"**k", [:block, [:"**k"]]],
583
+ [:scope, [:block, [:nil]]]]
373
584
  end
374
585
 
375
586
  parse <<-ruby do
376
- def something?
377
- end
587
+ def m(*a, **k) end
378
588
  ruby
379
589
 
380
- [:defn, :something?, [:args], [:scope, [:block, [:nil]]]]
590
+ [:defn,
591
+ :m,
592
+ [:args, :"*a", :"**k", [:block, [:"**k"]]],
593
+ [:scope, [:block, [:nil]]]]
381
594
  end
382
595
 
383
596
  parse <<-ruby do
384
- def x(*)
385
- end
597
+ def m(*, &b) end
386
598
  ruby
387
599
 
388
- [:defn, :x, [:args, :*], [:scope, [:block, [:nil]]]]
600
+ [:defn, :m, [:args, :*, :"&b"], [:scope, [:block, [:nil]]]]
389
601
  end
390
602
 
391
603
  parse <<-ruby do
392
- def f(*rest)
393
- end
604
+ def m(*a, &b) end
394
605
  ruby
395
606
 
396
- [:defn, :f, [:args, :"*rest"], [:scope, [:block, [:nil]]]]
607
+ [:defn, :m, [:args, :"*a", :"&b"], [:scope, [:block, [:nil]]]]
397
608
  end
398
609
 
399
610
  parse <<-ruby do
400
- def x(a, *)
401
- p(a)
402
- end
611
+ def m(a:, b:) end
612
+ ruby
613
+
614
+ [:defn, :m, [:args, :a, :b, [:block, [:a, :b]]], [:scope, [:block, [:nil]]]]
615
+ end
616
+
617
+ parse <<-ruby do
618
+ def m(a:, b: 1) end
403
619
  ruby
404
620
 
405
621
  [:defn,
406
- :x,
407
- [:args, :a, :*],
408
- [:scope, [:block, [:call, nil, :p, [:arglist, [:lvar, :a]]]]]]
622
+ :m,
623
+ [:args, :a, :b, [:block, [:a, :b], [[:lasgn, :b, [:lit, 1]]]]],
624
+ [:scope, [:block, [:nil]]]]
409
625
  end
410
626
 
411
627
  parse <<-ruby do
412
- def zarray
413
- a = []
414
- return a
415
- end
628
+ def m(a:, **) end
629
+ ruby
630
+
631
+ [:defn, :m, [:args, :a, :**, [:block, [:a, :**]]], [:scope, [:block, [:nil]]]]
632
+ end
633
+
634
+ parse <<-ruby do
635
+ def m(a:, **k) end
416
636
  ruby
417
637
 
418
638
  [:defn,
419
- :zarray,
420
- [:args],
421
- [:scope, [:block, [:lasgn, :a, [:array]], [:return, [:lvar, :a]]]]]
639
+ :m,
640
+ [:args, :a, :"**k", [:block, [:a, :"**k"]]],
641
+ [:scope, [:block, [:nil]]]]
422
642
  end
423
643
 
424
644
  parse <<-ruby do
425
- b = 42
426
- def a
427
- c do
428
- begin
429
- do_stuff
430
- rescue RuntimeError => b
431
- puts(b)
432
- end
433
- end
434
- end
645
+ def m(a:, &b) end
646
+ ruby
647
+
648
+ [:defn, :m, [:args, :a, :"&b", [:block, [:a]]], [:scope, [:block, [:nil]]]]
649
+ end
650
+
651
+ parse <<-ruby do
652
+ def m(a: 1, b:) end
435
653
  ruby
436
654
 
437
- [:block,
438
- [:lasgn, :b, [:lit, 42]],
439
- [:defn,
655
+ [:defn,
656
+ :m,
657
+ [:args, :a, :b, [:block, [:a, :b], [[:lasgn, :a, [:lit, 1]]]]],
658
+ [:scope, [:block, [:nil]]]]
659
+ end
660
+
661
+ parse <<-ruby do
662
+ def m(a: def m(a: 1) a end, b:) end
663
+ ruby
664
+
665
+ [:defn,
666
+ :m,
667
+ [:args,
440
668
  :a,
441
- [:args],
442
- [:scope,
443
- [:block,
444
- [:call,
445
- nil,
446
- :c,
447
- [:arglist,
448
- [:iter,
449
- [:args],
450
- [:rescue,
451
- [:call, nil, :do_stuff, [:arglist]],
452
- [:resbody,
453
- [:array, [:const, :RuntimeError], [:lasgn, :b, [:gvar, :$!]]],
454
- [:call, nil, :puts, [:arglist, [:lvar, :b]]]]]]]]]]]]
455
- end
456
-
457
- parse <<-ruby do
458
- def x(a=0.0,b=0.0)
459
- a+b
460
- end
669
+ :b,
670
+ [:block,
671
+ [:a, :b],
672
+ [[:lasgn,
673
+ :a,
674
+ [:defn,
675
+ :m,
676
+ [:args, :a, [:block, [:a], [[:lasgn, :a, [:lit, 1]]]]],
677
+ [:scope, [:block, [:lvar, :a]]]]]]]],
678
+ [:scope, [:block, [:nil]]]]
679
+ end
680
+
681
+ parse <<-ruby do
682
+ def m(a: 1, b: 2) end
461
683
  ruby
462
684
 
463
685
  [:defn,
464
- :x,
686
+ :m,
465
687
  [:args,
466
688
  :a,
467
689
  :b,
468
- [:block, [:lasgn, :a, [:lit, 0.0]], [:lasgn, :b, [:lit, 0.0]]]],
469
- [:scope, [:block, [:call, [:lvar, :a], :+, [:arglist, [:lvar, :b]]]]]]
690
+ [:block, [:a, :b], [[:lasgn, :a, [:lit, 1]], [:lasgn, :b, [:lit, 2]]]]],
691
+ [:scope, [:block, [:nil]]]]
470
692
  end
471
693
 
472
694
  parse <<-ruby do
473
- def x(*b)
474
- a(*b)
475
- end
695
+ def m(a: 1, **) end
476
696
  ruby
477
697
 
478
698
  [:defn,
479
- :x,
480
- [:args, :"*b"],
481
- [:scope, [:block, [:call, nil, :a, [:arglist, [:splat, [:lvar, :b]]]]]]]
699
+ :m,
700
+ [:args, :a, :**, [:block, [:a, :**], [[:lasgn, :a, [:lit, 1]]]]],
701
+ [:scope, [:block, [:nil]]]]
482
702
  end
483
703
 
484
704
  parse <<-ruby do
485
- def meth(b)
486
- b
705
+ def m(a: 1, **k) end
706
+ ruby
707
+
708
+ [:defn,
709
+ :m,
710
+ [:args, :a, :"**k", [:block, [:a, :"**k"], [[:lasgn, :a, [:lit, 1]]]]],
711
+ [:scope, [:block, [:nil]]]]
712
+ end
713
+
714
+ parse <<-ruby do
715
+ def m(a: 1, &b) end
716
+ ruby
717
+
718
+ [:defn,
719
+ :m,
720
+ [:args, :a, :"&b", [:block, [:a], [[:lasgn, :a, [:lit, 1]]]]],
721
+ [:scope, [:block, [:nil]]]]
722
+ end
723
+
724
+ parse <<-ruby do
725
+ def m(**, &b) end
726
+ ruby
727
+
728
+ [:defn, :m, [:args, :**, :"&b", [:block, [:**]]], [:scope, [:block, [:nil]]]]
729
+ end
730
+
731
+ parse <<-ruby do
732
+ def m(**k, &b) end
733
+ ruby
734
+
735
+ [:defn,
736
+ :m,
737
+ [:args, :"**k", :"&b", [:block, [:"**k"]]],
738
+ [:scope, [:block, [:nil]]]]
739
+ end
740
+
741
+ parse <<-ruby do
742
+ def m(a, b=1, *c, d, e:, f: 2, g:, **k, &l) end
743
+ ruby
744
+
745
+ [:defn,
746
+ :m,
747
+ [:args,
748
+ :a,
749
+ :b,
750
+ :"*c",
751
+ :d,
752
+ :e,
753
+ :f,
754
+ :g,
755
+ :"**k",
756
+ :"&l",
757
+ [:block, [:lasgn, :b, [:lit, 1]]],
758
+ [:block, [:e, :f, :g, :"**k"], [[:lasgn, :f, [:lit, 2]]]]],
759
+ [:scope, [:block, [:nil]]]]
760
+ end
761
+
762
+ parse <<-ruby do
763
+ def m a, b=1, *c, d, e:, f: 2, g:, **k, &l
487
764
  end
488
765
  ruby
489
766
 
490
- [:defn, :meth, [:args, :b], [:scope, [:block, [:lvar, :b]]]]
767
+ [:defn,
768
+ :m,
769
+ [:args,
770
+ :a,
771
+ :b,
772
+ :"*c",
773
+ :d,
774
+ :e,
775
+ :f,
776
+ :g,
777
+ :"**k",
778
+ :"&l",
779
+ [:block, [:lasgn, :b, [:lit, 1]]],
780
+ [:block, [:e, :f, :g, :"**k"], [[:lasgn, :f, [:lit, 2]]]]],
781
+ [:scope, [:block, [:nil]]]]
491
782
  end
492
783
  end