[Ironruby-core] Code Review: Protected3

Jim Deville jdeville at microsoft.com
Thu May 21 18:20:55 EDT 2009


For the protected tests, can you add specs that test that the protected .NET methods are callable from an instance_eval?

@klass.instance_eval {public_protected_overload("abc")}.should equal_clr_string("protected overload")

Don't worry about protected_spec though, I'll fix that.

Other than that, test looks good.

JD

...there is no try

> -----Original Message-----
> From: Curt Hagenlocher
> Sent: Thursday, May 21, 2009 3:08 PM
> To: Tomas Matousek; IronRuby External Code Reviewers; Rowan Code
> Reviewers
> Cc: ironruby-core at rubyforge.org
> Subject: RE: Code Review: Protected3
>
> Looks good!
>
> -----Original Message-----
> From: Tomas Matousek
> Sent: Thursday, May 21, 2009 2:50 PM
> To: IronRuby External Code Reviewers; Rowan Code Reviewers
> Cc: ironruby-core at rubyforge.org
> Subject: Code Review: Protected3
>
> tfpt review "/shelveset:Protected3;REDMOND\tomat"
>
> Small changes in DLR.
>
> Ruby:
>   Fixes handling of CLR protected and private methods and properties.
>   Enables generic methods in ClsTypeEmitter.
>   Removes RubyCallFlag.TryCall - it's not used anymore.
>
>   Notes on visibility:
>   Ruby visibility is orthogonal to CLR visibility.
>   Ruby visibility is mutable (can be changed using
> Kernel#public/private/protected methods), CLR visibility is not.
>   A CLR method group can comprise of methods of different CLR visibility.
> Ruby visibility applies on the group as a whole.
>
>   Ruby-protected members can only be called from a scope whose self
> immediate class is a descendant of the method owner.
>   CLR-protected members can only be called if the receiver is a descendant of
> the method owner.
>
>   Ruby-private members can only be called with an implicit receiver (self).
>   CLR-private members can only be called in PrivateBinding mode (-
> X:PrivateBinding command line option), the receiver might be explicit or
> implicit.
>
>   Tests:
>   Since protected methods can only be called on a derived class instance the
> specs need to be adjusted accordingly.
>   I've fixed generic_spec nad overload_spec and commented out a block in
> protected_spec - all the cases there need to be changed to negative cases
> (all should fail).
>   Removed ROWAN_BIN check in
> External.LCA_RESTRICTED\Languages\IronRuby\mspec\default.mspec so
> that mspec picks up IR_OPTIONS even if ROWAN_BIN is not set.
>
> Tomas


More information about the Ironruby-core mailing list