diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-04-25 19:48:40 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-04-25 19:48:40 +0900 |
| commit | 8fa3995a1a02e9014ce01351e0260bec20ceefd7 (patch) | |
| tree | d2cc4cec5af07f02cb0e7f46c0b242e9d46fe37a /mrbgems/mruby-metaprog | |
| parent | e5799b5d40a5c25beab5db881f8d6315720b987c (diff) | |
| download | mruby-8fa3995a1a02e9014ce01351e0260bec20ceefd7.tar.gz mruby-8fa3995a1a02e9014ce01351e0260bec20ceefd7.zip | |
Singleton class of frozen object should be frozen
Before this patch:
p (class << Object.new.freeze; self end).frozen? #=> false
sc = class << (o=Object.new); self end; o.freeze; p sc.frozen? #=> false
After this patch / Ruby:
p (class << Object.new.freeze; self end).frozen? #=> true
sc = class << (o=Object.new); self end; o.freeze; p sc.frozen? #=> true
Diffstat (limited to 'mrbgems/mruby-metaprog')
| -rw-r--r-- | mrbgems/mruby-metaprog/test/metaprog.rb | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/mrbgems/mruby-metaprog/test/metaprog.rb b/mrbgems/mruby-metaprog/test/metaprog.rb index 0abeb90a6..3aa1d8732 100644 --- a/mrbgems/mruby-metaprog/test/metaprog.rb +++ b/mrbgems/mruby-metaprog/test/metaprog.rb @@ -122,6 +122,22 @@ assert('Kernel#define_singleton_method') do assert_equal :singleton_method_ok, o.test_method end +assert('Kernel#singleton_class') do + o1 = Object.new + assert_same(o1.singleton_class, class << o1; self end) + + o2 = Object.new + sc2 = class << o2; self end + assert_same(o2.singleton_class, sc2) + + o3 = Object.new + sc3 = o3.singleton_class + o3.freeze + assert_predicate(sc3, :frozen?) + + assert_predicate(Object.new.freeze.singleton_class, :frozen?) +end + def labeled_module(name, &block) Module.new do (class <<self; self end).class_eval do |
