Forum: IronRuby interface generic w/ generic methods

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
1e39a948a58f4569c53d971c2e120920?d=identicon&s=25 Ivan Porto carrero (casualjim)
on 2009-05-20 10:17
(Received via mailing list)
Hi
I'm observing the following behavior when I try to implement a CLR
interface
with generic method definitions.

So let's say an interface contains the following method definition

public interface IRubyEngine {
     T CreateInstance<T>(RubyClass rubyClass);
}

in ruby
class MyEngine
   include IRubyEngine
end

So far so good nothing has actually been created yet.

MyEngine.new => raises

(master) » ir
IronRuby 0.4.0.0 on .NET 2.0.50727.4918
Copyright (c) Microsoft Corporation. All rights reserved.

>>> require 'bin/System.Web.Mvc.IronRuby.dll'
=> true
>>> class MyEngine
... include System::Web::Mvc::IronRuby::Core::IRubyEngine
... end
=> MyEngine
>>> MyEngine.new
mscorlib:0:in `_TermCreateClass': Method 'ExecuteFile' in type
'IronRuby.Classes.Object$1' from assembly 'Snippets.scripting,
Version=0.0.0.
0, Culture=neutral, PublicKeyToken=null' does not have an
implementation.
(System::TypeLoadException)
        from mscorlib:0:in `CreateTypeNoLock'
        from mscorlib:0:in `CreateType'
        from
c:\tools\ironruby\ndp\fx\src\core\microsoft\scripting\Actions\DynamicMetaObjectBinder.cs:96:in
`Bind'
        from
c:\tools\ironruby\ndp\fx\src\core\microsoft\scripting\Actions\CallSiteBinder.cs:79:in
`BindDelegate'
        from :0

>>> exit

in the console output above it complains about a different method but
the
idea is the same. that method def was T ExecuteFile<T>(string path, bool
throwIfNotExist);

Do I put this on codeplex or is that the expected behavior?
---
Met vriendelijke groeten - Best regards - Salutations
Ivan Porto Carrero
Blog: http://flanders.co.nz
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)
Ade8632553a9243ae05fc920f68644c1?d=identicon&s=25 Jim Deville (Guest)
on 2009-05-20 17:43
(Received via mailing list)
Two points: 1) We should probably have a clearer error message in this
case. 2) That seems to be a bug since the behavior is different if
IRubyEngine declares non-generic methods.

Please file a bug on CP with both points.

JD

…there is no try

From: ironruby-core-bounces@rubyforge.org
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Ivan Porto
Carrero
Sent: Tuesday, May 19, 2009 11:54 PM
To: ironruby-core
Subject: [Ironruby-core] interface generic w/ generic methods

Hi

I'm observing the following behavior when I try to implement a CLR
interface with generic method definitions.

So let's say an interface contains the following method definition

public interface IRubyEngine {
     T CreateInstance<T>(RubyClass rubyClass);
}

in ruby
class MyEngine
   include IRubyEngine
end

So far so good nothing has actually been created yet.

MyEngine.new => raises

(master) » ir
IronRuby 0.4.0.0 on .NET 2.0.50727.4918
Copyright (c) Microsoft Corporation. All rights reserved.

>>> require 'bin/System.Web.Mvc.IronRuby.dll'
=> true
>>> class MyEngine
... include System::Web::Mvc::IronRuby::Core::IRubyEngine
... end
=> MyEngine
>>> MyEngine.new
mscorlib:0:in `_TermCreateClass': Method 'ExecuteFile' in type
'IronRuby.Classes.Object$1' from assembly 'Snippets.scripting,
Version=0.0.0.
0, Culture=neutral, PublicKeyToken=null' does not have an
implementation. (System::TypeLoadException)
        from mscorlib:0:in `CreateTypeNoLock'
        from mscorlib:0:in `CreateType'
        from
c:\tools\ironruby\ndp\fx\src\core\microsoft\scripting\Actions\DynamicMetaObjectBinder.cs:96:in
`Bind'
        from
c:\tools\ironruby\ndp\fx\src\core\microsoft\scripting\Actions\CallSiteBinder.cs:79:in
`BindDelegate'
        from :0

>>> exit

in the console output above it complains about a different method but
the idea is the same. that method def was T ExecuteFile<T>(string path,
bool throwIfNotExist);

Do I put this on codeplex or is that the expected behavior?
---
Met vriendelijke groeten - Best regards - Salutations
Ivan Porto Carrero
Blog: http://flanders.co.nz
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)
This topic is locked and can not be replied to.