diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | parse.y | 2 | ||||
-rw-r--r-- | test/ruby/test_symbol.rb | 18 |
3 files changed, 16 insertions, 8 deletions
@@ -1,3 +1,7 @@ +Tue Aug 2 11:42:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * parse.y (rb_enc_symname2_p): :! is valid symbol. [Bug #5136] + Tue Aug 2 03:26:02 2011 NAKAMURA Usaku <usa@ruby-lang.org> * test/rake/test_rake_directory_task.rb (TestRakeDirectoryTask# @@ -9738,7 +9738,7 @@ rb_enc_symname2_p(const char *name, long len, rb_encoding *enc) break; case '!': - if (len == 1) return FALSE; + if (len == 1) return TRUE; switch (*++m) { case '=': case '~': ++m; break; default: return FALSE; diff --git a/test/ruby/test_symbol.rb b/test/ruby/test_symbol.rb index 9061f191bf..c98f954092 100644 --- a/test/ruby/test_symbol.rb +++ b/test/ruby/test_symbol.rb @@ -3,21 +3,25 @@ require 'test/unit' class TestSymbol < Test::Unit::TestCase # [ruby-core:3573] - def assert_eval_inspected(sym) + def assert_eval_inspected(sym, valid = true) n = sym.inspect + if valid + bug5136 = '[ruby-dev:44314]' + assert_not_match(/\A:"/, n, bug5136) + end assert_nothing_raised(SyntaxError) {assert_equal(sym, eval(n))} end def test_inspect_invalid # 2) Symbol#inspect sometimes returns invalid symbol representations: assert_eval_inspected(:"!") - assert_eval_inspected(:"=") - assert_eval_inspected(:"0") + assert_eval_inspected(:"=", false) + assert_eval_inspected(:"0", false) assert_eval_inspected(:"$1") - assert_eval_inspected(:"@1") - assert_eval_inspected(:"@@1") - assert_eval_inspected(:"@") - assert_eval_inspected(:"@@") + assert_eval_inspected(:"@1", false) + assert_eval_inspected(:"@@1", false) + assert_eval_inspected(:"@", false) + assert_eval_inspected(:"@@", false) end def assert_inspect_evaled(n) |