[Ironruby-core] Mysteriously broken calls to dispose?

Curt Hagenlocher curth at microsoft.com
Tue Sep 9 07:25:56 EDT 2008


Yes, this has been reported before (in fact, I think it was when someone was writing "using" ☺) and we haven't yet worked out a resolution.  I'll see if there's something quick that can be fixed here later today.

From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Orion Edwards
Sent: Monday, September 08, 2008 10:12 PM
To: ironruby-core at rubyforge.org
Subject: Re: [Ironruby-core] Mysteriously broken calls to dispose?

Follow-up

If I call $fs.dispose(true), then it works.

It seems there's a protected dispose(bool) in a derived class.
I can't actually call Dispose(true) from C# as the compiler tells me it's protected.

It strikes me as somewhat broken that the method which ironruby actually invokes is the one that you shouldn't invoke...

At any rate, I'd be overjoyed if anyone could point me in the direction of a fix. I'm trying to write 'using' (a la C#) in ruby as part of demo for my local .NET user group. It should be trivial and showcase how awesome IronRuby is :-(

Orion Edwards wrote:
I don't seem to be able to call Dispose on a filestream. Needless to say this is problematic.

Here's a paste, straight from the IR console (latest svn version 141)

>>> require 'mscorlib'

=> true

>>> include System::IO

=> Object

>>> $fs = FileStream.new( 'file.txt', FileMode.Open )

=> #<System::IO::FileStream:0x000005c>

>>> $fs.Dispose

c:\development\ironruby\trunk\src\microsoft.scripting.core\actions\matchcaller.generated.cs:30:in `Call2': wrong number or type of arguments for `Dispose' (ArgumentError)

        from c:\development\ironruby\trunk\src\microsoft.scripting.core\actions\callsite.cs:275:in `UpdateAndExecute'

        from c:\development\ironruby\trunk\src\microsoft.scripting.core\actions\updatedelegates.generated.cs:38:in `Update2'

        from :0

>>>




All the other methods on the filestream object work fine (read_all_text, and so on), but the call to dispose crashes.

Likewise, I get a crash calling methods with overloads, which looks like it may (??) be related.

>>> require 'mscorlib'

=> true

>>> include System::IO

=> Object

>>> $bytes = System::IO::File.read_all_bytes( 'file.txt' ); nil  # nil is to prevent ir from printing the GIANT ARRAY

=> nil

>>> $text = System::Text::Encoding.UTF8.get_string($bytes)

c:\development\ironruby\trunk\src\microsoft.scripting.core\actions\matchcaller.generated.cs:35:in `Call3': wrong number or type of arguments for `get_string' (ArgumentError)

        from c:\development\ironruby\trunk\src\microsoft.scripting.core\actions\callsite.cs:275:in `UpdateAndExecute'

        from c:\development\ironruby\trunk\src\microsoft.scripting.core\actions\updatedelegates.generated.cs:45:in `Update3'

        from :0



>>> $text = System::Text::Encoding.UTF8.get_string($bytes, 0, $bytes.length)

=> "PROPER TEXT GOES HERE"


It seems like it can't figure out that there is GetString(bytes) and GetString(bytes, index, length) and just uses the latter always.
Is there a solution for either of these problems?

Thanks a lot, Orion









________________________________






_______________________________________________

Ironruby-core mailing list

Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>

http://rubyforge.org/mailman/listinfo/ironruby-core


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20080909/75f3043a/attachment-0001.html>


More information about the Ironruby-core mailing list