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/