diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-07-20 22:39:48 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-07-20 22:41:57 +0900 |
| commit | 7675fcb5d3e8e19964b46df7c1547e27f4a2bbde (patch) | |
| tree | 56b7b23ceb7bde1df79c47f0e0da152c1920a8ce /test | |
| parent | cf4cddf7a1e67109ca36f058719fa62c48b6b315 (diff) | |
| download | mruby-7675fcb5d3e8e19964b46df7c1547e27f4a2bbde.tar.gz mruby-7675fcb5d3e8e19964b46df7c1547e27f4a2bbde.zip | |
Fix `Module#dup` to frozen module
Before this patch:
$ bin/mruby -e 'p Module.new.freeze.dup.frozen?' #=> true
After this patch (same as Ruby):
$ bin/mruby -e 'p Module.new.freeze.dup.frozen?' #=> false
Diffstat (limited to 'test')
| -rw-r--r-- | test/t/module.rb | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/t/module.rb b/test/t/module.rb index 7f869bf1f..0155ec190 100644 --- a/test/t/module.rb +++ b/test/t/module.rb @@ -400,6 +400,29 @@ end # Not ISO specified +assert('Module#dup') do + module TestModuleDup + @@cvar = :cvar + class << self + attr_accessor :cattr + def cmeth; :cmeth end + end + def cvar; @@cvar end + def imeth; :imeth end + self.cattr = :cattr + end + + m = TestModuleDup.dup + o = Object.include(m).new + assert_equal(:cattr, m.cattr) + assert_equal(:cmeth, m.cmeth) + assert_equal(:cvar, o.cvar) + assert_equal(:imeth, o.imeth) + assert_match("#<Module:0x*>", m.to_s) + assert_not_predicate(m, :frozen?) + assert_not_predicate(TestModuleDup.freeze.dup, :frozen?) +end + assert('Module#define_method') do c = Class.new { define_method(:m1) { :ok } |
