summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-04-04 07:55:11 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-04-04 07:55:11 +0000
commit112a3b1fcaebbabf744c0a1c0e5cf14e7f9d0e5c (patch)
tree8dd40f4026f9ef6509bce5dd386df7d8beb40bf7 /test
parent4e59c822a07f85c79fbcbac40cba5a591512258c (diff)
struct.c: avoid inadvertent symbol creation
* struct.c (make_struct): avoid inadvertent symbol creation. (rb_struct_aref): ditto. (rb_struct_aset): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40101 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/-ext-/symbol/test_inadvertent_creation.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/-ext-/symbol/test_inadvertent_creation.rb b/test/-ext-/symbol/test_inadvertent_creation.rb
index 4b9ab1062d..dde4cafffd 100644
--- a/test/-ext-/symbol/test_inadvertent_creation.rb
+++ b/test/-ext-/symbol/test_inadvertent_creation.rb
@@ -214,5 +214,25 @@ module Test_Symbol
assert_raise(NameError) {obj.instance_variable_set(name, true)}
assert_not_send([Bug::Symbol, :interned?, name])
end
+
+ def test_struct_new
+ name = noninterned_name
+ assert_raise(NameError) {Struct.new(name)}
+ assert_not_send([Bug::Symbol, :interned?, name])
+ end
+
+ def test_struct_aref
+ s = Struct.new(:foo).new
+ name = noninterned_name
+ assert_raise(NameError) {s[name]}
+ assert_not_send([Bug::Symbol, :interned?, name])
+ end
+
+ def test_struct_aset
+ s = Struct.new(:foo).new
+ name = noninterned_name
+ assert_raise(NameError) {s[name] = true}
+ assert_not_send([Bug::Symbol, :interned?, name])
+ end
end
end