From 45f6cdcdd3d11de1bf7691f732bc967880b4caad Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 14 May 2012 07:28:36 +0000 Subject: [PATCH] Bug #6403: reset states after empty args * 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] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35644 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ parse.y | 2 ++ test/ruby/test_syntax.rb | 5 +++++ 3 files changed, 14 insertions(+) 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