Ivan Porto Carrero
2009-May-20 06:54 UTC
[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.newmscorlib: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>>> exitin 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) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20090520/3a30eff4/attachment.html>
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 at rubyforge.org [mailto:ironruby-core-bounces at 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.newmscorlib: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>>> exitin 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) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20090520/9802bb3f/attachment.html>