[Ironruby-core] Code Review: Protected3
curth at microsoft.com
Thu May 21 18:08:28 EDT 2009
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.
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.
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.
More information about the Ironruby-core