@JRubyMethod(module = true, rest = true, visibility = PRIVATE) public static IRubyObject warn(ThreadContext context, IRubyObject recv, IRubyObject[] args) { boolean kwargs = false; int uplevel = -1; if (args.length > 1) { IRubyObject tmp = TypeConverter.checkHashType(context.runtime, args[args.length - 1]); if (tmp != context.nil) { kwargs = true; IRubyObject[] rets = ArgsUtil.extractKeywordArgs(context, (RubyHash) tmp, WARN_VALID_KEYS); uplevel = rets[0] == UNDEF ? 0 : RubyNumeric.num2int(rets[0]); } } // FIXME: This is not particularly efficient. int numberOfMessages = kwargs ? args.length - 1 : args.length; if (kwargs) { RubyStackTraceElement element = context.runtime.getInstanceConfig().getTraceType().getBacktraceElement(context, uplevel); RubyString baseMessage = context.runtime.newString(); baseMessage.catString(element.getFileName() + ':' + element.getLineNumber() + ": warning: "); for (int i = 0; i < numberOfMessages; i++) { warn(context, recv, (RubyString) baseMessage.op_plus19(context, args[i])); } } else { for (int i = 0; i < numberOfMessages; i++) { warn(context, recv, args[i]); } } return context.nil; }
@JRubyMethod(module = true, rest = true, visibility = PRIVATE) public static IRubyObject warn(ThreadContext context, IRubyObject recv, IRubyObject[] args) { boolean kwargs = false; int uplevel = -1; if (args.length > 1) { IRubyObject tmp = TypeConverter.checkHashType(context.runtime, args[args.length - 1]); if (tmp != context.nil) { kwargs = true; IRubyObject[] rets = ArgsUtil.extractKeywordArgs(context, (RubyHash) tmp, WARN_VALID_KEYS); uplevel = rets[0] == UNDEF ? 0 : RubyNumeric.num2int(rets[0]); } } // FIXME: This is not particularly efficient. int numberOfMessages = kwargs ? args.length - 1 : args.length; if (kwargs) { RubyStackTraceElement element = context.runtime.getInstanceConfig().getTraceType().getBacktraceElement(context, uplevel); RubyString baseMessage = context.runtime.newString(); baseMessage.catString(element.getFileName() + ':' + element.getLineNumber() + ": warning: "); for (int i = 0; i < numberOfMessages; i++) { warn(context, recv, (RubyString) baseMessage.op_plus19(context, args[i])); } } else { for (int i = 0; i < numberOfMessages; i++) { warn(context, recv, args[i]); } } return context.nil; }