diff --git a/ChangeLog b/ChangeLog index 265cb4049b..1a0677c7e9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Mon May 14 16:28:36 2012 Nobuyoshi Nakada + + * parse.y (f_arglist): should reset lexical states after empty + argument list with no parenthesis as well as parenthesized list, + so that reserved name method definition work. [ruby-dev:45626] + [Bug #6403] + Mon May 14 00:14:24 2012 CHIKANAGA Tomoyuki * enumerator.c (lazy_take_func, lazy_take): multiple calls of diff --git a/parse.y b/parse.y index 098e946abd..9f9093b0bb 100644 --- a/parse.y +++ b/parse.y @@ -4451,6 +4451,8 @@ f_arglist : '(' f_args rparen | f_args term { $$ = $1; + lex_state = EXPR_BEG; + command_start = TRUE; } ; diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index b792858090..7eef6d6066 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -176,6 +176,11 @@ class TestSyntax < Test::Unit::TestCase assert_valid_syntax("p begin 1.times do 1 end end", __FILE__, bug6419) end + def test_reserved_method_no_args + bug6403 = '[ruby-dev:45626]' + assert_valid_syntax("def self; :foo; end", __FILE__, bug6403) + end + private def not_label(x) @result = x; @not_label ||= nil end