Ruby Forum IronRuby > Re: Code Review: bugfixes-7

Posted by Unni Nair (ksunair)
on 09.05.2008 01:43
(Received via mailing list)
Hi john,

I implemented both basename and file as well. But I will build a patch 
without those two in it after getting your update.

Thanks.




On May 8, 2008, at 3:37 PM, "John Lam (IRONRUBY)" <jflam@microsoft.com> 
wrote:

tfpt review /shelveset:bugfixes-7;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.

MatchDataOps:

-       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, 
SpecialGlobalVariableInfo.cs
-       finished implementing all methods. 16 out of 16 specs pass
-       implemented to_a which closes bug #19903

RegexpOps:

-       added ctor overload to close bug #19927
-       made some changes to return MatchData objects instead of Match 
objects
-       made some changes to return boxed integers via 
RuntimeHelpers.Int32ToObject() instead of explicit boxing. This also 
touches MutableStringOps.cs

TimeOps:

-       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

ModuleOps:

-       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 
SingletonOps.cs

MutableStringOps:

-       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.

Dir.cs:

-       cleaned up some code here, was about to work on glob 
implementation (bugs #19843 #19950, but handed off to Curt)

FileOps.cs:

-       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

MutableString.cs:

-       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)

File.cs:

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

Thanks,
-John

<bugfixes-7.diff>
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core