summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-02-02 13:46:46 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-02-02 13:46:46 +0000
commit3da0a0cead8eb70dba54d291151d2e9458a0159d (patch)
tree49f5927d7a823dd585085de02cd6aad58f8d9e3b
parent484a6ffb788fd0f0ee5fc6448125a7e0980c0c4d (diff)
merge revision(s) 44630,44631: [Backport #9403]
* lib/delegate.rb (Delegator): keep source information methods which start and end with '__'. [ruby-core:58572] [Bug #9155] which start and end with '__'. [ruby-core:59718] [Bug #9403] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@44794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--lib/delegate.rb2
-rw-r--r--test/test_delegate.rb57
-rw-r--r--version.h6
4 files changed, 66 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 601436f326..65ab2491f7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sun Feb 2 22:39:28 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator): keep source information methods
+ which start and end with '__'. [ruby-core:59718] [Bug #9403]
+
Fri Jan 31 12:10:16 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
* proc.c (mnew_from_me): keep iclass as-is, to make inheritance
diff --git a/lib/delegate.rb b/lib/delegate.rb
index c33f7e40df..d7902292f0 100644
--- a/lib/delegate.rb
+++ b/lib/delegate.rb
@@ -48,7 +48,7 @@ class Delegator < BasicObject
undef_method m
end
private_instance_methods.each do |m|
- if /\Ablock_given\?\z|iterator\?\z|\A__raise__\z/ =~ m
+ if /\Ablock_given\?\z|iterator\?\z|\A__.*__\z/ =~ m
next
end
undef_method m
diff --git a/test/test_delegate.rb b/test/test_delegate.rb
index ca65ef3daa..6270cc61b6 100644
--- a/test/test_delegate.rb
+++ b/test/test_delegate.rb
@@ -180,4 +180,61 @@ class TestDelegateClass < Test::Unit::TestCase
x = assert_nothing_raised(ArgumentError, bug9155) {break Bug9155.new(1)}
assert_equal(1, x.to_i, bug9155)
end
+
+ class Bug9403
+ Name = '[ruby-core:59718] [Bug #9403]'
+ SD = SimpleDelegator.new(new)
+ class << SD
+ def method_name
+ __method__
+ end
+ def callee_name
+ __callee__
+ end
+ alias aliased_name callee_name
+ def dir_name
+ __dir__
+ end
+ end
+ dc = DelegateClass(self)
+ dc.class_eval do
+ def method_name
+ __method__
+ end
+ def callee_name
+ __callee__
+ end
+ alias aliased_name callee_name
+ def dir_name
+ __dir__
+ end
+ end
+ DC = dc.new(new)
+ end
+
+ def test_method_in_simple_delegator
+ assert_equal(:method_name, Bug9403::SD.method_name, Bug9403::Name)
+ end
+
+ def test_callee_in_simple_delegator
+ assert_equal(:callee_name, Bug9403::SD.callee_name, Bug9403::Name)
+ assert_equal(:aliased_name, Bug9403::SD.aliased_name, Bug9403::Name)
+ end
+
+ def test_dir_in_simple_delegator
+ assert_equal(__dir__, Bug9403::SD.dir_name, Bug9403::Name)
+ end
+
+ def test_method_in_delegator_class
+ assert_equal(:method_name, Bug9403::DC.method_name, Bug9403::Name)
+ end
+
+ def test_callee_in_delegator_class
+ assert_equal(:callee_name, Bug9403::DC.callee_name, Bug9403::Name)
+ assert_equal(:aliased_name, Bug9403::DC.aliased_name, Bug9403::Name)
+ end
+
+ def test_dir_in_delegator_class
+ assert_equal(__dir__, Bug9403::DC.dir_name, Bug9403::Name)
+ end
end
diff --git a/version.h b/version.h
index 1bc3dec1f1..a62e4f128d 100644
--- a/version.h
+++ b/version.h
@@ -1,10 +1,10 @@
#define RUBY_VERSION "2.1.1"
-#define RUBY_RELEASE_DATE "2014-02-01"
-#define RUBY_PATCHLEVEL 14
+#define RUBY_RELEASE_DATE "2014-02-02"
+#define RUBY_PATCHLEVEL 15
#define RUBY_RELEASE_YEAR 2014
#define RUBY_RELEASE_MONTH 2
-#define RUBY_RELEASE_DAY 1
+#define RUBY_RELEASE_DAY 2
#include "ruby/version.h"