mvz-live_ast 1.3.0 → 2.1.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.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.rdoc +21 -1
  3. data/README.rdoc +17 -3
  4. data/lib/live_ast/ast_eval.rb +3 -1
  5. data/lib/live_ast/ast_load.rb +3 -1
  6. data/lib/live_ast/base.rb +20 -19
  7. data/lib/live_ast/common.rb +11 -1
  8. data/lib/live_ast/error.rb +2 -0
  9. data/lib/live_ast/evaler.rb +5 -3
  10. data/lib/live_ast/full.rb +4 -2
  11. data/lib/live_ast/irb_spy.rb +7 -5
  12. data/lib/live_ast/linker.rb +6 -2
  13. data/lib/live_ast/loader.rb +7 -2
  14. data/lib/live_ast/reader.rb +4 -3
  15. data/lib/live_ast/replace_caller.rb +14 -0
  16. data/lib/live_ast/replace_eval.rb +15 -14
  17. data/lib/live_ast/replace_load.rb +3 -1
  18. data/lib/live_ast/replace_raise.rb +5 -3
  19. data/lib/live_ast/ruby_parser/test.rb +13 -0
  20. data/lib/live_ast/ruby_parser/unparser.rb +3 -1
  21. data/lib/live_ast/ruby_parser.rb +6 -4
  22. data/lib/live_ast/to_ast.rb +15 -18
  23. data/lib/live_ast/to_ruby.rb +10 -18
  24. data/lib/live_ast/version.rb +3 -1
  25. data/lib/live_ast.rb +6 -4
  26. metadata +106 -134
  27. data/Rakefile +0 -60
  28. data/devel/levitate.rb +0 -184
  29. data/devel/levitate_config.rb +0 -4
  30. data/test/alias_test.rb +0 -23
  31. data/test/ast_eval/ast_eval_test.rb +0 -11
  32. data/test/ast_load/ast_load_test.rb +0 -45
  33. data/test/attr_test.rb +0 -24
  34. data/test/backtrace_test.rb +0 -159
  35. data/test/base/noninvasive_test.rb +0 -53
  36. data/test/base/reload_test.rb +0 -41
  37. data/test/covert_define_method_test.rb +0 -23
  38. data/test/def_test.rb +0 -35
  39. data/test/define_method_test.rb +0 -67
  40. data/test/define_singleton_method_test.rb +0 -15
  41. data/test/encoding_test/bad.rb +0 -1
  42. data/test/encoding_test/cp932.rb +0 -6
  43. data/test/encoding_test/default.rb +0 -5
  44. data/test/encoding_test/eucjp.rb +0 -6
  45. data/test/encoding_test/koi8.rb +0 -6
  46. data/test/encoding_test/koi8_shebang.rb +0 -7
  47. data/test/encoding_test/koi8_with_utf8bom.rb +0 -6
  48. data/test/encoding_test/usascii.rb +0 -6
  49. data/test/encoding_test/usascii_with_utf8bom.rb +0 -6
  50. data/test/encoding_test/utf8.rb +0 -6
  51. data/test/encoding_test/utf8bom.rb +0 -6
  52. data/test/encoding_test/utf8bom_only.rb +0 -5
  53. data/test/encoding_test/utf8dos.rb +0 -6
  54. data/test/encoding_test/utf8mac.rb +0 -6
  55. data/test/encoding_test/utf8mac_alt.rb +0 -6
  56. data/test/encoding_test/utf8unix.rb +0 -6
  57. data/test/encoding_test.rb +0 -52
  58. data/test/error_test.rb +0 -116
  59. data/test/eval_test.rb +0 -269
  60. data/test/flush_cache_test.rb +0 -98
  61. data/test/full/ast_reload_test.rb +0 -39
  62. data/test/full/replace_eval_test.rb +0 -431
  63. data/test/irb_test.rb +0 -41
  64. data/test/lambda_test.rb +0 -63
  65. data/test/load_path_test.rb +0 -75
  66. data/test/load_test.rb +0 -123
  67. data/test/main.rb +0 -129
  68. data/test/nested_test.rb +0 -29
  69. data/test/readme_test.rb +0 -14
  70. data/test/recursive_eval_test.rb +0 -51
  71. data/test/redefine_method_test.rb +0 -83
  72. data/test/rubygems_test.rb +0 -25
  73. data/test/rubyspec_test.rb +0 -37
  74. data/test/singleton_test.rb +0 -25
  75. data/test/stdlib_test.rb +0 -13
  76. data/test/thread_test.rb +0 -43
  77. data/test/to_ast/to_ast_feature_test.rb +0 -11
  78. data/test/to_ruby/to_ruby_feature_test.rb +0 -11
  79. data/test/to_ruby/to_ruby_test.rb +0 -99
