👏
[Bug #20681] 特定の警告を warn で抑制できないチケット
[Bug #20681] Regular expression warnings are treated as compiler warnings during runtime
- 次のような正規表現を定義すると警告が出力されます
source = "/\w**/"
# warning: regular expression has redundant nested repeat operator '*': /\/w**\//
Regexp.new(source)
- これを次のように
#warn
で抑制するようにしたいんですが意図する挙動にならないという内容のチケットになります
# 内部で警告が呼びされるときにこのメソッドが呼び出されることを想定しているが呼び出されない
def warn(...)
puts "CALLED"
end
source = "/\w**/"
Regexp.new(source)
- これなんですがコメントにも書いてある通りトップレベルの
#warn
ではなくてWarning.warn
の方を再定義する必要があります
module Warning
def self.warn(...)
puts "CALLED"
end
end
source = "/\w**/"
Regexp.new(source)
__END__
output:
CALLED
Discussion