mirror of
https://github.com/ruby/ruby.git
synced 2025-08-23 21:14:23 +02:00
![]() argument
(https://github.com/ruby/rdoc/pull/1222)
It is necessary for ClassModule's instance variable @superclass to
always be a String (or nil) so that the class can be saved with
`#marshal_dump` and loaded with `#marshal_load`.
However, there's no type checking being done, which allows a bug like
the one reported in #1221 (which was introduced in #1217) that sets
superclass to a ClassModule. That bug requires:
- setting a superclass to a NormalClass
- marshal_save
- marshal_load (which raises an exception)
With this change, passing a ClassModule to ClassModule#superclass= is
explicitly allowed by saving the full name of the ClassModule in the
@superclass instance variable.
|
||
---|---|---|
.. | ||
context | ||
alias.rb | ||
anon_class.rb | ||
any_method.rb | ||
attr.rb | ||
class_module.rb | ||
constant.rb | ||
context.rb | ||
extend.rb | ||
ghost_method.rb | ||
include.rb | ||
meta_method.rb | ||
method_attr.rb | ||
mixin.rb | ||
normal_class.rb | ||
normal_module.rb | ||
require.rb | ||
single_class.rb | ||
top_level.rb |