ripper2ruby 0.0.1

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.
Files changed (111) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.markdown +10 -0
  3. data/lib/core_ext/array/flush.rb +5 -0
  4. data/lib/core_ext/hash/delete_at.rb +5 -0
  5. data/lib/core_ext/object/meta_class.rb +5 -0
  6. data/lib/core_ext/object/try.rb +12 -0
  7. data/lib/erb/stripper.rb +48 -0
  8. data/lib/highlighters/ansi.rb +29 -0
  9. data/lib/ripper/event_log.rb +45 -0
  10. data/lib/ripper/ruby_builder.rb +168 -0
  11. data/lib/ripper/ruby_builder/buffer.rb +34 -0
  12. data/lib/ripper/ruby_builder/events/args.rb +40 -0
  13. data/lib/ripper/ruby_builder/events/array.rb +71 -0
  14. data/lib/ripper/ruby_builder/events/assignment.rb +55 -0
  15. data/lib/ripper/ruby_builder/events/block.rb +80 -0
  16. data/lib/ripper/ruby_builder/events/call.rb +123 -0
  17. data/lib/ripper/ruby_builder/events/case.rb +17 -0
  18. data/lib/ripper/ruby_builder/events/const.rb +47 -0
  19. data/lib/ripper/ruby_builder/events/for.rb +13 -0
  20. data/lib/ripper/ruby_builder/events/hash.rb +24 -0
  21. data/lib/ripper/ruby_builder/events/identifier.rb +41 -0
  22. data/lib/ripper/ruby_builder/events/if.rb +37 -0
  23. data/lib/ripper/ruby_builder/events/lexer.rb +159 -0
  24. data/lib/ripper/ruby_builder/events/literal.rb +47 -0
  25. data/lib/ripper/ruby_builder/events/method.rb +21 -0
  26. data/lib/ripper/ruby_builder/events/operator.rb +23 -0
  27. data/lib/ripper/ruby_builder/events/statements.rb +50 -0
  28. data/lib/ripper/ruby_builder/events/string.rb +117 -0
  29. data/lib/ripper/ruby_builder/events/symbol.rb +22 -0
  30. data/lib/ripper/ruby_builder/events/while.rb +27 -0
  31. data/lib/ripper/ruby_builder/queue.rb +33 -0
  32. data/lib/ripper/ruby_builder/stack.rb +125 -0
  33. data/lib/ripper/ruby_builder/token.rb +91 -0
  34. data/lib/ripper2ruby.rb +1 -0
  35. data/lib/ruby.rb +28 -0
  36. data/lib/ruby/aggregate.rb +71 -0
  37. data/lib/ruby/alternation/args.rb +25 -0
  38. data/lib/ruby/alternation/hash.rb +25 -0
  39. data/lib/ruby/alternation/list.rb +19 -0
  40. data/lib/ruby/args.rb +36 -0
  41. data/lib/ruby/array.rb +27 -0
  42. data/lib/ruby/assignment.rb +32 -0
  43. data/lib/ruby/assoc.rb +17 -0
  44. data/lib/ruby/block.rb +42 -0
  45. data/lib/ruby/call.rb +34 -0
  46. data/lib/ruby/case.rb +30 -0
  47. data/lib/ruby/const.rb +49 -0
  48. data/lib/ruby/for.rb +18 -0
  49. data/lib/ruby/hash.rb +14 -0
  50. data/lib/ruby/if.rb +35 -0
  51. data/lib/ruby/list.rb +40 -0
  52. data/lib/ruby/literal.rb +45 -0
  53. data/lib/ruby/method.rb +19 -0
  54. data/lib/ruby/node.rb +47 -0
  55. data/lib/ruby/node/composite.rb +68 -0
  56. data/lib/ruby/node/conversions.rb +66 -0
  57. data/lib/ruby/node/position.rb +35 -0
  58. data/lib/ruby/node/source.rb +29 -0
  59. data/lib/ruby/node/text.rb +121 -0
  60. data/lib/ruby/node/traversal.rb +82 -0
  61. data/lib/ruby/operator.rb +49 -0
  62. data/lib/ruby/params.rb +41 -0
  63. data/lib/ruby/statements.rb +45 -0
  64. data/lib/ruby/string.rb +40 -0
  65. data/lib/ruby/symbol.rb +27 -0
  66. data/lib/ruby/token.rb +51 -0
  67. data/lib/ruby/while.rb +32 -0
  68. data/test/all.rb +3 -0
  69. data/test/builder/stack_test.rb +67 -0
  70. data/test/builder/text_test.rb +118 -0
  71. data/test/context_test.rb +54 -0
  72. data/test/erb_stripper_test.rb +29 -0
  73. data/test/fixtures/all.rb.src +150 -0
  74. data/test/fixtures/source_1.rb +16 -0
  75. data/test/fixtures/source_2.rb +1 -0
  76. data/test/fixtures/stuff.rb +371 -0
  77. data/test/fixtures/template.html.erb +22 -0
  78. data/test/fixtures/tmp.rb +6 -0
  79. data/test/lib_test.rb +92 -0
  80. data/test/lib_test_helper.rb +103 -0
  81. data/test/libs.txt +227 -0
  82. data/test/nodes/args_test.rb +100 -0
  83. data/test/nodes/array_test.rb +141 -0
  84. data/test/nodes/assignment_test.rb +49 -0
  85. data/test/nodes/block_test.rb +125 -0
  86. data/test/nodes/call_test.rb +229 -0
  87. data/test/nodes/case_test.rb +68 -0
  88. data/test/nodes/comments_test.rb +25 -0
  89. data/test/nodes/const_test.rb +46 -0
  90. data/test/nodes/conversions_test.rb +9 -0
  91. data/test/nodes/for_test.rb +34 -0
  92. data/test/nodes/hash_test.rb +71 -0
  93. data/test/nodes/heredoc_test.rb +202 -0
  94. data/test/nodes/identifier_test.rb +51 -0
  95. data/test/nodes/if_test.rb +100 -0
  96. data/test/nodes/literals_test.rb +63 -0
  97. data/test/nodes/method_test.rb +92 -0
  98. data/test/nodes/namespaces_test.rb +65 -0
  99. data/test/nodes/node_test.rb +74 -0
  100. data/test/nodes/nodes_test.rb +23 -0
  101. data/test/nodes/operator_test.rb +241 -0
  102. data/test/nodes/separators_test.rb +97 -0
  103. data/test/nodes/statements_test.rb +70 -0
  104. data/test/nodes/string_test.rb +92 -0
  105. data/test/nodes/symbol_test.rb +57 -0
  106. data/test/nodes/unless_test.rb +42 -0
  107. data/test/nodes/until_test.rb +61 -0
  108. data/test/nodes/while_test.rb +71 -0
  109. data/test/test_helper.rb +51 -0
  110. data/test/traversal_test.rb +53 -0
  111. metadata +163 -0
