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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Orion Edwards
Sent: Monday, September 08, 2008 10:12 PM
To: ironruby-core@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@rubyforge.org<mailto:Ironruby-core@rubyforge.org>

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


_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core

Reply via email to