aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-01-20 15:05:30 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-01-20 19:24:16 +0900
commit565aeb81e0886c835888a425e5d05ed99fb03238 (patch)
treeb5aba66bd777aecfcef47fa6ef90a494ab0a23e5
parentf4a556f4f1bf82f944ef576fdb3acd755e567368 (diff)
downloadruby-565aeb81e0886c835888a425e5d05ed99fb03238.tar.gz
Skip freezing check on setting temporary class path [Bug #17563]HEADmaster
Co-authored-by: ryannevell (Ryan Nevell) <ryan.nevell@gmail.com>
-rw-r--r--test/ruby/test_class.rb7
-rw-r--r--variable.c2
2 files changed, 8 insertions, 1 deletions
diff --git a/test/ruby/test_class.rb b/test/ruby/test_class.rb
index 6a8234a..368c046 100644
--- a/test/ruby/test_class.rb
+++ b/test/ruby/test_class.rb
@@ -730,4 +730,11 @@ class TestClass < Test::Unit::TestCase
end;
end
+
+ def test_assign_frozen_class_to_const
+ c = Class.new.freeze
+ assert_same(c, Module.new.module_eval("self::Foo = c"))
+ c = Class.new.freeze
+ assert_same(c, Module.new.const_set(:Foo, c))
+ end
end
diff --git a/variable.c b/variable.c
index 52da16f..92d7d11 100644
--- a/variable.c
+++ b/variable.c
@@ -3058,7 +3058,7 @@ rb_const_set(VALUE klass, ID id, VALUE val)
set_namespace_path(val, build_const_path(parental_path, id));
}
else if (!parental_path_permanent && NIL_P(val_path)) {
- rb_ivar_set(val, tmp_classpath, build_const_path(parental_path, id));
+ ivar_set(val, tmp_classpath, build_const_path(parental_path, id));
}
}
}