@@ -0,0 +1,100 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class ArgsTest < Test::Unit::TestCase
4
+ include TestHelper
5
+
6
+ define_method :"test call arguments positions" do
7
+ src = "t('a' , 'b', 'c' => 'd', &e) { |f| g }"
8
+ assert_build(src) do |node|
9
+ assert_equal Ruby::ArgsList, node.first.arguments.class
10
+ assert_position [0, 0], node.select(:token => 't')
11
+ assert_position [0, 1], node.select(:token => '(')
12
+ assert_position [0, 2], node.select(:value => 'a')
13
+ assert_position [0, 6], node.select(:token => ',')
14
+ assert_position [0, 8], node.select(:value => 'b')
15
+ assert_position [0, 13], node.select(:value => 'c')
16
+ assert_position [0, 17], node.select(:token => '=>')
17
+ assert_position [0, 20], node.select(:value => 'd')
18
+ assert_position [0, 25], node.select(Ruby::Arg).last
19
+ assert_position [0, 27], node.select(:token => ')')
20
+ assert_position [0, 29], node.select(:token => '{')
21
+ assert_position [0, 31], node.select(:token => '|')[0]
22
+ assert_position [0, 32], node.select(:token => 'f')
23
+ assert_position [0, 33], node.select(:token => '|')[1]
24
+ assert_position [0, 35], node.select(:token => 'g')
25
+ assert_position [0, 37], node.select(:token => '}')
26
+ end
27
+ end
28
+
29
+ define_method :'test call arguments: t("foo") (string)' do
30
+ src = 't("foo")'
31
+ assert_build(src)
32
+ end
33
+
34
+ define_method :'test call arguments: t(:a => a, :b => b, &block)' do
35
+ src = 't(:a => a, :b => b, &c)'
36
+ assert_build(src) do |node|
37
+ end
38
+ end
39
+
40
+ define_method :'test call arguments: t("foo") (string, no parentheses)' do
41
+ src = 't foo'
42
+ assert_build(src)
43
+ end
44
+
45
+ define_method :"test call arguments: t :foo, :bar, :baz (3 symbols, no parentheses)" do
46
+ src = "t :foo, :bar, :baz"
47
+ assert_build(src)
48
+ end
49
+
50
+ define_method :"test method call: t(:foo => :bar, :baz => :buz) (bare hash)" do
51
+ src = "t(:foo => :bar, :baz => :buz)"
52
+ assert_build(src)
53
+ end
54
+
55
+ define_method :"test method call: t :a => :a do end (bare hash, no parentheses, do block)" do
56
+ src = "t :a => :a do end"
57
+ assert_build(src)
58
+ end
59
+
60
+ define_method :"test method call: t({ :foo => :bar, :baz => :buz }) (hash)" do
61
+ src = "t({ :foo => :bar, :baz => :buz })"
62
+ assert_build(src)
63
+ end
64
+
65
+ define_method :"test method call: t({ :foo => :bar }) (hash, leading whitespace)" do
66
+ src = 't ({ :foo => :bar })'
67
+ assert_build(src)
68
+ end
69
+
70
+ define_method :"test method call: t([:foo, :bar]) (array)" do
71
+ src = "(t[:foo, :bar, :baz])"
72
+ assert_build(src)
73
+ end
74
+
75
+ define_method :"test method call: t(nil) (keyword)" do
76
+ src = "t(nil)"
77
+ assert_build(src)
78
+ end
79
+
80
+ define_method :"test: args with a splat call" do
81
+ src = "t(*a.b)"
82
+ assert_build(src)
83
+ end
84
+
85
+ define_method :"test: args with a splat and block" do
86
+ src = "t(*a.b { |c| c.d })"
87
+ assert_build(src)
88
+ end
89
+
90
+
91
+ define_method :"test: replace argument" do
92
+ src = "(:foo, :bar)"
93
+ args = build('t' + src).first.arguments
94
+ foo, bar = args
95
+
96
+ args[0] = baz = Ruby.from_native(:baz)
97
+ assert_equal args, baz.parent.parent # baz is wrapped into an Arg
98
+ assert_equal [0, 2], baz.position.to_a
99
+ end
100
+ end
@@ -0,0 +1,141 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class ArrayTest < Test::Unit::TestCase
4
+ include TestHelper
5
+
6
+ define_method :'test an array: [:foo, :bar]' do
7
+ src = '[:foo, :bar]'
8
+ assert_build(src) do |node|
9
+ assert_node node.first, :class => Ruby::Array, :value => [:foo, :bar]
10
+ assert_position [0, 1], node.select(:value => :foo)
11
+ assert_position [0, 7], node.select(:value => :bar)
12
+ end
13
+ end
14
+
15
+ define_method :'test a wordlist array %w(foo bar) (parentheses)' do
16
+ src = '%w(foo bar)'
17
+ assert_build(src) do |node|
18
+ assert_node node.first, :class => Ruby::Array, :value => %w(foo bar)
19
+ assert_position [0, 3], node.first.select(:value => 'foo')
20
+ assert_position [0, 7], node.select(:value => 'bar')
21
+ end
22
+ end
23
+
24
+ define_method :"test a percent-parens delimited string" do
25
+ src = "%(foo)"
26
+ assert_build(src)
27
+ end
28
+
29
+ define_method :'test a multiline wordlist array %w(\nfoo bar\n)' do
30
+ src = "%w(\nfoo bar\n).foo"
31
+ assert_build(src)
32
+ end
33
+
34
+ define_method :'test a multiline wordlist array w/ extra whitespace %w( \nfoo bar\n )' do
35
+ src = "%w( \nfoo bar\n ).foo"
36
+ assert_build(src)
37
+ end
38
+
39
+ define_method :'test a wordlist array %W[foo bar] (brackets)' do
40
+ src = '%W[foo bar]'
41
+ assert_build(src)
42
+ end
43
+
44
+ define_method :'test an empty wordlist (using parentheses)' do
45
+ src = "%w()"
46
+ assert_build(src)
47
+ end
48
+
49
+ define_method :'test an empty wordlist (interpolating, using parentheses)' do
50
+ src = "%W()"
51
+ assert_build(src)
52
+ end
53
+
54
+ define_method :'test an empty wordlist (using brackets)' do
55
+ src = "%w[]"
56
+ assert_build(src)
57
+ end
58
+
59
+ define_method :'test an empty wordlist (interpolating, using brackets)' do
60
+ src = "%W[]"
61
+ assert_build(src)
62
+ end
63
+
64
+ define_method :'test a wordlist with an embedded expression (using brackets)' do
65
+ src = "%W[\#{foo}]"
66
+ assert_build(src) do |node|
67
+ assert_position [0, 3], node.select(:class => Ruby::Statements)
68
+ assert_position [0, 5], node.select(:token => 'foo').first
69
+ end
70
+ end
71
+
72
+ define_method :"test array access" do
73
+ src = "foo[1]"
74
+ assert_build(src) do |node|
75
+ assert_position [0, 4], node.select(:value => 1).first
76
+ end
77
+ end
78
+
79
+ define_method :"test array access with no argument" do
80
+ src = "foo[]"
81
+ assert_build(src)
82
+ end
83
+
84
+ define_method :"test array access on a call with no argument" do
85
+ src = "foo.bar[]"
86
+ assert_build(src)
87
+ end
88
+
89
+ define_method :"test array w/ nested array access" do
90
+ src = '[ foo[bar] ]'
91
+ assert_build(src)
92
+ end
93
+
94
+ define_method :"test array assignment" do
95
+ src = "result[0] = :value"
96
+ assert_build(src)
97
+ end
98
+
99
+ define_method :'test nested array with whitespace' do
100
+ src = "\n [type, [row]]\n"
101
+ assert_build(src)
102
+ end
103
+
104
+ define_method :'test array length: with and without whitespace' do
105
+ src = <<-eoc
106
+ [:foo]
107
+ [:foo ]
108
+ [ :foo]
109
+ [ :foo ]
110
+
111
+ [:foo]
112
+ [:foo ]
113
+ [ :foo]
114
+ [ :foo ]
115
+
116
+ [:foo, :bar, :baz]
117
+ [:foo , :bar , :baz]
118
+ [:foo ,:bar ,:baz]
119
+
120
+ %w(foo)
121
+ %w(foo bar)
122
+ %w(foo bar)
123
+
124
+ %w( foo)
125
+ %w( foo bar)
126
+ %w( foo bar)
127
+
128
+ %w(foo )
129
+ %w(foo bar )
130
+ %w(foo bar )
131
+
132
+ %w( foo )
133
+ %w( foo bar )
134
+ %w( foo bar )
135
+ eoc
136
+
137
+ src.split("\n").map { |l| l.strip }.select { |l| !l.empty? }.each do |line|
138
+ assert_build(line)
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,49 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class AssignmentTest < Test::Unit::TestCase
4
+ include TestHelper
5
+
6
+ define_method :'test assignment: a = b' do
7
+ src = 'a = b'
8
+ assert_build(src) do |node|
9
+ assert_equal Ruby::Assignment, node.first.class
10
+ end
11
+ end
12
+
13
+ define_method :'test assignment: a ||= b' do
14
+ src = 'a ||= b'
15
+ assert_build(src)
16
+ end
17
+
18
+ define_method :'test assignment: a, b = c' do
19
+ src = 'a, b = c'
20
+ assert_build(src) do |node|
21
+ assert_equal Ruby::Assignment, node.first.class
22
+ assert_equal Ruby::MultiAssignment, node.first.left.class
23
+ end
24
+ end
25
+
26
+ define_method :'test assignment: a, b = c, d' do
27
+ src = 'a, b = c, d'
28
+ assert_build(src) do |node|
29
+ assert_equal Ruby::Assignment, node.first.class
30
+ assert_equal Ruby::MultiAssignment, node.first.left.class
31
+ assert_equal Ruby::MultiAssignment, node.first.right.class
32
+ end
33
+ end
34
+
35
+ define_method :'test assignment: a, *b = c' do
36
+ src = 'a, *b = c'
37
+ assert_build(src)
38
+ end
39
+
40
+ define_method :'test assignment: a, b = *c' do
41
+ src = 'a, b = *c'
42
+ assert_build(src)
43
+ end
44
+
45
+ define_method :'test assignment to namespaced const: A::B = 1' do
46
+ src = 'A::B = 1'
47
+ assert_build(src)
48
+ end
49
+ end
@@ -0,0 +1,125 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class BlockTest < Test::Unit::TestCase
4
+ include TestHelper
5
+
6
+ define_method :"test a block with an invalid param" do
7
+ src = 'foo { |@a| }'
8
+ assert_raises(Ripper::RubyBuilder::ParseError) { build(src) }
9
+ end
10
+
11
+ define_method :"test method call block with 2 statements (newline delimited)" do
12
+ src = "t do\nfoo\nbar\nend"
13
+ assert_build(src)
14
+ end
15
+
16
+ define_method :"test method call block with no statements, single semicolon" do
17
+ src = "t do ; end"
18
+ assert_build(src)
19
+ end
20
+
21
+ define_method :"test method call block with empty params" do
22
+ src = "t do ||\nfoo\n end"
23
+ assert_build(src)
24
+ end
25
+
26
+ define_method :"test method call block with semicolon delimited statements" do
27
+ src = "t do ;; ;foo ; ;;bar; ; end"
28
+ assert_build(src)
29
+ end
30
+
31
+ define_method :"test: a method call block with arguments" do
32
+ src = "t do |(a, b), *c|\n foo\n bar\n end"
33
+ assert_build(src)
34
+ end
35
+
36
+ define_method :"test: an empty method call brace_block" do
37
+ src = "t { |(a, b), *c| }"
38
+ assert_build(src)
39
+ end
40
+
41
+ define_method :"test: method call w/ do_block" do
42
+ src = "t do |(a, b), *c| end"
43
+ assert_build(src)
44
+ end
45
+
46
+ define_method :"test: method call do_block with a block_param" do
47
+ src = "t do |*a, &c| end"
48
+ assert_build(src)
49
+ end
50
+
51
+ define_method :"test: an empty method call brace_block w/ arg and parenthesed param" do
52
+ src = 't {|a, (b)| }'
53
+ assert_build(src)
54
+ end
55
+
56
+ define_method :"test: an empty begin end block" do
57
+ src = "begin\nend"
58
+ assert_build(src)
59
+ end
60
+
61
+ define_method :"test: a begin ; end block" do
62
+ src = "begin ; end"
63
+ assert_build(src)
64
+ end
65
+
66
+ define_method :"test: a begin foo; end block" do
67
+ src = "begin foo; end"
68
+ assert_build(src)
69
+ end
70
+
71
+ define_method :"test: a begin block with an else block" do
72
+ src = "begin\nfoo\nelse\nbar\nend"
73
+ assert_build(src)
74
+ end
75
+
76
+ define_method :"test: a begin block with rescue without error_type" do
77
+ src = "begin\nfoo\nrescue\nbar\nend"
78
+ assert_build(src)
79
+ end
80
+
81
+ define_method :"test: a begin block with rescue without an error_type" do
82
+ src = "begin \n rescue A \n end"
83
+ assert_build(src)
84
+ end
85
+
86
+ define_method :"test: a begin block with rescue with a error_types and error_var" do
87
+ src = "begin foo\n rescue A => e\n bar\n end"
88
+ assert_build(src)
89
+ end
90
+
91
+ define_method :"test: a begin block with rescue with a multiple error_types and error_var" do
92
+ src = "begin foo\n rescue A, B => e\n bar\n end"
93
+ assert_build(src)
94
+ end
95
+
96
+ define_method :"test: a begin block with multiple rescues and ensure" do
97
+ src = "begin foo\n rescue A, B => e\n bar\nrescue C => e\n bam\nensure\nbaz\n end"
98
+ assert_build(src)
99
+ end
100
+
101
+ define_method :"test: a begin block using rescue, then and else (from rubylexer tests)" do
102
+ src = "begin a; rescue NameError => e then e else :foo end"
103
+ assert_build(src)
104
+ end
105
+
106
+ define_method :"test: multiple rescue blocks" do
107
+ src = "begin\nrescue A => e\nrescue B\nend"
108
+ assert_build(src)
109
+ end
110
+
111
+ define_method :"test: rescue and else block" do
112
+ src = "begin\nrescue A\nelse\nend\n"
113
+ assert_build(src)
114
+ end
115
+
116
+ define_method :"test: line with a rescue modifier yielding a method call" do
117
+ src = "foo rescue bar"
118
+ assert_build(src)
119
+ end
120
+
121
+ define_method :"test: line with a rescue modifier yielding an integer" do
122
+ src = "foo rescue 0"
123
+ assert_build(src)
124
+ end
125
+ end
@@ -0,0 +1,229 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class CallTest < Test::Unit::TestCase
4
+ include TestHelper
5
+
6
+ define_method :"test a variable" do
7
+ src = "t"
8
+ assert_build(src) do |node|
9
+ assert_equal Ruby::Variable, node.first.class
10
+ end
11
+ end
12
+
13
+ define_method :"test call on const target without arguments and without parantheses" do
14
+ src = "I18n.t"
15
+ assert_build(src) do |node|
16
+ assert_equal Ruby::Call, node.first.class
17
+ end
18
+ end
19
+
20
+ define_method :'test method call: a.b(:foo) (var ref target, parantheses)' do
21
+ src = "a.b(:foo)"
22
+ assert_build(src)
23
+ end
24
+
25
+ define_method :"test call on const target without arguments and with parantheses" do
26
+ src = "I18n.t()"
27
+ assert_build(src)
28
+ end
29
+
30
+ define_method :'test method call: I18n.t("foo") (const target, double-quoted string, parantheses)' do
31
+ src = "I18n.t('foo')"
32
+ assert_build(src)
33
+ end
34
+
35
+ define_method :'test method call: I18n.t "foo" (const target, double-quoted string, no parantheses)' do
36
+ src = "I18n.t 'foo'"
37
+ assert_build(src)
38
+ end
39
+
40
+ define_method :"test call on const target without arguments and without parantheses (:: separator)" do
41
+ src = "I18n::t"
42
+ assert_build(src)
43
+ end
44
+
45
+ define_method :"test call on const target without arguments and with parantheses (:: separator)" do
46
+ src = "I18n::t()"
47
+ assert_build(src)
48
+ end
49
+
50
+ define_method :'test method call: I18n::t("foo") (const target, double-quoted string, parantheses, :: separator)' do
51
+ src = "I18n::t('foo')"
52
+ assert_build(src)
53
+ end
54
+
55
+ define_method :'test method call: foo.<=>(bar) (sending an operator, srsly ... used in Rake 0.8.3)' do
56
+ src = "foo.<=>(bar)"
57
+ assert_build(src)
58
+ end
59
+
60
+ define_method :'test method call: foo.<< bar (sending an operator, srsly ... used in Redmine)' do
61
+ src = "foo.<< bar"
62
+ assert_build(src)
63
+ end
64
+
65
+ define_method :"test call with a string with an embedded expression" do
66
+ src = 'foo("#{bar}")'
67
+ assert_build(src)
68
+ end
69
+
70
+ define_method :"test call on no target without arguments but parantheses" do
71
+ src = "t('foo', 'bar')"
72
+ assert_build(src)
73
+ end
74
+
75
+ define_method :"test two method calls: t('foo'); t 'bar' (no target)" do
76
+ src = "t('foo', 'bar'); t 'baz'"
77
+ assert_build(src)
78
+ end
79
+
80
+ define_method :'test method call: t "foo" (no target, double-quoted string, no parantheses)' do
81
+ src = "t 'foo'"
82
+ assert_build(src)
83
+ end
84
+
85
+ define_method :'test method call: t %(foo) (no target, two percent-parentheses delimited strings w/ embedded expression)' do
86
+ src = 't %(foo #{bar}), %(baz)'
87
+ assert_build(src)
88
+ end
89
+
90
+ define_method :"test call on no target without arguments but parantheses" do
91
+ src = "t()"
92
+ assert_build(src)
93
+ end
94
+
95
+ define_method :"test call with nested call/parantheses" do
96
+ src = "t(:a, b(:b))"
97
+ assert_build(src)
98
+ end
99
+
100
+ define_method :"test call with nested call/parantheses" do
101
+ src = "t(:a, b(:b))"
102
+ assert_build(src)
103
+ end
104
+
105
+ define_method :"test call with a symbol that is a backtick" do
106
+ src = "t(:`)"
107
+ assert_build(src)
108
+ end
109
+
110
+ define_method :"test call on no target without arguments but a block" do
111
+ src = "t do |a, b, *c|\nfoo\nend"
112
+ assert_build(src)
113
+ end
114
+
115
+ define_method :"test call on no target without arguments but a block" do
116
+ src = "t do |(a, b), *c|\nfoo\nend"
117
+ assert_build(src)
118
+ end
119
+
120
+ define_method :"test call on no target with a block var" do
121
+ src = "t(:foo, &block)"
122
+ assert_build(src)
123
+ end
124
+
125
+ define_method :"test call with a call with a block as an arg" do
126
+ src = "foo(bar do |a| ; end)"
127
+ assert_build(src)
128
+ end
129
+
130
+ define_method :"test call to self" do
131
+ src = "self.b"
132
+ assert_build(src)
133
+ end
134
+
135
+ define_method :"test call super without arguments" do
136
+ src = "super"
137
+ assert_build(src)
138
+ end
139
+
140
+ define_method :"test call super with arguments" do
141
+ src = "super(:foo)"
142
+ assert_build(src)
143
+ end
144
+
145
+ define_method :"test call yield without arguments" do
146
+ src = "yield"
147
+ assert_build(src)
148
+ end
149
+
150
+ define_method :"test call yield with arguments" do
151
+ src = "yield(:foo)"
152
+ assert_build(src)
153
+ end
154
+
155
+ define_method :"test call alias with identifiers" do
156
+ src = "alias eql? =="
157
+ assert_build(src)
158
+ end
159
+
160
+ define_method :"test call alias with symbols" do
161
+ src = "alias :foo :bar"
162
+ assert_build(src)
163
+ end
164
+
165
+ define_method :"test call alias with global vars" do
166
+ src = "alias $ERROR_INFO $!"
167
+ assert_build(src)
168
+ end
169
+
170
+ define_method :"test call undef with a symbol" do
171
+ src = "undef :foo"
172
+ assert_build(src)
173
+ end
174
+
175
+ define_method :"test call undef with method names" do
176
+ src = "undef foo, bar, baz"
177
+ assert_build(src)
178
+ end
179
+
180
+ define_method :"test call undef with an operator" do
181
+ src = "undef =~"
182
+ assert_build(src)
183
+ end
184
+
185
+ define_method :"test call return" do
186
+ src = "return :foo"
187
+ assert_build(src)
188
+ end
189
+
190
+ define_method :"test call next" do
191
+ src = "next"
192
+ assert_build(src)
193
+ end
194
+
195
+ define_method :"test call redo" do
196
+ src = "redo"
197
+ assert_build(src)
198
+ end
199
+
200
+ define_method :"test call break" do
201
+ src = "break"
202
+ assert_build(src)
203
+ end
204
+
205
+ define_method :"test call retry" do
206
+ src = "retry"
207
+ assert_build(src)
208
+ end
209
+
210
+ define_method :"test call to an assignment method: a.b = :c" do
211
+ src = "a.b = :c"
212
+ assert_build(src)
213
+ end
214
+
215
+ define_method :"test call to defined?" do
216
+ src = "defined?(A)"
217
+ assert_build(src)
218
+ end
219
+
220
+ define_method :'test BEGIN routine' do
221
+ src = "BEGIN { foo }"
222
+ assert_build(src)
223
+ end
224
+
225
+ define_method :'test END routine' do
226
+ src = "END { foo }"
227
+ assert_build(src)
228
+ end
229
+ end