summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/class.c2
-rw-r--r--test/t/module.rb22
2 files changed, 23 insertions, 1 deletions
diff --git a/src/class.c b/src/class.c
index e2ee288f4..1715abff1 100644
--- a/src/class.c
+++ b/src/class.c
@@ -1758,7 +1758,7 @@ mrb_mod_remove_const(mrb_state *mrb, mrb_value mod)
check_const_name(mrb, sym);
val = mrb_iv_remove(mrb, mod, sym);
if (mrb_undef_p(val)) {
- mrb_name_error(mrb, sym, "instance variable %s not defined", mrb_sym2name(mrb, sym));
+ mrb_name_error(mrb, sym, "constant %s not defined", mrb_sym2name(mrb, sym));
}
return val;
}
diff --git a/test/t/module.rb b/test/t/module.rb
index 286c2c085..6c1c1acda 100644
--- a/test/t/module.rb
+++ b/test/t/module.rb
@@ -241,6 +241,28 @@ assert('Module#remove_class_variable', '15.2.2.4.39') do
not Test4RemoveClassVariable.class_variables.include? :@@cv
end
+assert('Module#remove_const', '15.2.2.4.40') do
+ module Test4RemoveConst
+ ExistingConst = 23
+ end
+
+ result = Test4RemoveConst.module_eval { remove_const :ExistingConst }
+
+ name_error = false
+ begin
+ Test4RemoveConst.module_eval { remove_const :NonExistingConst }
+ rescue NameError
+ name_error = true
+ end
+
+ # Constant removed from Module
+ not Test4RemoveConst.const_defined? :ExistingConst and
+ # Return value of binding
+ result == 23 and
+ # Name Error raised when Constant doesn't exist
+ name_error
+end
+
assert('Module#remove_method', '15.2.2.4.41') do
module Test4RemoveMethod
class Parent