diff --git a/parse.y b/parse.y index 3674177506..0da381d758 100644 --- a/parse.y +++ b/parse.y @@ -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); diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb index 112af60c96..2c4c9709f7 100644 --- a/test/ruby/test_regexp.rb +++ b/test/ruby/test_regexp.rb @@ -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; + / (?.*)/ =~ "bar" && + true + end; + end + def test_match_regexp r = /./ m = r.match("a")