1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* variable.c (rb_cvar_set): check whether class variable is

defined in superclasses.  root classes have higher priority.
  removes lower class variable entry from IV_TBL (if it's defined
  in classes, not modules).

* variable.c (rb_cvar_get): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13604 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2007-10-03 06:48:06 +00:00
parent ee2ac58e4d
commit 91a079cc86
3 changed files with 77 additions and 16 deletions

View file

@ -25,7 +25,7 @@ class TestVariable < Test::Unit::TestCase
end
class Titans < Gods
@@rule = "Cronus" # do not affect @@rule in Gods
@@rule = "Cronus" # modifies @@rule in Gods
include Olympians
def ruler4
@@rule
@ -44,13 +44,13 @@ class TestVariable < Test::Unit::TestCase
$_ = foobar
assert_equal(foobar, $_)
assert_equal("Uranus", Gods.new.ruler0)
assert_equal("Uranus", Gods.ruler1)
assert_equal("Uranus", Gods.ruler2)
assert_equal("Uranus", Titans.ruler1)
assert_equal("Uranus", Titans.ruler2)
assert_equal("Cronus", Gods.new.ruler0)
assert_equal("Cronus", Gods.ruler1)
assert_equal("Cronus", Gods.ruler2)
assert_equal("Cronus", Titans.ruler1)
assert_equal("Cronus", Titans.ruler2)
atlas = Titans.new
assert_equal("Uranus", atlas.ruler0)
assert_equal("Cronus", atlas.ruler0)
assert_equal("Zeus", atlas.ruler3)
assert_equal("Cronus", atlas.ruler4)
end