From 29b836ff24d246c8bf6aa034b9d4176d41ad5b65 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 19 Dec 2005 14:33:11 +0000 Subject: * parse.y (rb_symname_p): fixed wrong validation. [ruby-dev:28047] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9715 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++-- parse.y | 5 ++++- test/ruby/test_symbol.rb | 27 +++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 628461ac2a..0425e0a6d8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Mon Dec 19 23:32:39 2005 Nobuyoshi Nakada + + * parse.y (rb_symname_p): fixed wrong validation. [ruby-dev:28047] + Sat Dec 17 03:57:01 2005 Tanaka Akira * bignum.c (rb_big_rshift): fix a GC problem on @@ -20,7 +24,7 @@ Thu Dec 15 12:35:14 2005 Yukihiro Matsumoto Thu Dec 15 01:33:31 2005 Tanaka Akira - * ext/zlib/zlib.c (zstream_run): fix a GC problem by tail call on + * ext/zlib/zlib.c (zstream_run): fix a GC problem by tail call on x86_64 with gcc 4.0.3 20051111 (prerelease) (Debian 4.0.2-4) Wed Dec 14 12:11:46 2005 WATANABE Hirofumi @@ -30,7 +34,7 @@ Wed Dec 14 12:11:46 2005 WATANABE Hirofumi Wed Dec 14 12:01:26 2005 Tanaka Akira - * marshal.c (r_object0): fix a GC problem for reading a bignum on + * marshal.c (r_object0): fix a GC problem for reading a bignum on IA64 with gcc 3.3.5 (Debian 1:3.3.5-13). Tue Dec 13 12:23:47 2005 Tanaka Akira diff --git a/parse.y b/parse.y index 364788d27c..2fc0fcc616 100644 --- a/parse.y +++ b/parse.y @@ -5940,7 +5940,9 @@ rb_symname_p(name) break; case '>': - if (*++m == '>') ++m; + switch (*++m) { + case '>': case '=': ++m; break; + } break; case '=': @@ -5960,6 +5962,7 @@ rb_symname_p(name) break; case '|': case '^': case '&': case '/': case '%': case '~': case '`': + ++m; break; case '[': diff --git a/test/ruby/test_symbol.rb b/test/ruby/test_symbol.rb index b6dd203596..2ccfe64c92 100644 --- a/test/ruby/test_symbol.rb +++ b/test/ruby/test_symbol.rb @@ -29,6 +29,33 @@ class TestSymbol < Test::Unit::TestCase assert_inspect_evaled(':foo') 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 def test_inspect_dollar -- cgit v1.2.3