From 1549a6b78daaa4f3efa1d47eb6c9e52b080578b8 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 1 Dec 2014 21:31:33 +0000 Subject: parse.y: check single regexp only * parse.y (regexp_contents): check in ripper only if the whole content is a single regexp without interpolation. [ruby-dev:48714] [Bug #10437] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ parse.y | 7 +++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8eb6ba7481..9e497c2f2a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Tue Dec 2 06:31:31 2014 Nobuyoshi Nakada + + * parse.y (regexp_contents): check in ripper only if the whole + content is a single regexp without interpolation. + [ruby-dev:48714] [Bug #10437] + Tue Dec 2 06:30:55 2014 Nobuyoshi Nakada * re.c (rb_reg_region_copy): new function to try with GC if copy diff --git a/parse.y b/parse.y index 65d3e2065a..a50047eeb5 100644 --- a/parse.y +++ b/parse.y @@ -4259,7 +4259,7 @@ regexp_contents: /* none */ $$ = list_append(head, tail); } /*% - VALUE s1 = 0, s2 = 0, n1 = $1, n2 = $2; + VALUE s1 = 1, s2 = 0, n1 = $1, n2 = $2; if (ripper_is_node_yylval(n1)) { s1 = RNODE(n1)->nd_cval; n1 = RNODE(n1)->nd_rval; @@ -4269,9 +4269,8 @@ regexp_contents: /* none */ n2 = RNODE(n2)->nd_rval; } $$ = dispatch2(regexp_add, n1, n2); - if (s1 || s2) { - VALUE s = !s1 ? s2 : !s2 ? s1 : rb_str_plus(s1, s2); - $$ = ripper_new_yylval(0, $$, s); + if (!s1 && s2) { + $$ = ripper_new_yylval(0, $$, s2); } %*/ } -- cgit v1.2.3