diff options
| author | dearblue <[email protected]> | 2019-02-27 20:21:35 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2019-02-27 22:58:13 +0900 |
| commit | 8ead6da9132e57f2b8e47e4dfb793aa1b90e5daa (patch) | |
| tree | 888c7a68dcfb5f2049bd2bf7cd831a5f23f575b5 | |
| parent | 25957421bcea8070a796428c4dc6638142ffbb56 (diff) | |
| download | mruby-8ead6da9132e57f2b8e47e4dfb793aa1b90e5daa.tar.gz mruby-8ead6da9132e57f2b8e47e4dfb793aa1b90e5daa.zip | |
Compositing `NODE_STR` and `NODE_DSTR`
| -rw-r--r-- | mrbgems/mruby-compiler/core/parse.y | 11 |
1 files changed, 11 insertions, 0 deletions
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)); |
