Forum: IronRuby Code Review: Operators4

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Cb51033949ffccd982ae32c9f890f25a?d=identicon&s=25 Tomas Matousek (Guest)
on 2009-04-13 19:09
(Received via mailing list)
Attachment: Operators4.diff (200 KB)
tfpt review "/shelveset:Operators4;REDMOND\tomat"

Outer DLR, Python:
  Factors MethodCandidate construction out to a separate class
(ParameterMapping).
  Replaces OverloadResolver.BindSpecialParameter and
PrepareParameterBinding with a single method MapSpecialParameters.
Languages can override this method to process custom special parameters
(CodeContext, site local storage, blocks, etc. ...). The implementation
works with ParameterMapping and adds arg-builders and parameter wrappers
to the collections encapsulated in it. It returns a bitmap of parameters
that indicate what parameters were processed. The mapping is then
finished by constructing the remaining parameters.

Ruby:
  Adds support for .NET operators (op_* special methods). These methods
behave like extension methods so some adjustments were needed in
RubyOverloadResolver to handle "self" correctly.

  Implements bitwise operators on flag enums: each flag enum gets a
FlagEnumeration mixin that includes &, |, ^, and ~ methods. The
implementation is the same as Python have so I factored it out to
EnumUtils in DLR.

  Fixes implementation of RubyObject.ToString and Kernel#to_s so that
"to_s" is called from ToString on Ruby objects and ToString is called
from Kernel#to_s for .NET objects. Also implements ToString on built-ins
where it was missing and it makes sense to have it: range and regex.
Although Array and Hash implement to_s as well the result is a plain
concatenation of string representation of their items (entires). E.g.
["a b", "c"].to_s == "a bc". I don't think adding
RubyArray/Hash.ToString doing the same would be useful for .NET users.

  Moves Protocols from libraries to IronRuby.dll.

Tomas
This topic is locked and can not be replied to.