ruby-changes:6102
From: nobu <ko1@a...>
Date: Fri, 27 Jun 2008 21:25:00 +0900 (JST)
Subject: [ruby-changes:6102] Ruby:r17614 (mvm): * merge from trunk r17600:17612.
nobu 2008-06-27 21:24:37 +0900 (Fri, 27 Jun 2008) New Revision: 17614 Added files: branches/mvm/.merged-trunk-revision Modified files: branches/mvm/ChangeLog branches/mvm/lib/erb.rb branches/mvm/parse.y branches/mvm/test/erb/test_erb.rb Log: * merge from trunk r17600:17612. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/mvm/lib/erb.rb?r1=17614&r2=17613&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/mvm/test/erb/test_erb.rb?r1=17614&r2=17613&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/mvm/ChangeLog?r1=17614&r2=17613&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/mvm/parse.y?r1=17614&r2=17613&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/mvm/.merged-trunk-revision?revision=17614&view=markup http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/mvm/.merged-trunk-revision?r1=17614&r2=17613&diff_format=u Index: mvm/ChangeLog =================================================================== --- mvm/ChangeLog (revision 17613) +++ mvm/ChangeLog (revision 17614) @@ -5,6 +5,22 @@ * lib/test/unit/ui/console/testrunner.rb (TestRunner#finished): ditto. +Fri Jun 27 17:45:17 2008 Kazuhiro NISHIYAMA <zn@m...> + + * lib/erb.rb: adjust line number for magic comment. + + * test/erb/test_erb.rb: add tests for def_method. + +Fri Jun 27 14:29:07 2008 Yukihiro Matsumoto <matz@r...> + + * parse.y (primary): empty not should call '!' on nil. + cf [ruby-dev:35227] + +Fri Jun 27 14:25:52 2008 Nobuyoshi Nakada <nobu@r...> + + * vm.c (vm_eval_body): if thrown exception is frozen, reraise it to + create a new instance. + Fri Jun 27 13:29:26 2008 Nobuyoshi Nakada <nobu@r...> * include/ruby/intern.h (rb_str_new2, rb_tainted_str_new2, Index: mvm/lib/erb.rb =================================================================== --- mvm/lib/erb.rb (revision 17613) +++ mvm/lib/erb.rb (revision 17614) @@ -736,16 +736,16 @@ if @safe_level th = Thread.start { $SAFE = @safe_level - eval(@src, b, (@filename || '(erb)'), 1) + eval(@src, b, (@filename || '(erb)'), 0) } return th.value else - return eval(@src, b, (@filename || '(erb)'), 1) + return eval(@src, b, (@filename || '(erb)'), 0) end end def def_method(mod, methodname, fname='(ERB)') # :nodoc: - mod.module_eval("def #{methodname}\n" + self.src + "\nend\n", fname, 0) + mod.module_eval("def #{methodname}\n" + self.src + "\nend\n", fname, -1) end def def_module(methodname='erb') # :nodoc: Index: mvm/parse.y =================================================================== --- mvm/parse.y (revision 17613) +++ mvm/parse.y (revision 17614) @@ -2624,7 +2624,7 @@ | keyword_not '(' rparen { /*%%%*/ - $$ = NEW_LIT(Qtrue); + $$ = call_uni_op(cond(NEW_NIL()), '!'); /*% $$ = dispatch2(unary, ripper_intern("not"), Qnil); %*/ Index: mvm/.merged-trunk-revision =================================================================== --- mvm/.merged-trunk-revision (revision 0) +++ mvm/.merged-trunk-revision (revision 17614) @@ -0,0 +1 @@ +17612 Property changes on: mvm/.merged-trunk-revision ___________________________________________________________________ Name: svn:eol-style + LF Index: mvm/test/erb/test_erb.rb =================================================================== --- mvm/test/erb/test_erb.rb (revision 17613) +++ mvm/test/erb/test_erb.rb (revision 17614) @@ -220,7 +220,7 @@ class Bar; end - def test_def_method + def test_def_erb_method assert(! Bar.new.respond_to?('hello')) Bar.module_eval do extend ERB::DefMethod @@ -237,6 +237,31 @@ assert(Bar.new.respond_to?('hello_world')) end + class DefMethodWithoutFname; end + class DefMethodWithFname; end + + def test_def_method_without_filename + erb = ERB.new("<% raise ::TestERB::MyError %>") + erb.filename = "test filename" + assert(! DefMethodWithoutFname.new.respond_to?('my_error')) + erb.def_method(DefMethodWithoutFname, 'my_error') + e = assert_raise(::TestERB::MyError) { + DefMethodWithoutFname.new.my_error + } + assert_match(/\A\(ERB\):1\b/, e.backtrace[0]) + end + + def test_def_method_with_fname + erb = ERB.new("<% raise ::TestERB::MyError %>") + erb.filename = "test filename" + assert(! DefMethodWithFname.new.respond_to?('my_error')) + erb.def_method(DefMethodWithFname, 'my_error', 'test fname') + e = assert_raise(::TestERB::MyError) { + DefMethodWithFname.new.my_error + } + assert_match(/\Atest fname:1\b/, e.backtrace[0]) + end + def test_escape src = <<EOS 1.<%% : <%="<%%"%> -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/