@@ -1,431 +0,0 @@
1
- require 'main'
2
-
3
- class FullReplaceEvalTest < ReplaceEvalTest
4
- RESULT = {}
5
-
6
- def setup
7
- RESULT.clear
8
- end
9
-
10
- DEFINE_A = lambda do
11
- class A
12
- eval %{
13
- def f(x, y)
14
- x**y
15
- end
16
- }
17
- end
18
- end
19
-
20
- def test_a_def_method
21
- DEFINE_A.call
22
- assert_equal binop_def(:f, :**), A.instance_method(:f).to_ast
23
- end
24
-
25
- DEFINE_B = lambda do
26
- eval %{
27
- class B
28
- def f(x, y)
29
- x / y
30
- end
31
- end
32
- }
33
- end
34
-
35
- def test_def_class
36
- DEFINE_B.call
37
- assert_equal "FullReplaceEvalTest::B", B.name
38
- assert_equal binop_def(:f, :/), B.instance_method(:f).to_ast
39
- end
40
-
41
- def moo
42
- a = 22
43
- ignore(a)
44
- binding
45
- end
46
-
47
- def test_binding_eval
48
- assert_equal 22, moo.eval("a")
49
- assert_equal 22, moo.eval("lambda { a }").call
50
- end
51
-
52
- DEFINE_P = lambda do
53
- class P
54
- eval %{
55
- def f
56
- @x = 33
57
- RESULT[:old] = live_ast_original_eval("@x")
58
- RESULT[:new] = eval("@x")
59
- end
60
- }
61
- end
62
- end
63
-
64
- def test_const_lookup
65
- DEFINE_P.call
66
- P.new.f
67
-
68
- assert_equal 33, RESULT[:old]
69
- assert_equal 33, RESULT[:new]
70
- end
71
-
72
- def test_const_lookup_2
73
- Class.new do
74
- eval %{
75
- def f
76
- @x = 44
77
- RESULT[:old] = live_ast_original_eval("@x")
78
- RESULT[:new] = eval("@x")
79
- end
80
- }
81
- end.new.f
82
-
83
- assert_equal 44, RESULT[:old]
84
- assert_equal 44, RESULT[:new]
85
- end
86
-
87
- DEFINE_QS = lambda do
88
- class Q
89
- class R
90
- eval %{
91
- def f
92
- RESULT[:qr] = 55
93
- end
94
- }
95
- end
96
- end
97
-
98
- module S
99
- class T
100
- eval %{
101
- def f
102
- RESULT[:st] = 66
103
- end
104
- }
105
- end
106
- end
107
- end
108
-
109
- def test_const_lookup_3
110
- DEFINE_QS.call
111
- Q::R.new.f
112
- S::T.new.f
113
- assert_equal 55, RESULT[:qr]
114
- assert_equal 66, RESULT[:st]
115
- end
116
-
117
- def test_eval_arg_error
118
- [[], (1..5).to_a].each do |args|
119
- orig = assert_raises ArgumentError do
120
- live_ast_original_eval(*args)
121
- end
122
- live = assert_raises ArgumentError do
123
- eval(*args)
124
- end
125
- assert_equal orig.message, live.message
126
- end
127
- end
128
-
129
- def test_singleton_eval_arg_error
130
- [[], (1..5).to_a].each do |args|
131
- orig = assert_raises ArgumentError do
132
- Kernel.live_ast_original_singleton_eval(*args)
133
- end
134
- live = assert_raises ArgumentError do
135
- Kernel.eval(*args)
136
- end
137
- assert_equal orig.message, live.message
138
- end
139
- end
140
-
141
- def test_instance_eval_arg_error_no_block
142
- [[], ('a'..'z').to_a].each do |args|
143
- orig = assert_raises ArgumentError do
144
- Object.new.live_ast_original_instance_eval(*args)
145
- end
146
- live = assert_raises ArgumentError do
147
- Object.new.instance_eval(*args)
148
- end
149
- assert_equal orig.message, live.message
150
- end
151
-
152
- orig = assert_raises TypeError do
153
- Object.new.live_ast_original_instance_eval(nil)
154
- end
155
- live = assert_raises TypeError do
156
- Object.new.instance_eval(nil)
157
- end
158
- assert_equal orig.message, live.message
159
-
160
- [[nil], [Object.new], [3], [4, 3, 2], (1..10).to_a].each do |args|
161
- orig = assert_raises ArgumentError, TypeError do
162
- Object.new.live_ast_original_instance_eval(*args)
163
- end
164
- live = assert_raises ArgumentError, TypeError do
165
- Object.new.instance_eval(*args)
166
- end
167
- assert_equal orig.message, live.message
168
- assert_equal orig.class, live.class
169
- end
170
- end
171
-
172
- describe "instance_eval argument errors" do
173
- before do
174
- require 'live_ast/full'
175
- end
176
-
177
- let(:orig) {
178
- assert_raises(ArgumentError, TypeError) do
179
- Object.new.live_ast_original_instance_eval(*args)
180
- end
181
- }
182
- let(:live) {
183
- assert_raises(ArgumentError, TypeError) do
184
- Object.new.instance_eval(*args)
185
- end
186
- }
187
-
188
- describe "when the second argument is nil" do
189
- let(:args) { ['1', nil] }
190
- it "raises the same error as the original" do
191
- assert_equal orig.message, live.message
192
- assert_equal orig.class, live.class
193
- end
194
- end
195
- end
196
-
197
- def test_instance_eval_arg_error_with_block
198
- orig = assert_raises ArgumentError do
199
- Object.new.live_ast_original_instance_eval(3, 4, 5) {}
200
- end
201
- live = assert_raises ArgumentError do
202
- Object.new.instance_eval(3, 4, 5) {}
203
- end
204
- assert_equal orig.message, live.message
205
- end
206
-
207
- def test_instance_eval_block
208
- orig = {}
209
- orig.live_ast_original_instance_eval do
210
- self[:x] = 33
211
- end
212
- assert_equal 33, orig[:x]
213
-
214
- live = {}
215
- live.instance_eval do
216
- self[:x] = 44
217
- end
218
- assert_equal 44, live[:x]
219
- end
220
-
221
- def test_instance_eval_string
222
- orig = {}
223
- orig.live_ast_original_instance_eval %{
224
- self[:x] = 33
225
- }
226
- assert_equal 33, orig[:x]
227
-
228
- live = {}
229
- live.instance_eval %{
230
- self[:x] = 44
231
- }
232
- assert_equal 44, live[:x]
233
- end
234
-
235
- def test_instance_eval_binding
236
- x = 33
237
- orig = {}
238
- orig.live_ast_original_instance_eval %{
239
- self[:x] = x
240
- self[:f] = lambda { "f" }
241
- }
242
- assert_equal x, orig[:x]
243
-
244
- y = 44
245
- live = {}
246
- live.instance_eval %{
247
- self[:y] = y
248
- self[:g] = lambda { "g" }
249
- }
250
- assert_equal y, live[:y]
251
-
252
- assert_equal no_arg_block(:lambda, "g"), live[:g].to_ast
253
- end
254
-
255
- def test_module_eval_block
256
- orig = Module.new
257
- orig.live_ast_original_module_eval do
258
- def f
259
- "orig"
260
- end
261
- end
262
- orig.instance_method(:f)
263
-
264
- live = Module.new
265
- live.module_eval do
266
- def f
267
- "live"
268
- end
269
- end
270
- assert_equal no_arg_def(:f, "live"),
271
- live.instance_method(:f).to_ast
272
- end
273
-
274
- def test_module_eval_string
275
- orig = Module.new
276
- orig.live_ast_original_module_eval %{
277
- def f
278
- "orig"
279
- end
280
- }
281
- orig.instance_method(:f)
282
-
283
- live = Module.new
284
- live.module_eval %{
285
- def h
286
- "live h"
287
- end
288
- }
289
- assert_equal no_arg_def(:h, "live h"),
290
- live.instance_method(:h).to_ast
291
- end
292
-
293
- def test_module_eval_binding
294
- x = 33
295
- ignore(x)
296
- orig = Class.new
297
- orig.live_ast_original_module_eval %{
298
- define_method :value do
299
- x
300
- end
301
- define_method :f do
302
- lambda { }
303
- end
304
- }
305
- assert_equal 33, orig.new.value
306
- assert orig.new.f.is_a?(Proc)
307
-
308
- y = 44
309
- ignore(y)
310
- live = Class.new
311
- live.module_eval %{
312
- define_method :value do
313
- y
314
- end
315
- define_method :g do
316
- lambda { "g return" }
317
- end
318
- }
319
- assert_equal 44, live.new.value
320
- assert live.new.g.is_a?(Proc)
321
-
322
- assert_equal no_arg_block(:lambda, "g return"),
323
- live.new.g.to_ast
324
- end
325
-
326
- def test_module_eval_file_line
327
- klass = Module.new
328
-
329
- orig =
330
- klass.live_ast_original_module_eval("[__FILE__, __LINE__]", "test", 102)
331
- live =
332
- klass.module_eval("[__FILE__, __LINE__]", "test", 102)
333
-
334
- unfixable do
335
- assert_equal orig, live
336
- end
337
-
338
- live.first.sub!(/#{Regexp.quote LiveAST::Linker::REVISION_TOKEN}.*\Z/, "")
339
- assert_equal orig, live
340
- assert_equal ["test", 102], live
341
- end
342
-
343
- def test_module_eval_to_str
344
- file = MiniTest::Mock.new
345
- file.expect(:to_str, "zebra.rb")
346
- Class.new.module_eval("33 + 44", file)
347
- file.verify
348
- end
349
-
350
- def test_eval_not_hosed
351
- assert_equal 3, eval("1 + 2")
352
- 1.times do
353
- assert_equal 3, eval("1 + 2")
354
- end
355
-
356
- assert_equal(3, eval(%{ eval("1 + 2") }))
357
- 1.times do
358
- assert_equal(3, eval(%{ eval("1 + 2") }))
359
- end
360
-
361
- x = 5
362
- eval %{
363
- assert_equal(3, eval(' eval("1 + 2") '))
364
- x = 6
365
- }
366
- assert_equal 6, x
367
- end
368
-
369
- def test_local_var_collision
370
- args = 33
371
- ignore(args)
372
-
373
- assert_equal 33, live_ast_original_eval("args")
374
- assert_equal 33, eval("args")
375
-
376
- assert_equal 33, Kernel.live_ast_original_singleton_eval("args")
377
- assert_equal 33, Kernel.eval("args")
378
-
379
- assert_equal 33, binding.live_ast_original_binding_eval("args")
380
- assert_equal 33, binding.eval("args")
381
-
382
- assert_equal 33, Object.new.live_ast_original_instance_eval("args")
383
- assert_equal 33, Object.new.instance_eval("args")
384
-
385
- assert_equal 33, Class.new.live_ast_original_module_eval("args")
386
- assert_equal 33, Class.new.module_eval("args")
387
-
388
- assert_equal 33, Class.new.live_ast_original_instance_eval("args")
389
- assert_equal 33, Class.new.instance_eval("args")
390
- end
391
-
392
- def test_location_without_binding
393
- expected = ["(eval)", 2]
394
-
395
- assert_equal expected, live_ast_original_eval("\n[__FILE__, __LINE__]")
396
-
397
- unfixable do
398
- assert_equal expected, eval("\n[__FILE__, __LINE__]")
399
- end
400
-
401
- file, line = eval("\n[__FILE__, __LINE__]")
402
- file = LiveAST.strip_token file
403
-
404
- assert_equal expected, [file, line]
405
- end
406
-
407
- DEFINE_BO_TEST = lambda do
408
- class BasicObject
409
- Kernel.eval("1 + 1")
410
- end
411
- end
412
-
413
- def test_basic_object
414
- ::BasicObject.new.instance_eval %{
415
- t = 33
416
- ::FullReplaceEvalTest::RESULT[:bo_test] = t + 44
417
- }
418
- assert_equal 77, RESULT[:bo_test]
419
- end
420
-
421
- class Z
422
- def initialize
423
- @t = 99
424
- end
425
- end
426
-
427
- def test_instance_variables
428
- assert_equal 99, Z.new.instance_eval { @t }
429
- assert_equal 99, Z.new.instance_eval("@t")
430
- end
431
- end
data/test/irb_test.rb DELETED
@@ -1,41 +0,0 @@
1
- require_relative 'main'
2
- require 'live_ast/irb_spy'
3
-
4
- class IRBTest < RegularTest
5
- def with_module(parent, child)
6
- parent.const_set child, Module.new
7
- begin
8
- yield
9
- ensure
10
- parent.send :remove_const, child
11
- end
12
- end
13
-
14
- def setup
15
- LiveAST::IRBSpy.history = [
16
- nil,
17
- "class Foo; def bar; 'bar'; end; end",
18
- "class Bar",
19
- " def foo",
20
- " 'foo'",
21
- " end",
22
- "end"
23
- ]
24
- end
25
-
26
- def test_single_line
27
- with_module(Object, :IRB) do
28
- expected = no_arg_def(:bar, "bar")
29
- result = LiveAST::Linker.fetch_from_cache("(irb)", 1)
30
- assert_equal expected, result
31
- end
32
- end
33
-
34
- def test_multiple_lines
35
- with_module(Object, :IRB) do
36
- expected = no_arg_def(:foo, "foo")
37
- result = LiveAST::Linker.fetch_from_cache("(irb)", 3)
38
- assert_equal expected, result
39
- end
40
- end
41
- end
data/test/lambda_test.rb DELETED
@@ -1,63 +0,0 @@
1
- require_relative 'main'
2
-
3
- class LambdaTest < RegularTest
4
- def test_block_braces_multiline
5
- block = return_block { |x, y|
6
- x + y
7
- }
8
-
9
- expected = binop_block(:return_block, :+)
10
- assert_equal expected, block.to_ast
11
- end
12
-
13
- def test_block_do_end_multiline
14
- block = return_block do |x, y|
15
- x * y
16
- end
17
-
18
- expected = binop_block(:return_block, :*)
19
- assert_equal expected, block.to_ast
20
- end
21
-
22
- def test_lambda
23
- a = lambda { |x, y| x - y }
24
-
25
- expected = binop_block(:lambda, :-)
26
- assert_equal expected, a.to_ast
27
- end
28
-
29
- def test_stabby_lambda
30
- a = ->(x, y) { x - y }
31
-
32
- expected = binop_block(:lambda, :-)
33
- assert_equal expected, a.to_ast
34
- end
35
-
36
- def test_proc
37
- a = proc { |x, y| x / y }
38
-
39
- expected = binop_block(:proc, :/)
40
- assert_equal expected, a.to_ast
41
- end
42
-
43
- def test_proc_new
44
- a = Proc.new { |x, y| x + y }
45
-
46
- expected = binop_proc_new(:+)
47
- assert_equal expected, a.to_ast
48
- end
49
-
50
- def test_block_braces_one_line
51
- block = return_block { |x, y| x * y }
52
-
53
- expected = binop_block(:return_block, :*)
54
- assert_equal expected, block.to_ast
55
- end
56
-
57
- def test_block_do_end_one_line
58
- block = return_block do |x, y| x - y end
59
-
60
- expected = binop_block(:return_block, :-)
61
- assert_equal expected, block.to_ast
62
- end
63
- end
@@ -1,75 +0,0 @@
1
- require_relative 'main'
2
-
3
- class LoadPathTest < BaseTest
4
- include FileUtils
5
-
6
- def test_load_path
7
- $LOAD_PATH.unshift DATA_DIR
8
- begin
9
- check_load
10
- check_errors
11
- temp_file nil, "foo.rb" do
12
- Dir.chdir(DATA_DIR) do
13
- compare_load_errors("/foo.rb")
14
- end
15
- end
16
- ensure
17
- $LOAD_PATH.shift
18
- end
19
- end
20
-
21
- def test_chdir
22
- Dir.chdir(DATA_DIR) do
23
- check_load
24
- check_errors
25
- end
26
- end
27
-
28
- def check_load
29
- code1 = %{
30
- def hello
31
- "password"
32
- end
33
- }
34
-
35
- code2 = %{
36
- def goodbye
37
- "bubbleboy"
38
- end
39
- }
40
-
41
- temp_file code1, "foo.rb" do |path|
42
- load "foo.rb"
43
- assert_equal "password", hello
44
-
45
- write_file path, code2
46
-
47
- LiveAST.load "foo.rb"
48
- assert_equal "bubbleboy", goodbye
49
- end
50
- ensure
51
- Object.send(:remove_method, :hello)
52
- Object.send(:remove_method, :goodbye)
53
- end
54
-
55
- def compare_load_errors(file)
56
- error = assert_raises LoadError do
57
- LiveAST.load file
58
- end
59
- assert_equal "cannot load such file -- #{file}", error.message
60
- end
61
-
62
- def check_errors
63
- temp_file "# do nothing", "foo.rb" do |_path|
64
- [
65
- "foo",
66
- "",
67
- "/usr",
68
- ".",
69
- "..",
70
- ].each do |file|
71
- compare_load_errors(file)
72
- end
73
- end
74
- end
75
- end
data/test/load_test.rb DELETED
@@ -1,123 +0,0 @@
1
- require_relative 'main'
2
- require_relative '../devel/levitate'
3
-
4
- class LoadFileTest < BaseTest
5
- class << self
6
- attr_accessor :flag
7
- end
8
-
9
- def test_a_no_locals_created
10
- code = %{
11
- LoadFileTest.flag = :code_a
12
- FOO = 77
13
- x = 33
14
- y = 99
15
- }
16
-
17
- temp_file code do |file|
18
- ret = LiveAST.load file
19
- assert_equal true, ret
20
- assert_equal :code_a, LoadFileTest.flag
21
-
22
- assert_raises NameError do
23
- eval("x", TOPLEVEL_BINDING)
24
- end
25
-
26
- assert_equal 77, ::FOO
27
- end
28
- end
29
-
30
- def test_b_no_locals_modified
31
- code = %{
32
- LoadFileTest.flag = :code_b
33
- r = 55
34
- }
35
-
36
- temp_file code do |file|
37
- eval("r = 66", TOPLEVEL_BINDING)
38
-
39
- ret = LiveAST.load file
40
- assert_equal true, ret
41
- assert_equal :code_b, LoadFileTest.flag
42
-
43
- actual = eval("r", TOPLEVEL_BINDING)
44
- assert_equal 66, actual
45
- end
46
- end
47
-
48
- def test_c_wrap
49
- code = %{
50
- LoadFileTest.flag = :code_c
51
- ZOOM = 111
52
- }
53
-
54
- temp_file code do |file|
55
- ret = LiveAST.load file, true
56
- assert_equal true, ret
57
- assert_equal :code_c, LoadFileTest.flag
58
-
59
- assert_raises NameError do
60
- ZOOM
61
- end
62
- end
63
- end
64
-
65
- def self.from_d
66
- self.flag = :code_d
67
- end
68
-
69
- def test_d_empty_locals_list
70
- code = %{
71
- LoadFileTest.from_d
72
- }
73
-
74
- temp_file code do |file|
75
- LiveAST.load file
76
- assert_equal :code_d, LoadFileTest.flag
77
- end
78
- end
79
-
80
- def test_verbose_respected
81
- lib = File.expand_path(File.dirname(__FILE__) + "/../lib")
82
-
83
- [
84
- # respects a loaded file setting $VERBOSE = true
85
- [
86
- "false",
87
- "true",
88
- lambda { |file|
89
- Levitate.run file
90
- }
91
- ],
92
-
93
- # unfixable: does not respect a loaded file setting $VERBOSE = nil
94
- [
95
- "true",
96
- "false",
97
- lambda { |file|
98
- unfixable do
99
- assert_nothing_raised do
100
- Levitate.run file
101
- end
102
- end
103
- }
104
- ]
105
- ].each do |main_value, loaded_value, action|
106
- loaded_code = %{
107
- $VERBOSE = #{loaded_value}
108
- }
109
-
110
- temp_file loaded_code do |loaded_file|
111
- main_code = %{
112
- $LOAD_PATH.unshift '#{lib}'
113
- require 'live_ast/base'
114
- toplevel_local = 444
115
- $VERBOSE = #{main_value}
116
- LiveAST.load '#{loaded_file}'
117
- $VERBOSE == #{loaded_value} or exit(1)
118
- }
119
- temp_file main_code, &action
120
- end
121
- end
122
- end
123
- end