* parse.y (reg_named_capture_assign_iter): do not insert trace
  instructions before local variable assinments.  putobject is
  expected at first.  [ruby-core:79940] [Bug #13287]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57801 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2017-03-07 10:56:22 +00:00
Родитель d69d98f61a
Коммит 249fd9e0b7
2 изменённых файлов: 10 добавлений и 1 удалений

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

@ -10455,7 +10455,7 @@ reg_named_capture_assign_iter(const OnigUChar *name, const OnigUChar *name_end,
return ST_CONTINUE;
}
var = intern_cstr(s, len, enc);
node = newline_node(node_assign(assignable(var, 0), NEW_LIT(ID2SYM(var))));
node = node_assign(assignable(var, 0), NEW_LIT(ID2SYM(var)));
succ = arg->succ_block;
if (!succ) succ = NEW_BEGIN(0);
succ = block_append(succ, node);

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

@ -205,6 +205,15 @@ class TestRegexp < Test::Unit::TestCase
assert_not_include(local_variables, :nil, "[ruby-dev:32675]")
end
def test_assign_named_capture_trace
bug = '[ruby-core:79940] [Bug #13287]'
assert_normal_exit("#{<<-"begin;"}\n#{<<-"end;"}", bug)
begin;
/ (?<foo>.*)/ =~ "bar" &&
true
end;
end
def test_match_regexp
r = /./
m = r.match("a")