/* Create code for '(e1 .. e2)'. For '(e1 .. e2.1 .. e2.2)' (which is '(e1 .. (e2.1 .. e2.2))', because concatenation is right associative), merge both CONCATs.  */
static void codeconcat(FuncState *fs, expdesc *e1, expdesc *e2, int line)
/* Create code for '(e1 .. e2)'. For '(e1 .. e2.1 .. e2.2)' (which is '(e1 .. (e2.1 .. e2.2))', because concatenation is right associative), merge both CONCATs.  */
static void codeconcat(FuncState *fs, expdesc *e1, expdesc *e2, int line)
{
    int n = GETARG_B(*ie2);
    lua_assert(e1->u.info + 1 == GETARG_A(*ie2));
    freeexp(fs, e2);
    SETARG_A(*ie2, e1->u.info);
    SETARG_B(*ie2, n + 1);
  }
  else {
    luaK_codeABC(fs, OP_CONCAT, e1->u.info, 2, 0);
    freeexp(fs, e2);
    luaK_fixline(fs, line);
  }
}