RubyForge bug fixes

tfpt review /shelveset:merge-3;REDMOND\jflam

Ruby only

This shelveset fixes a number of open bugs on Rubyforge and adds some
features that we need to get the latest rubinius specs running.


  •   we used to alias MatchData to 

System.Text.RegularExpressions.Match. However, to fully implement
MatchData we need to also hold onto a reference to the original string
that we matched against. A new MatchData type was created (MatchData.cs)
which wraps the existing .NET Match object. This also touches
MutableStringOps.cs, RubyOps.cs, RubyScope.cs,

  •   finished implementing all methods. 16 out of 16 specs pass
  •   implemented to_a which closes bug #19903


  •   added ctor overload to close bug #19927
  •   made some changes to return MatchData objects instead of Match 


  •   made some changes to return boxed integers via 

RuntimeHelpers.Int32ToObject() instead of explicit boxing. This also
touches MutableStringOps.cs


  •   removed overloaded constructors to close bug #19956. But this 

exposes a new problem about Type aliasing that is described by bug 20035
(referencing a System::DateTime explicitly does not allow you to call
the .NET constructors - only the Ruby-defined constructors).

  •   fixed Time#- bug - #19955


  •   fixed some very old bugs #15996, #15995 related to including 

non-sensible things (include 1, include nil). RequireNonClasses() method
now throws the correct Ruby exceptions. This also touches


  •   added an implementation of String#rindex which closes #19904. We 

pass all specs except for 4 which fail because of differences between
.NET regex and Ruby regex.


  •   cleaned up some code here, was about to work on glob 

implementation (bugs #19843 #19950, but handed off to Curt)


  •   added an implementation of File#basename which closes #19905. 

passes all specs except for one which is wrong, and one which is
unix-specific. These things are likely bugs in Ruby.

#File.basename('baz.rb', 'z.rb').should == 'ba' -- bad test
#File.basename("bar.txt.exe", ".txt.exe").should == "bar" - 

unix-only, should be wrapped in platform

  •   added an implementation of File.file? to close #19949


  •   added a static Empty MutableString
  •   added delegation thunks to LastIndexOf()
  •   fixed our Equals() implementation to correctly distinguish 

between different types of strings (CLR vs. MutableString)


  •   fixes a bug related to what "w+" means in .NET. - its 


Fixed bug #19885 by adding the -I command line switch which lets you
specify the library load path. I’ve redefined our internal alias.txt
file to generate aliases for rbd and rbx that include a pointer to where
the MRI libs are stored in our layout.

Fixed bug #17810, which was a long-standing perf bug.

Fixed bug #20007, by allowing users to pass nothing for
attr_accessor/reader/writer. This is really a bug in Ruby, but the
current implementations allow this behavior, and there are apps that
actually depend on it (RbYAML).


This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs