From: Ryan Davis Date: 2007-11-29T07:46:42+09:00 Subject: -v affects parse tree, causes tests to fail in ParseTree The problem is that the void_expr macro is used in void_stmts and modifies the tree, but only if -v is on: #define void_expr(node) void_expr0((node) = remove_begin(node)) static void void_stmts(node) NODE *node; { if (!RTEST(ruby_verbose)) return; if (!node) return; if (nd_type(node) != NODE_BLOCK) return; for (;;) { if (!node->nd_next) return; void_expr(node->nd_head); // <--- modifies tree if -v !!! node = node->nd_next; } } ---- This can be seen here: 537 % ruby -v -I.:lib:test -e "require 'test/unit'; require 'test/ test_parse_tree.rb'" ruby 1.8.6 (2007-06-07 patchlevel 36) [universal-darwin9.0] nuking /Users/ryan/.ruby_inline Loaded ParseTree 2.0.3 from ./lib/parse_tree.rb Loaded suite -e Started ...................................................................................................................................................................................................................... Finished in 0.080023 seconds. 214 tests, 811 assertions, 0 failures, 0 errors 537 % ruby -I.:lib:test -e "require 'test/unit'; require 'test/ test_parse_tree.rb'" nuking /Users/ryan/.ruby_inline Loaded ParseTree 2.0.3 from ./lib/parse_tree.rb Loaded suite -e Started ...............F ...................................................................................................................................................................................................... Finished in 0.098921 seconds. 1) Failure: test_begin_rescue_twice(TestParseTree) [./test/pt_testcase.rb:1758]: failed on input: "\nbegin\nrescue => mes\nend\n\nbegin\nrescue => mes \nend\n". <[:block, [:rescue, [:resbody, nil, [:lasgn, :mes, [:gvar, :$!]]]], [:begin, [:rescue, [:resbody, nil, [:lasgn, :mes, [:gvar, :$!]]]]]]> expected but was <[:block, [:begin, [:rescue, [:resbody, nil, [:lasgn, :mes, [:gvar, :$!]]]]], [:begin, [:rescue, [:resbody, nil, [:lasgn, :mes, [:gvar, :$!]]]]]]>. 214 tests, 810 assertions, 1 failures, 0 errors