summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--parse.y7
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 <nobu@ruby-lang.org>
+
+ * 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 <nobu@ruby-lang.org>
* 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);
}
%*/
}