@@ -695,31 +695,36 @@ public static IRubyObject methodArgs(IRubyObject recv) {
695695 DynamicMethod method = rubyMethod .method ;
696696
697697 if (method instanceof MethodArgs ) {
698+ RubySymbol req = runtime .newSymbol ("req" );
699+ RubySymbol opt = runtime .newSymbol ("opt" );
700+ RubySymbol rest = runtime .newSymbol ("rest" );
701+ RubySymbol block = runtime .newSymbol ("block" );
698702 MethodArgs interpMethod = (MethodArgs )method ;
699703 ArgsNode args = interpMethod .getArgsNode ();
700704 RubyArray argsArray = RubyArray .newArray (runtime );
701705
702- RubyArray reqArray = RubyArray .newArray (runtime );
703706 ListNode requiredArgs = args .getPre ();
704707 for (int i = 0 ; requiredArgs != null && i < requiredArgs .size (); i ++) {
705- reqArray .append (getNameFrom (runtime , (INameNode ) requiredArgs .get (i )));
708+ argsArray .append (RubyArray . newArray ( runtime , req , getNameFrom (runtime , (INameNode ) requiredArgs .get (i ) )));
706709 }
707- argsArray .append (reqArray );
708710
709- RubyArray optArray = RubyArray .newArray (runtime );
710711 ListNode optArgs = args .getOptArgs ();
711712 for (int i = 0 ; optArgs != null && i < optArgs .size (); i ++) {
712- optArray .append (getNameFrom (runtime , (INameNode ) optArgs .get (i )));
713+ argsArray .append (RubyArray .newArray (runtime , opt , getNameFrom (runtime , (INameNode ) optArgs .get (i ))));
714+ }
715+
716+ ListNode requiredArgsPost = args .getPost ();
717+ for (int i = 0 ; requiredArgs != null && i < requiredArgsPost .size (); i ++) {
718+ argsArray .append (RubyArray .newArray (runtime , req , getNameFrom (runtime , (INameNode ) requiredArgsPost .get (i ))));
713719 }
714- argsArray .append (optArray );
715720
716- argsArray .append (getNameFrom (runtime , args .getRestArgNode ()));
717- argsArray .append (getNameFrom (runtime , args .getBlock ()));
721+ argsArray .append (RubyArray . newArray ( runtime , rest , getNameFrom (runtime , args .getRestArgNode () )));
722+ argsArray .append (RubyArray . newArray ( runtime , block , getNameFrom (runtime , args .getBlock () )));
718723
719724 return argsArray ;
720725 }
721726
722- throw runtime .newTypeError ( "Method args are only available for standard interpreted or jitted methods" );
727+ return runtime .getNil ( );
723728 }
724729 }
725730
0 commit comments