diff options
author | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-03-31 07:52:40 +0000 |
---|---|---|
committer | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-03-31 07:52:40 +0000 |
commit | 4273aa8e722c88b04ff0828b6a3c9e6b25988231 (patch) | |
tree | 343e998ef902e2ef978e2b376191ed9f205f76a5 /test/ruby | |
parent | 3044423f9404af026305c18ef40a1460f1dd8308 (diff) | |
download | ruby-4273aa8e722c88b04ff0828b6a3c9e6b25988231.tar.gz |
* vm_insnhelper.c (vm_get_ev_const): search root cref properly.
[ruby-dev:43365]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31221 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby')
-rw-r--r-- | test/ruby/test_module.rb | 50 |
1 files changed, 39 insertions, 11 deletions
diff --git a/test/ruby/test_module.rb b/test/ruby/test_module.rb index 6a7f566ac7..6d28616d86 100644 --- a/test/ruby/test_module.rb +++ b/test/ruby/test_module.rb @@ -1006,19 +1006,47 @@ class TestModule < Test::Unit::TestCase assert_in_out_err([], src, %w(Object :ok), []) end - module A - B = 42 - end - def test_constant_lookup_in_method_defined_by_class_eval - A.class_eval do - def self.f - B + src = <<-INPUT + class A + B = 42 end - end - assert_raise(NameError) do - A.f - end + A.class_eval do + def self.f + B + end + + def f + B + end + end + + begin + A.f + rescue NameError + puts "A.f" + end + begin + A.new.f + rescue NameError + puts "A.new.f" + end + INPUT + assert_in_out_err([], src, %w(A.f A.new.f), []) + end + + def test_constant_lookup_in_toplevel_class_eval + src = <<-INPUT + module X + A = 123 + end + begin + X.class_eval { A } + rescue NameError => e + puts e + end + INPUT + assert_in_out_err([], src, ["uninitialized constant A"], []) end end |