aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-01-07 06:42:13 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-01-07 06:42:13 +0000
commite489dc1ff42ad3027319d7d01f4885164fdb410a (patch)
treeef845ae24baa7966a7df56986b474718fa6aeb3d
parent38da1a5398f146a36910fde34b72dc9b3aa7918f (diff)
downloadruby-e489dc1ff42ad3027319d7d01f4885164fdb410a.tar.gz
parse.y: bare kwrest_mark
* parse.y (f_kwrest): allow bare kwrest_mark as valid syntax. its semantics is still undefined. [Bug #7662] [ruby-core:51269] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38725 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--parse.y4
-rw-r--r--test/ruby/test_keyword.rb8
3 files changed, 17 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index aed7245394..67c2618d62 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Jan 7 15:42:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_kwrest): allow bare kwrest_mark as valid syntax. its
+ semantics is still undefined. [Bug #7662] [ruby-core:51269]
+
Mon Jan 7 15:31:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (f_kwrest): reject duplicated kwrest argument name.
diff --git a/parse.y b/parse.y
index 56c9425a29..8a541a880d 100644
--- a/parse.y
+++ b/parse.y
@@ -4685,6 +4685,10 @@ f_kwrest : kwrest_mark tIDENTIFIER
shadowing_lvar(get_id($2));
$$ = $2;
}
+ | kwrest_mark
+ {
+ $$ = internal_id();
+ }
;
f_opt : tIDENTIFIER '=' arg_value
diff --git a/test/ruby/test_keyword.rb b/test/ruby/test_keyword.rb
index 8fe69b44fb..3685024991 100644
--- a/test/ruby/test_keyword.rb
+++ b/test/ruby/test_keyword.rb
@@ -1,4 +1,5 @@
require 'test/unit'
+require_relative 'envutil'
class TestKeywordArguments < Test::Unit::TestCase
def f1(str: "foo", num: 424242)
@@ -266,4 +267,11 @@ class TestKeywordArguments < Test::Unit::TestCase
assert_equal(expect, rest_keyrest(*expect), bug7665)
assert_equal(expect, proc {|*args, **opt| next *args, opt}.call(*expect), bug7665)
end
+
+ def test_bare_kwrest
+ # valid syntax, but its semantics is undefined
+ assert_valid_syntax("def bug7662(**) end")
+ assert_valid_syntax("def bug7662(*, **) end")
+ assert_valid_syntax("def bug7662(a, **) end")
+ end
end