diff --git a/ChangeLog b/ChangeLog index 1d6a129806..9d032f9912 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Feb 20 01:53:33 2016 Nobuyoshi Nakada + + * object.c (rb_mod_const_get): make error message at uninterned + string consistent with symbols. [ruby-dev:49498] [Bug #12089] + Fri Feb 19 23:37:52 2016 Masahiro Tomita * lib/find.rb (Find#find): raise with the given path name if it diff --git a/object.c b/object.c index 2497043b46..afb9dd6715 100644 --- a/object.c +++ b/object.c @@ -2139,7 +2139,7 @@ rb_mod_const_get(int argc, VALUE *argv, VALUE mod) continue; } else { - rb_name_err_raise("uninitialized constant %2$s::%1$s", mod, part); + rb_mod_const_missing(mod, part); } } if (!rb_is_const_id(id)) { diff --git a/test/-ext-/symbol/test_inadvertent_creation.rb b/test/-ext-/symbol/test_inadvertent_creation.rb index 073952fae3..5d3906a40b 100644 --- a/test/-ext-/symbol/test_inadvertent_creation.rb +++ b/test/-ext-/symbol/test_inadvertent_creation.rb @@ -54,6 +54,14 @@ module Test_Symbol assert_not_interned_error(cl, :const_get, name.to_sym) end + def test_module_const_get_toplevel + bug12089 = '[ruby-dev:49498] [Bug #12089]' + name = noninterned_name("A") + e = assert_not_interned_error(Object, :const_get, name) + assert_equal(name, e.name) + assert_not_match(/Object::/, e.message, bug12089) + end + def test_module_const_defined? cl = Class.new name = noninterned_name("A")