summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-11-21 16:11:55 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-11-21 16:11:55 +0000
commit8eb0c810b228df1f8352c005a7ae882ad4179b4b (patch)
treecf267fa288dbfce9b48a549b7b9b021cdea21be8 /test
parentdf06c2844288bd59cdcc4e5bed225728d0b2adbc (diff)
get rid of inadvertent ID creation
* object.c (rb_mod_const_get, rb_mod_const_defined): ditto. * variable.c (rb_const_missing, rb_mod_const_missing): call const_missing without new ID to get rid of inadvertent ID creation. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/-ext-/symbol/test_inadvertent_creation.rb43
1 files changed, 37 insertions, 6 deletions
diff --git a/test/-ext-/symbol/test_inadvertent_creation.rb b/test/-ext-/symbol/test_inadvertent_creation.rb
index 9c5fa04407..14e6abd7a3 100644
--- a/test/-ext-/symbol/test_inadvertent_creation.rb
+++ b/test/-ext-/symbol/test_inadvertent_creation.rb
@@ -15,19 +15,31 @@ module Test_Symbol
@obj = Object.new
end
+ def assert_not_pinneddown(name, msg = nil)
+ assert_not_send([Bug::Symbol, :pinneddown?, name], msg)
+ end
+
def assert_not_interned(name, msg = nil)
assert_not_send([Bug::Symbol, :find, name], msg)
end
- def assert_not_interned_error(obj, meth, name, msg = nil)
- e = assert_raise(NameError, msg) {obj.__send__(meth, name)}
- assert_not_interned(name, msg)
+ def assert_not_interned_error(obj, meth, name, msg = nil, &block)
+ e = assert_raise(NameError, msg) {obj.__send__(meth, name, &block)}
+ if Symbol === name
+ assert_not_pinneddown(name, msg)
+ else
+ assert_not_interned(name, msg)
+ end
e
end
def assert_not_interned_false(obj, meth, name, msg = nil)
assert_not_send([obj, meth, name], msg)
- assert_not_interned(name, msg)
+ if Symbol === name
+ assert_not_pinneddown(name, msg)
+ else
+ assert_not_interned(name, msg)
+ end
end
Feature5072 = '[ruby-core:38367]'
@@ -37,6 +49,8 @@ module Test_Symbol
name = noninterned_name("A")
assert_not_interned_error(cl, :const_get, name, Feature5072)
+
+ assert_not_interned_error(cl, :const_get, name.to_sym)
end
def test_module_const_defined?
@@ -44,6 +58,9 @@ module Test_Symbol
name = noninterned_name("A")
assert_not_interned_false(cl, :const_defined?, name, Feature5072)
+
+ name = noninterned_name
+ assert_not_interned_error(cl, :const_defined?, name.to_sym)
end
def test_respond_to_missing
@@ -115,8 +132,8 @@ module Test_Symbol
end
s = noninterned_name("A")
- # assert_not_interned_error(c, :const_get, s, feature5089)
- assert_not_interned_false(c, :autoload?, s, feature5089)
+ assert_not_interned_error(c, :const_get, s.to_sym, feature5089)
+ assert_not_interned_false(c, :autoload?, s.to_sym, feature5089)
end
def test_aliased_method
@@ -206,6 +223,8 @@ module Test_Symbol
mod = Module.new
assert_raise(NameError) {mod.const_set(name, true)}
assert_not_interned(name)
+ assert_raise(NameError) {mod.const_set(name.to_sym, true)}
+ assert_not_pinneddown(name)
end
def test_module_cvar_set
@@ -213,6 +232,8 @@ module Test_Symbol
mod = Module.new
assert_raise(NameError) {mod.class_variable_set(name, true)}
assert_not_interned(name)
+ assert_raise(NameError) {mod.class_variable_set(name.to_sym, true)}
+ assert_not_pinneddown(name)
end
def test_object_ivar_set
@@ -220,6 +241,8 @@ module Test_Symbol
obj = Object.new
assert_raise(NameError) {obj.instance_variable_set(name, true)}
assert_not_interned(name)
+ assert_raise(NameError) {obj.instance_variable_set(name.to_sym, true)}
+ assert_not_pinneddown(name)
end
def test_struct_new
@@ -247,6 +270,8 @@ module Test_Symbol
mod = Module.new
assert_raise(NameError) {mod.module_eval {attr(name)}}
assert_not_interned(name)
+ assert_raise(NameError) {mod.module_eval {attr(name.to_sym)}}
+ assert_not_pinneddown(name)
end
def test_invalid_attr_reader
@@ -254,6 +279,8 @@ module Test_Symbol
mod = Module.new
assert_raise(NameError) {mod.module_eval {attr_reader(name)}}
assert_not_interned(name)
+ assert_raise(NameError) {mod.module_eval {attr_reader(name.to_sym)}}
+ assert_not_pinneddown(name)
end
def test_invalid_attr_writer
@@ -261,6 +288,8 @@ module Test_Symbol
mod = Module.new
assert_raise(NameError) {mod.module_eval {attr_writer(name)}}
assert_not_interned(name)
+ assert_raise(NameError) {mod.module_eval {attr_writer(name.to_sym)}}
+ assert_not_pinneddown(name)
end
def test_invalid_attr_accessor
@@ -268,6 +297,8 @@ module Test_Symbol
mod = Module.new
assert_raise(NameError) {mod.module_eval {attr_accessor(name)}}
assert_not_interned(name)
+ assert_raise(NameError) {mod.module_eval {attr_accessor(name.to_sym)}}
+ assert_not_pinneddown(name)
end
def test_gc_attrset