Code Review: YamlRefactoring1

tfpt review “/shelveset:YamlRefactoring1;REDMOND\tomat”
Comment :
Various Yaml related changes:

  • Integer and Numeric now derives from RubyObject so that a new 

CLR type is not created when these classes are subclassed.

  • All classes derived from RubyObject need to implement a 

deserializing constructor.

  • If a class in C# library represented a Ruby class and also 

implemented its methods using RubyMethod attribute the static
[RubyMethod] methods were visible on the singleton class of that class.
This caused problems with method lookup. This shelveset adds a flag to
the class loader that hides all CLR methods from a class that implements
a Ruby class (via RubyClass attribute). This fix removes the necessity
of splitting of classes into “Ops” and “real classes” artificially (an
example of which is YAML::Stream).

  • Refactors RubyTypeBuilder.DefineConstructors a little bit and 

fixes problem with constructors taking RubyClass - the generated code
was unverifiable (an instruction was missing).

  • Removes mscorlib dependency from Yaml tests so that they can be 

run by MRI as well.


Looks great!