summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYusuke Endoh <mame@ruby-lang.org>2020-02-15 07:27:03 (GMT)
committerNARUSE, Yui <naruse@airemix.jp>2020-03-13 13:38:05 (GMT)
commit2339be74e737b4c5f5330f845af2e7db0c7450e1 (patch)
treecbb396f4381fd4d5061c3d398af9cf01aa70a86a
parentc7e0ce67430b5e312eb626a2c2f4b6a810b3b68b (diff)
lib/drb/drb.rb: Use ruby2_keywords for keyword separation
[Bug #16634] (cherry picked from commit fb472ca7adbaceb35aae1b3a6b948720ffc9eb53)
-rw-r--r--lib/drb/drb.rb2
-rw-r--r--test/drb/test_drb.rb16
-rw-r--r--test/drb/ut_drb.rb12
3 files changed, 29 insertions, 1 deletions
diff --git a/lib/drb/drb.rb b/lib/drb/drb.rb
index e2aaf70..4d3ea36 100644
--- a/lib/drb/drb.rb
+++ b/lib/drb/drb.rb
@@ -1131,7 +1131,7 @@ module DRb
end
# Routes method calls to the referenced remote object.
- def method_missing(msg_id, *a, &b)
+ ruby2_keywords def method_missing(msg_id, *a, &b)
if DRb.here?(@uri)
obj = DRb.to_obj(@ref)
DRb.current_server.check_insecure_method(obj, msg_id)
diff --git a/test/drb/test_drb.rb b/test/drb/test_drb.rb
index b792349..47b2966 100644
--- a/test/drb/test_drb.rb
+++ b/test/drb/test_drb.rb
@@ -349,4 +349,20 @@ class TestDRbTCP < Test::Unit::TestCase
end
end
+class TestBug16634 < Test::Unit::TestCase
+ include DRbBase
+
+ def setup
+ super
+ setup_service 'ut_drb.rb'
+ end
+
+ def test_bug16634
+ assert_equal(42, @there.keyword_test1(a: 42))
+ assert_equal("default", @there.keyword_test2)
+ assert_equal(42, @there.keyword_test2(b: 42))
+ assert_equal({:a=>42, :b=>42}, @there.keyword_test3(a: 42, b: 42))
+ end
+end
+
end
diff --git a/test/drb/ut_drb.rb b/test/drb/ut_drb.rb
index b1306d0..e7bd2df 100644
--- a/test/drb/ut_drb.rb
+++ b/test/drb/ut_drb.rb
@@ -148,6 +148,18 @@ class DRbEx
end
end
+ def keyword_test1(a:)
+ a
+ end
+
+ def keyword_test2(b: "default")
+ b
+ end
+
+ def keyword_test3(**opt)
+ opt
+ end
+
private
def call_private_method
true