From 4d2bb3cb47b3628eb140d1d28f79f29887cf6262 Mon Sep 17 00:00:00 2001 From: dearblue Date: Wed, 27 Feb 2019 20:22:24 +0900 Subject: Compositing `NODE_DSTR` and `NODE_STR` --- mrbgems/mruby-compiler/core/parse.y | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 4c884fa92..fed8cfbbc 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -893,6 +893,21 @@ concat_string(parser_state *p, node *a, node *b) } } } + else if (string_node_p(b)) { + /* a == NODE_DSTR && b == NODE_STR */ + + node *c; + for (c = a; c->cdr != NULL; c = c->cdr) ; + if (string_node_p(c->car)) { + /* a->[..., NODE_STR] && b == NODE_STR */ + composite_string_node(p, c->car->cdr, b->cdr); + cons_free(b); + return a; + } + + push(a, b); + return a; + } return new_dstr(p, list2(a, b)); } -- cgit v1.2.3