summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-08-02 02:42:17 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-08-02 02:42:17 +0000
commitceb5e60c812c9c002db21043b3e1b0ae87bf28e0 (patch)
tree22a045a1737d819e1129abe5878a91e6191578c6
parenta781b40242a475ada741cc0765f2ec2d2524e3d9 (diff)
* parse.y (rb_enc_symname2_p): :! is valid symbol. [Bug #5136]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@32809 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--parse.y2
-rw-r--r--test/ruby/test_symbol.rb18
3 files changed, 16 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 78e2de4b5a..49b5857851 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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#
diff --git a/parse.y b/parse.y
index f822bac773..1678c027de 100644
--- a/parse.y
+++ b/parse.y
@@ -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)