On Nov 4, 2009, at 10:39 AM, Intransition wrote:

> Hi--
>
> Debugging a library for 1.9.1 compatibility. I get this error:
>
>  6) Error:
>  test_02_002(TC_Inheritor_02):
>  RuntimeError: implicit argument passing of super from method defined
>     by define_method() is not supported. Specify all arguments
> explicitly.
>
> The offending code is:
>
>      define_method( key ) do
>        defined?(super) ? super.__send__(op,obj) : obj.dup
>      end
>
> So I'm confused since I am not calling super without arguments, though
> I am asking if it is defined. But #defined? works in a special way so
> as not to actually invoke it's argument, right? Or is it something to
> with __send__? What is amiss here?
>
> Thanks.
>


read the line like the parser will:

   defined?(super) ? (super).__send__((op),(obj)) : (obj).dup

the object that gets __send__ is the return value of super.  Can you  
try:
   defined?(super) ? super().__send__(op,obj) : obj.dup
so that the implicit args of super aren't an issue? (because you  
explicitly give an empty arg list)

-Rob


Rob Biedenharn		http://agileconsultingllc.com
Rob / AgileConsultingLLC.com