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