re.c: stop a wrong warning of "flags ignored" on Regexp.new(//)

[Bug #18669]
This commit is contained in:
Yusuke Endoh 2022-03-31 10:07:09 +09:00
Родитель 3a70d4cd60
Коммит c499a4c28a
2 изменённых файлов: 3 добавлений и 1 удалений

2
re.c
Просмотреть файл

@ -3557,7 +3557,7 @@ rb_reg_initialize_m(int argc, VALUE *argv, VALUE self)
if (RB_TYPE_P(src, T_REGEXP)) {
VALUE re = src;
if (opts != Qundef) {
if (opts != Qnil) {
rb_warn("flags ignored");
}
rb_reg_check(re);

Просмотреть файл

@ -557,6 +557,8 @@ class TestRegexp < Test::Unit::TestCase
def test_initialize
assert_raise(ArgumentError) { Regexp.new }
assert_equal(/foo/, assert_warning(/ignored/) {Regexp.new(/foo/, Regexp::IGNORECASE)})
assert_equal(/foo/, assert_no_warning(/ignored/) {Regexp.new(/foo/)})
assert_equal(/foo/, assert_no_warning(/ignored/) {Regexp.new(/foo/, timeout: nil)})
assert_equal(Encoding.find("US-ASCII"), Regexp.new("b..", nil, "n").encoding)
assert_equal("bar", "foobarbaz"[Regexp.new("b..", nil, "n")])