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