Feature #12882 » 0001-Add-uplevel-keyword-to-Kernel-warn-and-use-it.patch
error.c | ||
---|---|---|
static VALUE
|
||
rb_warn_m(int argc, VALUE *argv, VALUE exc)
|
||
{
|
||
if (!NIL_P(ruby_verbose) && argc > 0) {
|
||
VALUE opts, uplevel = Qnil;
|
||
if (!NIL_P(ruby_verbose) && argc > 0 &&
|
||
(argc = rb_scan_args(argc, argv, "*:", NULL, &opts)) > 0) {
|
||
VALUE str = argv[0];
|
||
if (argc > 1 || !end_with_asciichar(str, '\n')) {
|
||
str = rb_str_tmp_new(0);
|
||
if (!NIL_P(opts)) {
|
||
static ID kwds[1];
|
||
if (!kwds[0]) {
|
||
CONST_ID(kwds[0], "uplevel");
|
||
}
|
||
rb_get_kwargs(opts, kwds, 0, 1, &uplevel);
|
||
if (uplevel == Qundef) {
|
||
uplevel = Qnil;
|
||
}
|
||
else if (!NIL_P(uplevel)) {
|
||
uplevel = LONG2NUM((long)NUM2ULONG(uplevel) + 1);
|
||
uplevel = rb_vm_thread_backtrace_locations(1, &uplevel, GET_THREAD()->self);
|
||
if (!NIL_P(uplevel)) {
|
||
uplevel = rb_ary_entry(uplevel, 0);
|
||
}
|
||
}
|
||
}
|
||
if (argc > 1 || !NIL_P(uplevel) || !end_with_asciichar(str, '\n')) {
|
||
if (NIL_P(uplevel)) {
|
||
str = rb_str_tmp_new(0);
|
||
}
|
||
else {
|
||
VALUE path;
|
||
path = rb_funcall(uplevel, rb_intern("path"), 0);
|
||
str = rb_sprintf("%s:%li: warning: ",
|
||
rb_string_value_ptr(&path),
|
||
NUM2LONG(rb_funcall(uplevel, rb_intern("lineno"), 0)));
|
||
}
|
||
RBASIC_SET_CLASS(str, rb_cWarningBuffer);
|
||
rb_io_puts(argc, argv, str);
|
||
RBASIC_SET_CLASS(str, rb_cString);
|
lib/cgi/core.rb | ||
---|---|---|
def _header_for_modruby(buf) #:nodoc:
|
||
request = Apache::request
|
||
buf.scan(/([^:]+): (.+)#{EOL}/o) do |name, value|
|
||
warn sprintf("name:%s value:%s\n", name, value) if $DEBUG
|
||
$stderr.puts sprintf("name:%s value:%s\n", name, value) if $DEBUG
|
||
case name
|
||
when 'Set-Cookie'
|
||
request.headers_out.add(name, value)
|
lib/cmath.rb | ||
---|---|---|
atanh
|
||
].each do |meth|
|
||
define_method(meth + '!') do |*args, &block|
|
||
warn("CMath##{meth}! is deprecated; use CMath##{meth} or Math##{meth}") if $VERBOSE
|
||
warn("CMath##{meth}! is deprecated; use CMath##{meth} or Math##{meth}", uplevel: 1) if $VERBOSE
|
||
RealMath.send(meth, *args, &block)
|
||
end
|
||
end
|
lib/delegate.rb | ||
---|---|---|
target = self.__getobj__ {r = false}
|
||
r &&= target.respond_to?(m, include_private)
|
||
if r && include_private && !target.respond_to?(m, false)
|
||
warn "#{caller(3, 1)[0]}: delegator does not forward private method \##{m}"
|
||
warn "delegator does not forward private method \##{m}", uplevel: 3
|
||
return false
|
||
end
|
||
r
|
lib/drb/ssl.rb | ||
---|---|---|
end
|
||
self.class.new(uri, ssl, @config, true)
|
||
rescue OpenSSL::SSL::SSLError
|
||
warn("#{__FILE__}:#{__LINE__}: warning: #{$!.message} (#{$!.class})") if @config[:verbose]
|
||
warn("#{$!.message} (#{$!.class})", uplevel: 0) if @config[:verbose]
|
||
retry
|
||
end
|
||
end
|
lib/forwardable.rb | ||
---|---|---|
method_call = "#{<<-"begin;"}\n#{<<-"end;".chomp}"
|
||
begin;
|
||
unless defined? _.#{method}
|
||
::Kernel.warn "\#{caller_locations(1)[0]}: "#{mesg.dump}"\#{_.class}"'##{method}'
|
||
::Kernel.warn #{mesg.dump}"\#{_.class}"'##{method}', uplevel: 1
|
||
_#{method_call}
|
||
else
|
||
_.#{method}(*args, &block)
|
lib/ipaddr.rb | ||
---|---|---|
# Returns true if the ipaddr is an IPv4-compatible IPv6 address.
|
||
def ipv4_compat?
|
||
warn "#{caller(1, 1)[0]}: warning: IPAddr\##{__callee__} is obsolete" if $VERBOSE
|
||
warn "IPAddr\##{__callee__} is obsolete", uplevel: 1 if $VERBOSE
|
||
_ipv4_compat?
|
||
end
|
||
... | ... | |
# Returns a new ipaddr built by converting the native IPv4 address
|
||
# into an IPv4-compatible IPv6 address.
|
||
def ipv4_compat
|
||
warn "#{caller(1, 1)[0]}: warning: IPAddr\##{__callee__} is obsolete" if $VERBOSE
|
||
warn "IPAddr\##{__callee__} is obsolete", uplevel: 1 if $VERBOSE
|
||
if !ipv4?
|
||
raise InvalidAddressError, "not an IPv4 address"
|
||
end
|
lib/irb/init.rb | ||
---|---|---|
begin
|
||
require m
|
||
rescue LoadError => err
|
||
warn err.backtrace[0] << ":#{err.class}: #{err}"
|
||
warn ":#{err.class}: #{err}", uplevel: 0
|
||
end
|
||
end
|
||
end
|
lib/irb/locale.rb | ||
---|---|---|
if @encoding_name
|
||
begin load 'irb/encoding_aliases.rb'; rescue LoadError; end
|
||
if @encoding = @@legacy_encoding_alias_map[@encoding_name]
|
||
warn "%s is obsolete. use %s" % ["#{@lang}_#{@territory}.#{@encoding_name}", "#{@lang}_#{@territory}.#{@encoding.name}"]
|
||
warn(("%s is obsolete. use %s" % ["#{@lang}_#{@territory}.#{@encoding_name}", "#{@lang}_#{@territory}.#{@encoding.name}"]), uplevel: 1)
|
||
end
|
||
@encoding = Encoding.find(@encoding_name) rescue nil
|
||
end
|
lib/matrix.rb | ||
---|---|---|
# deprecated; use Matrix#determinant
|
||
#
|
||
def determinant_e
|
||
warn "#{caller(1, 1)[0]}: warning: Matrix#determinant_e is deprecated; use #determinant"
|
||
warn "Matrix#determinant_e is deprecated; use #determinant", uplevel: 1
|
||
determinant
|
||
end
|
||
alias det_e determinant_e
|
||
... | ... | |
# deprecated; use Matrix#rank
|
||
#
|
||
def rank_e
|
||
warn "#{caller(1, 1)[0]}: warning: Matrix#rank_e is deprecated; use #rank"
|
||
warn "Matrix#rank_e is deprecated; use #rank", uplevel: 1
|
||
rank
|
||
end
|
||
... | ... | |
end
|
||
def elements_to_f
|
||
warn "#{caller(1, 1)[0]}: warning: Matrix#elements_to_f is deprecated, use map(&:to_f)"
|
||
warn "Matrix#elements_to_f is deprecated, use map(&:to_f)", uplevel: 1
|
||
map(&:to_f)
|
||
end
|
||
def elements_to_i
|
||
warn "#{caller(1, 1)[0]}: warning: Matrix#elements_to_i is deprecated, use map(&:to_i)"
|
||
warn "Matrix#elements_to_i is deprecated, use map(&:to_i)", uplevel: 1
|
||
map(&:to_i)
|
||
end
|
||
def elements_to_r
|
||
warn "#{caller(1, 1)[0]}: warning: Matrix#elements_to_r is deprecated, use map(&:to_r)"
|
||
warn "Matrix#elements_to_r is deprecated, use map(&:to_r)", uplevel: 1
|
||
map(&:to_r)
|
||
end
|
||
... | ... | |
end
|
||
def elements_to_f
|
||
warn "#{caller(1, 1)[0]}: warning: Vector#elements_to_f is deprecated"
|
||
warn "Vector#elements_to_f is deprecated", uplevel: 1
|
||
map(&:to_f)
|
||
end
|
||
def elements_to_i
|
||
warn "#{caller(1, 1)[0]}: warning: Vector#elements_to_i is deprecated"
|
||
warn "Vector#elements_to_i is deprecated", uplevel: 1
|
||
map(&:to_i)
|
||
end
|
||
def elements_to_r
|
||
warn "#{caller(1, 1)[0]}: warning: Vector#elements_to_r is deprecated"
|
||
warn "Vector#elements_to_r is deprecated", uplevel: 1
|
||
map(&:to_r)
|
||
end
|
||
lib/net/ftp.rb | ||
---|---|---|
# Obsolete
|
||
def return_code # :nodoc:
|
||
$stderr.puts("warning: Net::FTP#return_code is obsolete and do nothing")
|
||
warn("Net::FTP#return_code is obsolete and do nothing", uplevel: 1)
|
||
return "\n"
|
||
end
|
||
# Obsolete
|
||
def return_code=(s) # :nodoc:
|
||
$stderr.puts("warning: Net::FTP#return_code= is obsolete and do nothing")
|
||
warn("Net::FTP#return_code= is obsolete and do nothing", uplevel: 1)
|
||
end
|
||
# Constructs a socket with +host+ and +port+.
|
lib/net/http.rb | ||
---|---|---|
# http.start { .... }
|
||
#
|
||
def set_debug_output(output)
|
||
warn 'Net::HTTP#set_debug_output called after HTTP started' if started?
|
||
warn 'Net::HTTP#set_debug_output called after HTTP started', uplevel: 1 if started?
|
||
@debug_output = output
|
||
end
|
||
lib/net/http/generic_request.rb | ||
---|---|---|
end
|
||
def body_exist?
|
||
warn "Net::HTTPRequest#body_exist? is obsolete; use response_body_permitted?" if $VERBOSE
|
||
warn "Net::HTTPRequest#body_exist? is obsolete; use response_body_permitted?", uplevel: 1 if $VERBOSE
|
||
response_body_permitted?
|
||
end
|
||
... | ... | |
def supply_default_content_type
|
||
return if content_type()
|
||
warn 'net/http: warning: Content-Type did not set; using application/x-www-form-urlencoded' if $VERBOSE
|
||
warn 'net/http: Content-Type did not set; using application/x-www-form-urlencoded', uplevel: 1 if $VERBOSE
|
||
set_content_type 'application/x-www-form-urlencoded'
|
||
end
|
||
lib/net/http/header.rb | ||
---|---|---|
@header = {}
|
||
return unless initheader
|
||
initheader.each do |key, value|
|
||
warn "net/http: warning: duplicated HTTP header: #{key}" if key?(key) and $VERBOSE
|
||
warn "net/http: duplicated HTTP header: #{key}", uplevel: 1 if key?(key) and $VERBOSE
|
||
if value.nil?
|
||
warn "net/http: warning: nil HTTP header: #{key}" if $VERBOSE
|
||
warn "net/http: nil HTTP header: #{key}", uplevel: 1 if $VERBOSE
|
||
else
|
||
@header[key.downcase] = [value.strip]
|
||
end
|
lib/net/http/response.rb | ||
---|---|---|
#
|
||
def response #:nodoc:
|
||
warn "#{caller(1, 1)[0]}: warning: Net::HTTPResponse#response is obsolete" if $VERBOSE
|
||
warn "Net::HTTPResponse#response is obsolete", uplevel: 1 if $VERBOSE
|
||
self
|
||
end
|
||
def header #:nodoc:
|
||
warn "#{caller(1, 1)[0]}: warning: Net::HTTPResponse#header is obsolete" if $VERBOSE
|
||
warn "Net::HTTPResponse#header is obsolete", uplevel: 1 if $VERBOSE
|
||
self
|
||
end
|
||
def read_header #:nodoc:
|
||
warn "#{caller(1, 1)[0]}: warning: Net::HTTPResponse#read_header is obsolete" if $VERBOSE
|
||
warn "Net::HTTPResponse#read_header is obsolete", uplevel: 1 if $VERBOSE
|
||
self
|
||
end
|
||
lib/net/imap.rb | ||
---|---|---|
# generate a warning message to +stderr+, then return
|
||
# the value of +subtype+.
|
||
def media_subtype
|
||
$stderr.printf("warning: media_subtype is obsolete.\n")
|
||
$stderr.printf(" use subtype instead.\n")
|
||
warn("media_subtype is obsolete, use subtype instead.\n", uplevel: 1)
|
||
return subtype
|
||
end
|
||
end
|
||
... | ... | |
# generate a warning message to +stderr+, then return
|
||
# the value of +subtype+.
|
||
def media_subtype
|
||
$stderr.printf("warning: media_subtype is obsolete.\n")
|
||
$stderr.printf(" use subtype instead.\n")
|
||
warn("media_subtype is obsolete, use subtype instead.\n", uplevel: 1)
|
||
return subtype
|
||
end
|
||
end
|
||
... | ... | |
# generate a warning message to +stderr+, then return
|
||
# the value of +subtype+.
|
||
def media_subtype
|
||
$stderr.printf("warning: media_subtype is obsolete.\n")
|
||
$stderr.printf(" use subtype instead.\n")
|
||
warn("media_subtype is obsolete, use subtype instead.\n", uplevel: 1)
|
||
return subtype
|
||
end
|
||
end
|
||
... | ... | |
# generate a warning message to +stderr+, then return
|
||
# the value of +subtype+.
|
||
def media_subtype
|
||
$stderr.printf("warning: media_subtype is obsolete.\n")
|
||
$stderr.printf(" use subtype instead.\n")
|
||
warn("media_subtype is obsolete, use subtype instead.\n", uplevel: 1)
|
||
return subtype
|
||
end
|
||
end
|
lib/ostruct.rb | ||
---|---|---|
end
|
||
private :modifiable?
|
||
# ::Kernel.warn("#{caller(1, 1)[0]}: do not use OpenStruct#modifiable")
|
||
# ::Kernel.warn("do not use OpenStruct#modifiable", uplevel: 1)
|
||
alias modifiable modifiable? # :nodoc:
|
||
protected :modifiable
|
||
... | ... | |
end
|
||
private :new_ostruct_member!
|
||
# ::Kernel.warn("#{caller(1, 1)[0]}: do not use OpenStruct#new_ostruct_member")
|
||
# ::Kernel.warn("do not use OpenStruct#new_ostruct_member", uplevel: 1)
|
||
alias new_ostruct_member new_ostruct_member! # :nodoc:
|
||
protected :new_ostruct_member
|
||
lib/rexml/cdata.rb | ||
---|---|---|
# c = CData.new( " Some text " )
|
||
# c.write( $stdout ) #-> <![CDATA[ Some text ]]>
|
||
def write( output=$stdout, indent=-1, transitive=false, ie_hack=false )
|
||
Kernel.warn( "#{self.class.name}.write is deprecated" )
|
||
Kernel.warn( "#{self.class.name}.write is deprecated", uplevel: 1)
|
||
indent( output, indent )
|
||
output << START
|
||
output << @string
|
lib/rexml/comment.rb | ||
---|---|---|
# ie_hack::
|
||
# Needed for conformity to the child API, but not used by this class.
|
||
def write( output, indent=-1, transitive=false, ie_hack=false )
|
||
Kernel.warn("Comment.write is deprecated. See REXML::Formatters")
|
||
Kernel.warn("Comment.write is deprecated. See REXML::Formatters", uplevel: 1)
|
||
indent( output, indent )
|
||
output << START
|
||
output << @string
|
lib/rexml/element.rb | ||
---|---|---|
# doc.write( out ) #-> doc is written to the string 'out'
|
||
# doc.write( $stdout ) #-> doc written to the console
|
||
def write(output=$stdout, indent=-1, transitive=false, ie_hack=false)
|
||
Kernel.warn("#{self.class.name}.write is deprecated. See REXML::Formatters")
|
||
Kernel.warn("#{self.class.name}.write is deprecated. See REXML::Formatters", uplevel: 1)
|
||
formatter = if indent > -1
|
||
if transitive
|
||
require "rexml/formatters/transitive"
|
lib/rexml/instruction.rb | ||
---|---|---|
# See the rexml/formatters package
|
||
#
|
||
def write writer, indent=-1, transitive=false, ie_hack=false
|
||
Kernel.warn( "#{self.class.name}.write is deprecated" )
|
||
Kernel.warn( "#{self.class.name}.write is deprecated", uplevel: 1)
|
||
indent(writer, indent)
|
||
writer << START.sub(/\\/u, '')
|
||
writer << @target
|
lib/rexml/node.rb | ||
---|---|---|
# REXML::Formatters package for changing the output style.
|
||
def to_s indent=nil
|
||
unless indent.nil?
|
||
Kernel.warn( "#{self.class.name}.to_s(indent) parameter is deprecated" )
|
||
Kernel.warn( "#{self.class.name}.to_s(indent) parameter is deprecated", uplevel: 1)
|
||
f = REXML::Formatters::Pretty.new( indent )
|
||
f.write( self, rv = "" )
|
||
else
|
lib/rexml/text.rb | ||
---|---|---|
# See REXML::Formatters
|
||
#
|
||
def write( writer, indent=-1, transitive=false, ie_hack=false )
|
||
Kernel.warn("#{self.class.name}.write is deprecated. See REXML::Formatters")
|
||
Kernel.warn("#{self.class.name}.write is deprecated. See REXML::Formatters", uplevel: 1)
|
||
formatter = if indent > -1
|
||
REXML::Formatters::Pretty.new( indent )
|
||
else
|
lib/rss/rss.rb | ||
---|---|---|
def #{accessor_name}=(*args)
|
||
receiver = self.class.name
|
||
warn("Warning:\#{caller.first.sub(/:in `.*'\z/, '')}: " \
|
||
"Don't use `\#{receiver}\##{accessor_name} = XXX'/" \
|
||
warn("Don't use `\#{receiver}\##{accessor_name} = XXX'/" \
|
||
"`\#{receiver}\#set_#{accessor_name}(XXX)'. " \
|
||
"Those APIs are not sense of Ruby. " \
|
||
"Use `\#{receiver}\##{plural_name} << XXX' instead of them.")
|
||
"Use `\#{receiver}\##{plural_name} << XXX' instead of them.", uplevel: 1)
|
||
if args.size == 1
|
||
@#{accessor_name}.push(args[0])
|
||
else
|
lib/tempfile.rb | ||
---|---|---|
# If Tempfile.new cannot find a unique filename within a limited
|
||
# number of tries, then it will raise an exception.
|
||
def initialize(basename="", tmpdir=nil, mode: 0, **options)
|
||
warn "Tempfile.new doesn't call the given block." if block_given?
|
||
warn "Tempfile.new doesn't call the given block.", uplevel: 1 if block_given?
|
||
@unlinked = false
|
||
@mode = mode|File::RDWR|File::CREAT|File::EXCL
|
||
... | ... | |
def call(*args)
|
||
return if @pid != Process.pid
|
||
warn "removing #{@tmpfile.path}..." if $DEBUG
|
||
$stderr.puts "removing #{@tmpfile.path}..." if $DEBUG
|
||
@tmpfile.close
|
||
begin
|
||
... | ... | |
rescue Errno::ENOENT
|
||
end
|
||
warn "done" if $DEBUG
|
||
$stderr.puts "done" if $DEBUG
|
||
end
|
||
end
|
||
lib/timeout.rb | ||
---|---|---|
end
|
||
def timeout(*args, &block)
|
||
warn "#{caller_locations(1, 1)[0]}: Object##{__method__} is deprecated, use Timeout.timeout instead."
|
||
warn "Object##{__method__} is deprecated, use Timeout.timeout instead.", uplevel: 1
|
||
Timeout.timeout(*args, &block)
|
||
end
|
||
lib/uri/common.rb | ||
---|---|---|
# # => "@%3F@%21"
|
||
#
|
||
def escape(*arg)
|
||
warn "#{caller(1, 1)[0]}: warning: URI.escape is obsolete" if $VERBOSE
|
||
warn "URI.escape is obsolete", uplevel: 1 if $VERBOSE
|
||
DEFAULT_PARSER.escape(*arg)
|
||
end
|
||
alias encode escape
|
||
... | ... | |
# # => "http://example.com/?a=\t\r"
|
||
#
|
||
def unescape(*arg)
|
||
warn "#{caller(1, 1)[0]}: warning: URI.unescape is obsolete" if $VERBOSE
|
||
warn "URI.unescape is obsolete", uplevel: 1 if $VERBOSE
|
||
DEFAULT_PARSER.unescape(*arg)
|
||
end
|
||
alias decode unescape
|
||
... | ... | |
# # => ["http://foo.example.com/bla", "mailto:test@example.com"]
|
||
#
|
||
def self.extract(str, schemes = nil, &block)
|
||
warn "#{caller(1, 1)[0]}: warning: URI.extract is obsolete" if $VERBOSE
|
||
warn "URI.extract is obsolete", uplevel: 1 if $VERBOSE
|
||
DEFAULT_PARSER.extract(str, schemes, &block)
|
||
end
|
||
... | ... | |
# end
|
||
#
|
||
def self.regexp(schemes = nil)
|
||
warn "#{caller(1, 1)[0]}: warning: URI.regexp is obsolete" if $VERBOSE
|
||
warn "URI.regexp is obsolete", uplevel: 1 if $VERBOSE
|
||
DEFAULT_PARSER.make_regexp(schemes)
|
||
end
|
||
lib/uri/generic.rb | ||
---|---|---|
elsif name == 'http_proxy'
|
||
unless proxy_uri = env[name]
|
||
if proxy_uri = env[name.upcase]
|
||
warn 'The environment variable HTTP_PROXY is discouraged. Use http_proxy.'
|
||
warn 'The environment variable HTTP_PROXY is discouraged. Use http_proxy.', uplevel: 1
|
||
end
|
||
end
|
||
else
|
lib/webrick/server.rb | ||
---|---|---|
@shutdown_pipe = nil
|
||
unless @config[:DoNotListen]
|
||
if @config[:Listen]
|
||
warn(":Listen option is deprecated; use GenericServer#listen")
|
||
warn(":Listen option is deprecated; use GenericServer#listen", uplevel: 1)
|
||
end
|
||
listen(@config[:BindAddress], @config[:Port])
|
||
if @config[:Port] == 0
|
lib/webrick/utils.rb | ||
---|---|---|
Process::Sys::setgid(pw.gid)
|
||
Process::Sys::setuid(pw.uid)
|
||
else
|
||
warn("WEBrick::Utils::su doesn't work on this platform")
|
||
warn("WEBrick::Utils::su doesn't work on this platform", uplevel: 1)
|
||
end
|
||
end
|
||
module_function :su
|
lib/yaml.rb | ||
---|---|---|
begin
|
||
require 'psych'
|
||
rescue LoadError
|
||
warn "#{caller[0]}:"
|
||
warn "It seems your ruby installation is missing psych (for YAML output)."
|
||
warn "To eliminate this warning, please install libyaml and reinstall your ruby."
|
||
warn "It seems your ruby installation is missing psych (for YAML output).\n" \
|
||
"To eliminate this warning, please install libyaml and reinstall your ruby.\n",
|
||
uplevel: 1
|
||
raise
|
||
end
|
||
test/ruby/test_exception.rb | ||
---|---|---|
assert_equal(["\n"], capture_warning_warn {warn ""})
|
||
end
|
||
def test_kernel_warn_uplevel
|
||
warning = capture_warning_warn {warn("test warning", uplevel: 0)}
|
||
assert_equal("#{__FILE__}:#{__LINE__-1}: warning: test warning\n", warning[0])
|
||
end
|
||
def test_warning_warn_invalid_argument
|
||
assert_raise(TypeError) do
|
||
::Warning.warn nil
|
- « Previous
- 1
- 2
- Next »