summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-11 12:12:08 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-11 12:12:08 +0000
commite1a60b2db97eb629661df2227a1f8f06f1afd6d2 (patch)
tree8e2bd2b555aead3e36b35fef10a62228408c514a /parse.y
parentfd04ea0adf2e79f5c5acb259686b6823fc64e174 (diff)
parse.y: reduce duplicate code
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y12
1 files changed, 5 insertions, 7 deletions
diff --git a/parse.y b/parse.y
index 89c65992c4..999dffbf9f 100644
--- a/parse.y
+++ b/parse.y
@@ -6280,10 +6280,7 @@ here_document(struct parser_params *p, rb_strterm_heredoc_t *here)
if (ptr_end < p->lex.pend) rb_str_cat(str, "\n", 1);
lex_goto_eol(p);
if (p->heredoc_indent > 0) {
- set_yylval_str(str);
- add_mark_object(p, str);
- flush_string_content(p, enc);
- return tSTRING_CONTENT;
+ goto flush_str;
}
if (nextc(p) == -1) {
if (str) {
@@ -6315,10 +6312,11 @@ here_document(struct parser_params *p, rb_strterm_heredoc_t *here)
goto restore;
}
if (c != '\n') {
- VALUE lit;
flush:
- add_mark_object(p, lit = STR_NEW3(tok(p), toklen(p), enc, func));
- set_yylval_str(lit);
+ str = STR_NEW3(tok(p), toklen(p), enc, func);
+ flush_str:
+ set_yylval_str(str);
+ add_mark_object(p, str);
flush_string_content(p, enc);
return tSTRING_CONTENT;
}