diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-03-12 17:14:38 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-03-12 17:14:38 +0000 |
commit | 1b60a978a2cb67a2ea5423d5bed3a1d6edbb2eaf (patch) | |
tree | 66e8b2d32bf108d8dd377bb9a1ba4c40d5acd169 | |
parent | 7523a076c1ae2b3d7b55fcaa357c05ddb2c132a2 (diff) |
merge revision(s) 57801: [Backport #13287]
parse.y: remove trace
* 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/branches/ruby_2_4@57934 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | parse.y | 2 | ||||
-rw-r--r-- | test/ruby/test_regexp.rb | 9 | ||||
-rw-r--r-- | version.h | 2 |
3 files changed, 11 insertions, 2 deletions
@@ -10621,7 +10621,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; + / (?<foo>.*)/ =~ "bar" && + true + end; + end + def test_match_regexp r = /./ m = r.match("a") @@ -1,6 +1,6 @@ #define RUBY_VERSION "2.4.0" #define RUBY_RELEASE_DATE "2017-03-13" -#define RUBY_PATCHLEVEL 88 +#define RUBY_PATCHLEVEL 89 #define RUBY_RELEASE_YEAR 2017 #define RUBY_RELEASE_MONTH 3 |