[ruby-trunk - Bug #6403][Open] self という名前のメソッド定義で SyntaxError

Issue #6403 has been reported by wanabe (_ wanabe).


Bug #6403: self という名前のメソッド定義で SyntaxError

Author: wanabe (_ wanabe)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-05-05 trunk 35541) [i686-linux]

http://toro.2ch.net/test/read.cgi/tech/1328648447/925-931
で指摘されていたのですが、self という名前のメソッドの定義で
メソッド内部先頭にシンボルがある場合 SyntaxError になります。
また、セミコロンか改行をはさむと正常にパースされます。

def self; :foo; end #<= NG
def self;; :foo; end #<= OK
def self() :foo; end #<= OK
def self(); :foo; end #<= OK
def hoge; :foo; end #<= OK
def class; :foo; end #<= OK

parse.y の f_arglist に関する規則の部分で、
‘(’ f_args rparen の時には lex_state を変更しているのに
f_args term の時には $$ = $1; しかしていないあたりが
怪しいように思うのですがどうでしょうか。