From: "wanabe (_ wanabe)" Date: 2012-05-05T10:29:05+09:00 Subject: [ruby-dev:45626] [ruby-trunk - Bug #6403][Open] self という名前のメソッド定義で SyntaxError Issue #6403 has been reported by wanabe (_ wanabe). ---------------------------------------- Bug #6403: self という名前のメソッド定義で SyntaxError https://bugs.ruby-lang.org/issues/6403 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; しかしていないあたりが 怪しいように思うのですがどうでしょうか。 -- http://bugs.ruby-lang.org/