From e489dc1ff42ad3027319d7d01f4885164fdb410a Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 7 Jan 2013 06:42:13 +0000 Subject: 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 --- ChangeLog | 5 +++++ parse.y | 4 ++++ test/ruby/test_keyword.rb | 8 ++++++++ 3 files changed, 17 insertions(+) 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 + + * 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 * 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 -- cgit v1.2.3