ParseTree 1.5.0 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +28 -11
- data/Manifest.txt +2 -1
- data/Rakefile +10 -1
- data/lib/parse_tree.rb +43 -14
- data/lib/sexp_processor.rb +2 -2
- data/lib/unique.rb +15 -0
- data/test/pt_testcase.rb +797 -1198
- data/test/something.rb +0 -189
- data/test/test_parse_tree.rb +29 -314
- metadata +6 -5
data/test/something.rb
CHANGED
@@ -5,131 +5,6 @@ class Something
|
|
5
5
|
1 + 1
|
6
6
|
end
|
7
7
|
|
8
|
-
# basically: do we work at all?
|
9
|
-
def empty
|
10
|
-
end
|
11
|
-
|
12
|
-
# First order transformation: basic language constructs
|
13
|
-
def stupid
|
14
|
-
return nil
|
15
|
-
end
|
16
|
-
|
17
|
-
def simple(arg1)
|
18
|
-
print arg1
|
19
|
-
puts((4 + 2).to_s)
|
20
|
-
end
|
21
|
-
|
22
|
-
def global
|
23
|
-
$stderr.fputs("blah")
|
24
|
-
end
|
25
|
-
|
26
|
-
def lasgn_call
|
27
|
-
c = 2 + 3
|
28
|
-
end
|
29
|
-
|
30
|
-
def conditional1(arg1)
|
31
|
-
if arg1 == 0 then
|
32
|
-
return 1
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def conditional2(arg1)
|
37
|
-
unless arg1 == 0 then
|
38
|
-
return 2
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def conditional3(arg1)
|
43
|
-
if arg1 == 0 then
|
44
|
-
return 3
|
45
|
-
else
|
46
|
-
return 4
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def conditional4(arg1)
|
51
|
-
if arg1 == 0 then
|
52
|
-
return 2
|
53
|
-
elsif arg1 < 0 then
|
54
|
-
return 3
|
55
|
-
else
|
56
|
-
return 4
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def iteration1
|
61
|
-
array = [1, 2, 3]
|
62
|
-
array.each do |x|
|
63
|
-
y = x.to_s
|
64
|
-
puts(y)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def iteration2
|
69
|
-
array = [1, 2, 3]
|
70
|
-
array.each { |x|
|
71
|
-
y = x.to_s
|
72
|
-
puts(y)
|
73
|
-
}
|
74
|
-
end
|
75
|
-
|
76
|
-
def iteration3
|
77
|
-
array1 = [1, 2, 3]
|
78
|
-
array2 = [4, 5, 6, 7]
|
79
|
-
array1.each do |x|
|
80
|
-
array2.each do |y|
|
81
|
-
puts(x.to_s)
|
82
|
-
puts(y.to_s)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
def iteration4
|
88
|
-
1.upto(3) do |n|
|
89
|
-
puts n.to_s
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
def iteration5
|
94
|
-
3.downto(1) do |n|
|
95
|
-
puts n.to_s
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
def iteration6
|
100
|
-
3.downto(1) do
|
101
|
-
puts "hello"
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def case_stmt
|
106
|
-
var = 2
|
107
|
-
result = ""
|
108
|
-
case var
|
109
|
-
when 1 then
|
110
|
-
# block
|
111
|
-
puts "something"
|
112
|
-
result = "red"
|
113
|
-
when 2, 3 then
|
114
|
-
result = "yellow"
|
115
|
-
when 4 then
|
116
|
-
# nothing
|
117
|
-
else
|
118
|
-
result = "green"
|
119
|
-
end
|
120
|
-
|
121
|
-
case result
|
122
|
-
when "red" then
|
123
|
-
var = 1
|
124
|
-
when "yellow" then
|
125
|
-
var = 2
|
126
|
-
when "green" then
|
127
|
-
var = 3
|
128
|
-
end
|
129
|
-
|
130
|
-
return result
|
131
|
-
end
|
132
|
-
|
133
8
|
# Other edge cases:
|
134
9
|
|
135
10
|
def opt_args(arg1, arg2 = 42, *args)
|
@@ -144,26 +19,6 @@ class Something
|
|
144
19
|
return "foo"
|
145
20
|
end
|
146
21
|
|
147
|
-
def bools(arg1)
|
148
|
-
unless arg1.nil? then
|
149
|
-
return true
|
150
|
-
else
|
151
|
-
return false
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
def eric_is_stubborn
|
156
|
-
var = 42
|
157
|
-
var2 = var.to_s
|
158
|
-
$stderr.fputs(var2)
|
159
|
-
return var2
|
160
|
-
end
|
161
|
-
|
162
|
-
def interpolated
|
163
|
-
var = 14
|
164
|
-
var2 = "var is #{var}. So there."
|
165
|
-
end
|
166
|
-
|
167
22
|
def unknown_args(arg1, arg2)
|
168
23
|
# does nothing
|
169
24
|
return arg1
|
@@ -200,48 +55,4 @@ class Something
|
|
200
55
|
6
|
201
56
|
end
|
202
57
|
end
|
203
|
-
|
204
|
-
def op_asgn
|
205
|
-
a = 0
|
206
|
-
a ||= 1
|
207
|
-
a &&= 2
|
208
|
-
#a += 3 # doesn't use op_asgn
|
209
|
-
|
210
|
-
b = []
|
211
|
-
b[1] ||= 10
|
212
|
-
b[2] &&= 11
|
213
|
-
b[3] += 12
|
214
|
-
|
215
|
-
s = Struct.new :var
|
216
|
-
c = s.new nil
|
217
|
-
c.var ||= 20
|
218
|
-
c.var &&= 21
|
219
|
-
c.var += 22
|
220
|
-
|
221
|
-
c.d.e.f ||= 42
|
222
|
-
|
223
|
-
return a
|
224
|
-
end
|
225
|
-
|
226
|
-
def whiles
|
227
|
-
while false do
|
228
|
-
puts "false"
|
229
|
-
end
|
230
|
-
begin
|
231
|
-
puts "true"
|
232
|
-
end while false
|
233
|
-
end
|
234
|
-
|
235
|
-
def self.bmethod_maker
|
236
|
-
define_method(:bmethod_added) do |x|
|
237
|
-
x + 1
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
def self.dmethod_maker
|
242
|
-
define_method :dmethod_added, self.method(:bmethod_maker)
|
243
|
-
end if RUBY_VERSION < "1.9"
|
244
|
-
|
245
|
-
bmethod_maker
|
246
|
-
dmethod_maker if RUBY_VERSION < "1.9"
|
247
58
|
end
|
data/test/test_parse_tree.rb
CHANGED
@@ -9,6 +9,7 @@ end
|
|
9
9
|
|
10
10
|
require 'test/unit'
|
11
11
|
require 'parse_tree'
|
12
|
+
require 'pt_testcase'
|
12
13
|
require 'test/something'
|
13
14
|
|
14
15
|
class SomethingWithInitialize
|
@@ -17,26 +18,42 @@ class SomethingWithInitialize
|
|
17
18
|
def protected_meth; end
|
18
19
|
end
|
19
20
|
|
20
|
-
class
|
21
|
+
class ParseTree
|
22
|
+
def process(input) # makes it play with with ParseTreeTestCase (FIX?)
|
23
|
+
# um. kinda stupid, but cleaner
|
24
|
+
case input
|
25
|
+
when Array then
|
26
|
+
ParseTree.translate(*input)
|
27
|
+
else
|
28
|
+
ParseTree.translate(input)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class TestParseTree < ParseTreeTestCase
|
34
|
+
def setup
|
35
|
+
super
|
36
|
+
@processor = ParseTree.new(false)
|
37
|
+
end
|
21
38
|
|
22
39
|
def test_class_initialize
|
23
40
|
expected = [[:class, :SomethingWithInitialize, :Object,
|
24
41
|
[:defn, :initialize, [:scope, [:block, [:args], [:nil]]]],
|
25
42
|
[:defn, :protected_meth, [:scope, [:block, [:args], [:nil]]]],
|
26
43
|
]]
|
27
|
-
tree = @
|
44
|
+
tree = @processor.parse_tree SomethingWithInitialize
|
28
45
|
assert_equal expected, tree
|
29
46
|
end
|
30
47
|
|
31
48
|
def test_parse_tree_for_string
|
32
|
-
actual = @
|
49
|
+
actual = @processor.parse_tree_for_string '1 + nil', '(string)', 1, false
|
33
50
|
expected = [[:call, [:lit, 1], :+, [:array, [:nil]]]]
|
34
51
|
|
35
52
|
assert_equal expected, actual
|
36
53
|
end
|
37
54
|
|
38
55
|
def test_parse_tree_for_string_with_newlines
|
39
|
-
actual = @
|
56
|
+
actual = @processor.parse_tree_for_string "1 +\n nil", 'test.rb', 5, true
|
40
57
|
expected = [[:newline, 6, "test.rb"],
|
41
58
|
[:call, [:lit, 1], :+, [:array, [:nil]]]]
|
42
59
|
|
@@ -44,201 +61,20 @@ class TestParseTree < Test::Unit::TestCase
|
|
44
61
|
end
|
45
62
|
|
46
63
|
def test_parse_tree_for_str
|
47
|
-
actual = @
|
64
|
+
actual = @processor.parse_tree_for_str '1 + nil', '(string)', 1, false
|
48
65
|
expected = [[:call, [:lit, 1], :+, [:array, [:nil]]]]
|
49
66
|
|
50
67
|
assert_equal expected, actual
|
51
68
|
end
|
52
69
|
|
53
|
-
# TODO: need a test of interpolated strings
|
54
|
-
|
55
70
|
@@self_classmethod = [:defn, :"self.classmethod",
|
56
71
|
[:scope,
|
57
72
|
[:block,
|
58
73
|
[:args],
|
59
74
|
[:call, [:lit, 1], :+, [:array, [:lit, 1]]]]]]
|
60
75
|
|
61
|
-
@@self_bmethod_maker = [:defn,
|
62
|
-
:"self.bmethod_maker",
|
63
|
-
[:scope,
|
64
|
-
[:block,
|
65
|
-
[:args],
|
66
|
-
[:iter,
|
67
|
-
[:fcall, :define_method,
|
68
|
-
[:array, [:lit, :bmethod_added]]],
|
69
|
-
[:dasgn_curr, :x],
|
70
|
-
[:call, [:dvar, :x], :+, [:array, [:lit, 1]]]]]]]
|
71
|
-
|
72
|
-
@@self_dmethod_maker = [:defn,
|
73
|
-
:"self.dmethod_maker",
|
74
|
-
[:scope,
|
75
|
-
[:block,
|
76
|
-
[:args],
|
77
|
-
[:fcall,
|
78
|
-
:define_method,
|
79
|
-
[:array,
|
80
|
-
[:lit, :dmethod_added],
|
81
|
-
[:call, [:self], :method,
|
82
|
-
[:array, [:lit, :bmethod_maker]]]]]]]]
|
83
|
-
|
84
76
|
@@missing = [nil]
|
85
|
-
@@empty = [:defn, :empty,
|
86
|
-
[:scope,
|
87
|
-
[:block,
|
88
|
-
[:args],
|
89
|
-
[:nil]]]]
|
90
|
-
@@stupid = [:defn, :stupid,
|
91
|
-
[:scope,
|
92
|
-
[:block,
|
93
|
-
[:args],
|
94
|
-
[:return, [:nil]]]]]
|
95
|
-
@@simple = [:defn, :simple,
|
96
|
-
[:scope,
|
97
|
-
[:block,
|
98
|
-
[:args, :arg1],
|
99
|
-
[:fcall, :print,
|
100
|
-
[:array, [:lvar, :arg1]]],
|
101
|
-
[:fcall, :puts,
|
102
|
-
[:array,
|
103
|
-
[:call,
|
104
|
-
[:call,
|
105
|
-
[:lit, 4],
|
106
|
-
:+,
|
107
|
-
[:array, [:lit, 2]]],
|
108
|
-
:to_s]]]]]]
|
109
|
-
@@global = [:defn, :global,
|
110
|
-
[:scope,
|
111
|
-
[:block,
|
112
|
-
[:args],
|
113
|
-
[:call,
|
114
|
-
[:gvar, :$stderr],
|
115
|
-
:fputs,
|
116
|
-
[:array, [:str, "blah"]]]]]]
|
117
|
-
@@lasgn_call = [:defn, :lasgn_call,
|
118
|
-
[:scope,
|
119
|
-
[:block,
|
120
|
-
[:args],
|
121
|
-
[:lasgn, :c,
|
122
|
-
[:call,
|
123
|
-
[:lit, 2],
|
124
|
-
:+,
|
125
|
-
[:array, [:lit, 3]]]]]]]
|
126
|
-
@@conditional1 = [:defn, :conditional1,
|
127
|
-
[:scope,
|
128
|
-
[:block,
|
129
|
-
[:args, :arg1],
|
130
|
-
[:if,
|
131
|
-
[:call,
|
132
|
-
[:lvar, :arg1],
|
133
|
-
:==,
|
134
|
-
[:array, [:lit, 0]]],
|
135
|
-
[:return,
|
136
|
-
[:lit, 1]], nil]]]]
|
137
|
-
@@conditional2 = [:defn, :conditional2,
|
138
|
-
[:scope,
|
139
|
-
[:block,
|
140
|
-
[:args, :arg1],
|
141
|
-
[:if,
|
142
|
-
[:call,
|
143
|
-
[:lvar, :arg1],
|
144
|
-
:==,
|
145
|
-
[:array, [:lit, 0]]], nil,
|
146
|
-
[:return,
|
147
|
-
[:lit, 2]]]]]]
|
148
|
-
@@conditional3 = [:defn, :conditional3,
|
149
|
-
[:scope,
|
150
|
-
[:block,
|
151
|
-
[:args, :arg1],
|
152
|
-
[:if,
|
153
|
-
[:call,
|
154
|
-
[:lvar, :arg1],
|
155
|
-
:==,
|
156
|
-
[:array, [:lit, 0]]],
|
157
|
-
[:return,
|
158
|
-
[:lit, 3]],
|
159
|
-
[:return,
|
160
|
-
[:lit, 4]]]]]]
|
161
|
-
@@conditional4 = [:defn, :conditional4,
|
162
|
-
[:scope,
|
163
|
-
[:block,
|
164
|
-
[:args, :arg1],
|
165
|
-
[:if,
|
166
|
-
[:call,
|
167
|
-
[:lvar, :arg1],
|
168
|
-
:==,
|
169
|
-
[:array, [:lit, 0]]],
|
170
|
-
[:return, [:lit, 2]],
|
171
|
-
[:if,
|
172
|
-
[:call,
|
173
|
-
[:lvar, :arg1],
|
174
|
-
:<,
|
175
|
-
[:array, [:lit, 0]]],
|
176
|
-
[:return, [:lit, 3]],
|
177
|
-
[:return, [:lit, 4]]]]]]]
|
178
|
-
@@iteration_body = [:scope,
|
179
|
-
[:block,
|
180
|
-
[:args],
|
181
|
-
[:lasgn, :array,
|
182
|
-
[:array, [:lit, 1], [:lit, 2], [:lit, 3]]],
|
183
|
-
[:iter,
|
184
|
-
[:call,
|
185
|
-
[:lvar, :array], :each],
|
186
|
-
[:dasgn_curr, :x],
|
187
|
-
[:block,
|
188
|
-
[:dasgn_curr, :y],
|
189
|
-
[:dasgn_curr, :y, [:call, [:dvar, :x], :to_s]],
|
190
|
-
[:fcall, :puts, [:array, [:dvar, :y]]]]]]]
|
191
77
|
|
192
|
-
@@iteration1 = [:defn, :iteration1, @@iteration_body]
|
193
|
-
@@iteration2 = [:defn, :iteration2, @@iteration_body]
|
194
|
-
@@iteration3 = [:defn, :iteration3,
|
195
|
-
[:scope,
|
196
|
-
[:block,
|
197
|
-
[:args],
|
198
|
-
[:lasgn, :array1,
|
199
|
-
[:array, [:lit, 1], [:lit, 2], [:lit, 3]]],
|
200
|
-
[:lasgn, :array2,
|
201
|
-
[:array, [:lit, 4], [:lit, 5], [:lit, 6], [:lit, 7]]],
|
202
|
-
[:iter,
|
203
|
-
[:call,
|
204
|
-
[:lvar, :array1], :each],
|
205
|
-
[:dasgn_curr, :x],
|
206
|
-
[:iter,
|
207
|
-
[:call,
|
208
|
-
[:lvar, :array2], :each],
|
209
|
-
[:dasgn_curr, :y],
|
210
|
-
[:block,
|
211
|
-
[:fcall, :puts,
|
212
|
-
[:array, [:call, [:dvar, :x], :to_s]]],
|
213
|
-
[:fcall, :puts,
|
214
|
-
[:array, [:call, [:dvar, :y], :to_s]]]]]]]]]
|
215
|
-
@@iteration4 = [:defn,
|
216
|
-
:iteration4,
|
217
|
-
[:scope,
|
218
|
-
[:block,
|
219
|
-
[:args],
|
220
|
-
[:iter,
|
221
|
-
[:call, [:lit, 1], :upto, [:array, [:lit, 3]]],
|
222
|
-
[:dasgn_curr, :n],
|
223
|
-
[:fcall, :puts, [:array, [:call, [:dvar, :n], :to_s]]]]]]]
|
224
|
-
@@iteration5 = [:defn,
|
225
|
-
:iteration5,
|
226
|
-
[:scope,
|
227
|
-
[:block,
|
228
|
-
[:args],
|
229
|
-
[:iter,
|
230
|
-
[:call, [:lit, 3], :downto, [:array, [:lit, 1]]],
|
231
|
-
[:dasgn_curr, :n],
|
232
|
-
[:fcall, :puts, [:array, [:call, [:dvar, :n], :to_s]]]]]]]
|
233
|
-
@@iteration6 = [:defn,
|
234
|
-
:iteration6,
|
235
|
-
[:scope,
|
236
|
-
[:block,
|
237
|
-
[:args],
|
238
|
-
[:iter,
|
239
|
-
[:call, [:lit, 3], :downto, [:array, [:lit, 1]]],
|
240
|
-
nil,
|
241
|
-
[:fcall, :puts, [:array, [:str, "hello"]]]]]]]
|
242
78
|
@@opt_args = [:defn, :opt_args,
|
243
79
|
[:scope,
|
244
80
|
[:block,
|
@@ -269,58 +105,6 @@ class TestParseTree < Test::Unit::TestCase
|
|
269
105
|
[:fcall, :puts, [:array, [:call, [:lvar, :arg3], :to_s]]],
|
270
106
|
[:return,
|
271
107
|
[:str, "foo"]]]]]
|
272
|
-
@@bools = [:defn, :bools,
|
273
|
-
[:scope,
|
274
|
-
[:block,
|
275
|
-
[:args, :arg1],
|
276
|
-
[:if,
|
277
|
-
[:call,
|
278
|
-
[:lvar, :arg1], :nil?],
|
279
|
-
[:return,
|
280
|
-
[:false]],
|
281
|
-
[:return,
|
282
|
-
[:true]]]]]]
|
283
|
-
@@case_stmt = [:defn, :case_stmt,
|
284
|
-
[:scope,
|
285
|
-
[:block,
|
286
|
-
[:args],
|
287
|
-
[:lasgn, :var, [:lit, 2]],
|
288
|
-
[:lasgn, :result, [:str, ""]],
|
289
|
-
[:case,
|
290
|
-
[:lvar, :var],
|
291
|
-
[:when,
|
292
|
-
[:array, [:lit, 1]],
|
293
|
-
[:block,
|
294
|
-
[:fcall, :puts, [:array, [:str, "something"]]],
|
295
|
-
[:lasgn, :result, [:str, "red"]]]],
|
296
|
-
[:when,
|
297
|
-
[:array, [:lit, 2], [:lit, 3]],
|
298
|
-
[:lasgn, :result, [:str, "yellow"]]],
|
299
|
-
[:when, [:array, [:lit, 4]], nil],
|
300
|
-
[:lasgn, :result, [:str, "green"]]],
|
301
|
-
[:case,
|
302
|
-
[:lvar, :result],
|
303
|
-
[:when, [:array, [:str, "red"]], [:lasgn, :var, [:lit, 1]]],
|
304
|
-
[:when, [:array, [:str, "yellow"]], [:lasgn, :var, [:lit, 2]]],
|
305
|
-
[:when, [:array, [:str, "green"]], [:lasgn, :var, [:lit, 3]]],
|
306
|
-
nil],
|
307
|
-
[:return, [:lvar, :result]]]]]
|
308
|
-
@@eric_is_stubborn = [:defn,
|
309
|
-
:eric_is_stubborn,
|
310
|
-
[:scope,
|
311
|
-
[:block,
|
312
|
-
[:args],
|
313
|
-
[:lasgn, :var, [:lit, 42]],
|
314
|
-
[:lasgn, :var2, [:call, [:lvar, :var], :to_s]],
|
315
|
-
[:call, [:gvar, :$stderr], :fputs, [:array, [:lvar, :var2]]],
|
316
|
-
[:return, [:lvar, :var2]]]]]
|
317
|
-
@@interpolated = [:defn,
|
318
|
-
:interpolated,
|
319
|
-
[:scope,
|
320
|
-
[:block,
|
321
|
-
[:args],
|
322
|
-
[:lasgn, :var, [:lit, 14]],
|
323
|
-
[:lasgn, :var2, [:dstr, "var is ", [:lvar, :var], [:str, ". So there."]]]]]]
|
324
108
|
@@unknown_args = [:defn, :unknown_args,
|
325
109
|
[:scope,
|
326
110
|
[:block,
|
@@ -350,30 +134,7 @@ class TestParseTree < Test::Unit::TestCase
|
|
350
134
|
[:rescue,
|
351
135
|
[:lit, 5],
|
352
136
|
[:resbody, nil, [:lit, 6]]]]]]]
|
353
|
-
@@op_asgn = [:defn, :op_asgn,
|
354
|
-
[:scope,
|
355
|
-
[:block,
|
356
|
-
[:args],
|
357
|
-
[:lasgn, :a, [:lit, 0]],
|
358
|
-
[:op_asgn_or, [:lvar, :a], [:lasgn, :a, [:lit, 1]]],
|
359
|
-
[:op_asgn_and, [:lvar, :a], [:lasgn, :a, [:lit, 2]]],
|
360
137
|
|
361
|
-
[:lasgn, :b, [:zarray]],
|
362
|
-
|
363
|
-
[:op_asgn1, [:lvar, :b], [:array, [:lit, 1]], :"||", [:lit, 10]],
|
364
|
-
[:op_asgn1, [:lvar, :b], [:array, [:lit, 2]], :"&&", [:lit, 11]],
|
365
|
-
[:op_asgn1, [:lvar, :b], [:array, [:lit, 3]], :+, [:lit, 12]],
|
366
|
-
|
367
|
-
[:lasgn, :s, [:call, [:const, :Struct], :new, [:array, [:lit, :var]]]],
|
368
|
-
[:lasgn, :c, [:call, [:lvar, :s], :new, [:array, [:nil]]]],
|
369
|
-
|
370
|
-
[:op_asgn2, [:lvar, :c], :var=, :"||", [:lit, 20]],
|
371
|
-
[:op_asgn2, [:lvar, :c], :var=, :"&&", [:lit, 21]],
|
372
|
-
[:op_asgn2, [:lvar, :c], :var=, :+, [:lit, 22]],
|
373
|
-
|
374
|
-
[:op_asgn2, [:call, [:call, [:lvar, :c], :d], :e], :f=, :"||", [:lit, 42]],
|
375
|
-
|
376
|
-
[:return, [:lvar, :a]]]]]
|
377
138
|
@@determine_args = [:defn, :determine_args,
|
378
139
|
[:scope,
|
379
140
|
[:block,
|
@@ -386,24 +147,7 @@ class TestParseTree < Test::Unit::TestCase
|
|
386
147
|
:unknown_args,
|
387
148
|
[:array, [:lit, 4], [:str, "known"]]]]]]]]
|
388
149
|
|
389
|
-
@@bmethod_added = [:defn,
|
390
|
-
:bmethod_added,
|
391
|
-
[:bmethod,
|
392
|
-
[:dasgn_curr, :x],
|
393
|
-
[:call, [:dvar, :x], :+, [:array, [:lit, 1]]]]]
|
394
150
|
|
395
|
-
@@dmethod_added = [:defn,
|
396
|
-
:dmethod_added,
|
397
|
-
[:dmethod,
|
398
|
-
:bmethod_maker,
|
399
|
-
[:scope,
|
400
|
-
[:block,
|
401
|
-
[:args],
|
402
|
-
[:iter,
|
403
|
-
[:fcall, :define_method, [:array, [:lit, :bmethod_added]]],
|
404
|
-
[:dasgn_curr, :x],
|
405
|
-
[:call, [:dvar, :x], :+, [:array, [:lit, 1]]]]]]]] if RUBY_VERSION < "1.9"
|
406
|
-
|
407
151
|
@@attrasgn = [:defn,
|
408
152
|
:attrasgn,
|
409
153
|
[:scope,
|
@@ -415,50 +159,21 @@ class TestParseTree < Test::Unit::TestCase
|
|
415
159
|
:type=,
|
416
160
|
[:array, [:call, [:vcall, :other], :type]]]]]]
|
417
161
|
|
418
|
-
@@whiles = [:defn,
|
419
|
-
:whiles,
|
420
|
-
[:scope,
|
421
|
-
[:block,
|
422
|
-
[:args],
|
423
|
-
[:while, [:false], [:fcall, :puts, [:array, [:str, "false"]]], true],
|
424
|
-
[:while, [:false], [:fcall, :puts, [:array, [:str, "true"]]], false]]]]
|
425
|
-
@@xstr = [:defn,
|
426
|
-
:xstr,
|
427
|
-
[:scope,
|
428
|
-
[:block,
|
429
|
-
[:args],
|
430
|
-
[:xstr, 'touch 5']]]]
|
431
|
-
@@dxstr = [:defn,
|
432
|
-
:dxstr,
|
433
|
-
[:scope,
|
434
|
-
[:block,
|
435
|
-
[:args],
|
436
|
-
[:dxstr, 'touch ', [:lit, 5]]]]]
|
437
|
-
|
438
162
|
@@__all = [:class, :Something, :Object]
|
439
163
|
|
440
|
-
|
441
|
-
@thing = ParseTree.new(false)
|
442
|
-
end
|
443
|
-
|
444
|
-
methods = Something.instance_methods(false)
|
445
|
-
|
446
|
-
methods.sort.each do |meth|
|
164
|
+
Something.instance_methods(false).sort.each do |meth|
|
447
165
|
if class_variables.include?("@@#{meth}") then
|
448
166
|
@@__all << eval("@@#{meth}")
|
449
|
-
eval "def test_#{meth}; assert_equal @@#{meth}, @
|
167
|
+
eval "def test_#{meth}; assert_equal @@#{meth}, @processor.parse_tree_for_method(Something, :#{meth}); end"
|
450
168
|
else
|
451
169
|
eval "def test_#{meth}; flunk \"You haven't added @@#{meth} yet\"; end"
|
452
170
|
end
|
453
171
|
end
|
454
172
|
|
455
|
-
|
456
|
-
|
457
|
-
# TODO: cleanup
|
458
|
-
methods.sort.each do |meth|
|
173
|
+
Something.singleton_methods.sort.each do |meth|
|
459
174
|
if class_variables.include?("@@self_#{meth}") then
|
460
175
|
@@__all << eval("@@self_#{meth}")
|
461
|
-
eval "def test_self_#{meth}; assert_equal @@self_#{meth}, @
|
176
|
+
eval "def test_self_#{meth}; assert_equal @@self_#{meth}, @processor.parse_tree_for_method(Something, :#{meth}, true); end"
|
462
177
|
else
|
463
178
|
eval "def test_self_#{meth}; flunk \"You haven't added @@self_#{meth} yet\"; end"
|
464
179
|
end
|
@@ -466,13 +181,13 @@ class TestParseTree < Test::Unit::TestCase
|
|
466
181
|
|
467
182
|
def test_missing
|
468
183
|
assert_equal(@@missing,
|
469
|
-
@
|
184
|
+
@processor.parse_tree_for_method(Something, :missing),
|
470
185
|
"Must return -3 for missing methods")
|
471
186
|
end
|
472
187
|
|
473
|
-
def
|
188
|
+
def test_whole_class
|
474
189
|
assert_equal([@@__all],
|
475
|
-
@
|
190
|
+
@processor.parse_tree(Something),
|
476
191
|
"Must return a lot of shit")
|
477
192
|
end
|
478
193
|
end
|