summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSeeker <[email protected]>2021-01-06 16:46:44 -0800
committerSeeker <[email protected]>2021-01-06 16:46:44 -0800
commitd52c82d64843cd6cb0a20d21280096143d5784cc (patch)
treef6aae44bc732b145d9062a8cee567e025790168a
parente279528ff395c062b0cd62f82f0d3bc4c5c97e15 (diff)
downloadmruby-d52c82d64843cd6cb0a20d21280096143d5784cc.tar.gz
mruby-d52c82d64843cd6cb0a20d21280096143d5784cc.zip
Add heredoc_push_indented helper function
-rw-r--r--mrbgems/mruby-compiler/core/parse.y28
-rw-r--r--mrbgems/mruby-compiler/core/y.tab.c28
2 files changed, 28 insertions, 28 deletions
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y
index d0ab3bfe2..4f2e30931 100644
--- a/mrbgems/mruby-compiler/core/parse.y
+++ b/mrbgems/mruby-compiler/core/parse.y
@@ -4694,6 +4694,18 @@ heredoc_remove_indent(parser_state *p, parser_heredoc_info *hinf)
}
}
+static void
+heredoc_push_indented(parser_state *p, parser_heredoc_info *hinf, node *pair, node *escaped, node *nspaces, mrb_bool empty_line)
+{
+ hinf->indented = push(hinf->indented, cons(pair, cons(escaped, nspaces)));
+ while (nspaces) {
+ size_t tspaces = (size_t)nspaces->car;
+ if ((hinf->indent == ~0U || tspaces < hinf->indent) && !empty_line)
+ hinf->indent = tspaces;
+ nspaces = nspaces->cdr;
+ }
+}
+
static int
parse_string(parser_state *p)
{
@@ -4759,13 +4771,7 @@ parse_string(parser_state *p)
pylval.nd = nd;
if (unindent && head) {
nspaces = push(nspaces, (node*)spaces);
- hinf->indented = push(hinf->indented, cons(nd->cdr, cons(escaped, nspaces)));
- while (nspaces) {
- size_t tspaces = (size_t)nspaces->car;
- if ((hinf->indent == ~0U || tspaces < hinf->indent) && (!empty || !line_head))
- hinf->indent = tspaces;
- nspaces = nspaces->cdr;
- }
+ heredoc_push_indented(p, hinf, nd->cdr, escaped, nspaces, empty && line_head);
}
return tHD_STRING_MID;
}
@@ -4859,13 +4865,7 @@ parse_string(parser_state *p)
if (hinf) {
if (unindent && head) {
nspaces = push(nspaces, (node*)spaces);
- hinf->indented = push(hinf->indented, cons(nd->cdr, cons(escaped, nspaces)));
- while (nspaces) {
- size_t tspaces = (size_t)nspaces->car;
- if (hinf->indent == ~0U || tspaces < hinf->indent)
- hinf->indent = tspaces;
- nspaces = nspaces->cdr;
- }
+ heredoc_push_indented(p, hinf, nd->cdr, escaped, nspaces, FALSE);
}
hinf->line_head = FALSE;
return tHD_STRING_PART;
diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c
index 3dbd776ba..ca2f5044a 100644
--- a/mrbgems/mruby-compiler/core/y.tab.c
+++ b/mrbgems/mruby-compiler/core/y.tab.c
@@ -11079,6 +11079,18 @@ heredoc_remove_indent(parser_state *p, parser_heredoc_info *hinf)
}
}
+static void
+heredoc_push_indented(parser_state *p, parser_heredoc_info *hinf, node *pair, node *escaped, node *nspaces, mrb_bool empty_line)
+{
+ hinf->indented = push(hinf->indented, cons(pair, cons(escaped, nspaces)));
+ while (nspaces) {
+ size_t tspaces = (size_t)nspaces->car;
+ if ((hinf->indent == ~0U || tspaces < hinf->indent) && !empty_line)
+ hinf->indent = tspaces;
+ nspaces = nspaces->cdr;
+ }
+}
+
static int
parse_string(parser_state *p)
{
@@ -11144,13 +11156,7 @@ parse_string(parser_state *p)
pylval.nd = nd;
if (unindent && head) {
nspaces = push(nspaces, (node*)spaces);
- hinf->indented = push(hinf->indented, cons(nd->cdr, cons(escaped, nspaces)));
- while (nspaces) {
- size_t tspaces = (size_t)nspaces->car;
- if ((hinf->indent == ~0U || tspaces < hinf->indent) && (!empty || !line_head))
- hinf->indent = tspaces;
- nspaces = nspaces->cdr;
- }
+ heredoc_push_indented(p, hinf, nd->cdr, escaped, nspaces, empty && line_head);
}
return tHD_STRING_MID;
}
@@ -11244,13 +11250,7 @@ parse_string(parser_state *p)
if (hinf) {
if (unindent && head) {
nspaces = push(nspaces, (node*)spaces);
- hinf->indented = push(hinf->indented, cons(nd->cdr, cons(escaped, nspaces)));
- while (nspaces) {
- size_t tspaces = (size_t)nspaces->car;
- if (hinf->indent == ~0U || tspaces < hinf->indent)
- hinf->indent = tspaces;
- nspaces = nspaces->cdr;
- }
+ heredoc_push_indented(p, hinf, nd->cdr, escaped, nspaces, FALSE);
}
hinf->line_head = FALSE;
return tHD_STRING_PART;