diff --git a/kernel/common/module.rb b/kernel/common/module.rb index ee33482b53..d6d67b3c8a 100644 --- a/kernel/common/module.rb +++ b/kernel/common/module.rb @@ -47,7 +47,7 @@ def verify_class_variable_name(name) end private :verify_class_variable_name - def class_variable_set(name, val) + def __class_variable_set__(name, val) Rubinius.primitive :module_cvar_set class_variable_set verify_class_variable_name(name), val diff --git a/kernel/common/module18.rb b/kernel/common/module18.rb index 9f7949d037..8e6f4b46c1 100644 --- a/kernel/common/module18.rb +++ b/kernel/common/module18.rb @@ -25,4 +25,6 @@ def attr(name, writeable = false) end private :attr + + alias_method :class_variable_set, :__class_variable_set__ end diff --git a/kernel/common/module19.rb b/kernel/common/module19.rb index 4b1485b529..27b10a63ff 100644 --- a/kernel/common/module19.rb +++ b/kernel/common/module19.rb @@ -40,4 +40,9 @@ def attr(*attributes) end private :attr + + def class_variable_set(key, value) + raise RuntimeError, "can't modify frozen #{self.class}" if frozen? + __class_variable_set__(key, value) + end end diff --git a/spec/tags/19/ruby/core/module/class_variable_set_tags.txt b/spec/tags/19/ruby/core/module/class_variable_set_tags.txt deleted file mode 100644 index d58029cc4f..0000000000 --- a/spec/tags/19/ruby/core/module/class_variable_set_tags.txt +++ /dev/null @@ -1 +0,0 @@ -fails:Module#class_variable_set raises a RuntimeError when self is frozen