From: nobuyoshi nakada Date: 2005-12-19T12:40:39+09:00 Subject: [ruby-dev:28047] Re: [ruby-core:03573] [BUG] Small issues with Symbols なかだです。 At Fri, 21 Oct 2005 21:59:12 +0900, Yukihiro Matsumoto wrote in [ruby-dev:27479]: > |[ruby-core:03573]の件ですが、一年近くも経ってるし今更めんどくさ > |いので、-devに振ります。 > > コミットしてください。 今ごろ気づいたんですが、 :%, :&, :/, :^, :`, :|, :~, :>= が必要 ないのにクォートされるようになってしまってました。 At Thu, 15 Dec 2005 12:29:51 +0900, Yukihiro Matsumoto wrote in [ruby-dev:28039]: > 構いません。以後、修正には以下の原則を適用してください。 > > * ユーザに見える仕様変更は不可(単なる追加も不可) > * バグ修正は可(仕様バグは不可) バグなのは確かなんですが、どうしましょうか。 Index: parse.y =================================================================== RCS file: /cvs/ruby/src/ruby/parse.y,v retrieving revision 1.427 diff -U2 -p -r1.427 parse.y --- parse.y 30 Nov 2005 14:52:30 -0000 1.427 +++ parse.y 19 Dec 2005 01:46:39 -0000 @@ -8361,5 +8361,7 @@ rb_symname_p(const char *name) case '>': - if (*++m == '>') ++m; + switch (*++m) { + case '>': case '=': ++m; break; + } break; @@ -8381,4 +8383,5 @@ rb_symname_p(const char *name) case '|': case '^': case '&': case '/': case '%': case '~': case '`': + ++m; break; Index: test/ruby/test_symbol.rb =================================================================== RCS file: /cvs/ruby/src/ruby/test/ruby/test_symbol.rb,v retrieving revision 1.1 diff -U2 -p -r1.1 test_symbol.rb --- test/ruby/test_symbol.rb 22 Oct 2005 04:30:59 -0000 1.1 +++ test/ruby/test_symbol.rb 19 Dec 2005 03:34:46 -0000 @@ -30,4 +30,31 @@ class TestSymbol < Test::Unit::TestCase assert_inspect_evaled(':foo!') assert_inspect_evaled(':bar?') + assert_inspect_evaled(':<<') + assert_inspect_evaled(':>>') + assert_inspect_evaled(':<=') + assert_inspect_evaled(':>=') + assert_inspect_evaled(':=~') + assert_inspect_evaled(':==') + assert_inspect_evaled(':===') + assert_raise(SyntaxError) {eval ':='} + assert_inspect_evaled(':*') + assert_inspect_evaled(':**') + assert_raise(SyntaxError) {eval ':***'} + assert_inspect_evaled(':+') + assert_inspect_evaled(':-') + assert_inspect_evaled(':+@') + assert_inspect_evaled(':-@') + assert_inspect_evaled(':|') + assert_inspect_evaled(':^') + assert_inspect_evaled(':&') + assert_inspect_evaled(':/') + assert_inspect_evaled(':%') + assert_inspect_evaled(':~') + assert_inspect_evaled(':`') + assert_inspect_evaled(':[]') + assert_inspect_evaled(':[]=') + assert_raise(SyntaxError) {eval ':||'} + assert_raise(SyntaxError) {eval ':&&'} + assert_raise(SyntaxError) {eval ':['} end -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