summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-12-19 14:33:11 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-12-19 14:33:11 +0000
commit29b836ff24d246c8bf6aa034b9d4176d41ad5b65 (patch)
treefb083a7ac4d74bfb6b3afb42f8872c51fc8c7f12
parentc9d8e7d8bcec4f76294122656de9523791a0021f (diff)
* 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
-rw-r--r--ChangeLog8
-rw-r--r--parse.y5
-rw-r--r--test/ruby/test_symbol.rb27
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 <nobu@ruby-lang.org>
+
+ * parse.y (rb_symname_p): fixed wrong validation. [ruby-dev:28047]
+
Sat Dec 17 03:57:01 2005 Tanaka Akira <akr@m17n.org>
* bignum.c (rb_big_rshift): fix a GC problem on
@@ -20,7 +24,7 @@ Thu Dec 15 12:35:14 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
Thu Dec 15 01:33:31 2005 Tanaka Akira <akr@m17n.org>
- * 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 <eban@ruby-lang.org>
@@ -30,7 +34,7 @@ Wed Dec 14 12:11:46 2005 WATANABE Hirofumi <eban@ruby-lang.org>
Wed Dec 14 12:01:26 2005 Tanaka Akira <akr@m17n.org>
- * 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 <akr@m17n.org>
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