I've filed bug

http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2609

Tomas

From: ironruby-core-boun...@rubyforge.org 
[mailto:ironruby-core-boun...@rubyforge.org] On Behalf Of Orion Edwards
Sent: Tuesday, September 29, 2009 4:01 PM
To: ironruby-core@rubyforge.org
Subject: [Ironruby-core] Another 0.9.1 regression

I have a C# method with the following signature

static class IItemExtensions
{
  static void getLock(this Interop.IItem item, object session, out 
Interop.ILock lock, out string lockedBy);
}

I am calling it from IronRuby as follows:

lock, locked_by = IItemExtensions.getLock(@item, @session)

@item is a System.__ComObject (IUnknown based, not IDispatch) which implements 
the Interop.IItem method, and @session is another __ComObject

Under 0.9, this worked fine - the two out parameters were assigned to lock and 
locked_by

Under 0.9.1, The method call succeeds (as far as the COM objects are 
concerned), but it seems like IronRuby can no longer deal with the out 
parameters, and the following exception occurs:

>> lock, locked_by = IItemExtensions. getLock(@item, @session)
System::NotSupportedException: ConvertToArraySplatAction @1 not supported on 
foreign meta-objects
        from (irb):30
        from C:/Dev/TEST/ruby/lib/ruby/1.8/irb.rb:150:in `eval_input'
        from :0:in `eval'
        from workspace.rb:80:in `evaluate'
        from C:/Dev/TEST/ruby/lib/ruby/1.8/irb.rb:147:in `eval_input'
        from irb.rb:257:in `signal_status'
        from C:/Dev/TEST/ruby/lib/ruby/1.8/irb.rb:146:in `eval_input'
        from :0:in `loop'
        from C:/Dev/TEST/ruby/lib/ruby/1.8/irb.rb:70:in `start'
        from C:/Dev/TEST/ruby/lib/ruby/1.8/irb.rb:69:in `start'
        from :0:in `catch'
        from C:/Dev/TEST/ruby/bin/iirb:13
        from :0:in `catch'

Is there a new way for calling methods with out parameters in 0.9.1 ?

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

Reply via email to