--- Data-Alias-1.18-orig/Alias.xs       2013-09-21 08:02:59.000000000 -0700
+++ Data-Alias-1.18-hsUEy_/Alias.xs     2014-09-10 08:15:07.000000000 -0700
@@ -1800,6 +1800,7 @@ STATIC void da_peep2(pTHX_ OP *o) {
       useful = o->op_private & OPpUSEFUL;
       op_null(o);
       o->op_ppaddr = PL_ppaddr[OP_NULL];
+       cLISTOPo->op_last = cUNOPx(cLISTOPo->op_first)->op_first;
       k = o = cLISTOPo->op_first;
       while ((sib = k->op_sibling))
               k = sib;
@@ -1900,8 +1901,9 @@ STATIC OP *da_ck_rv2cv(pTHX_ OP *o) {
               if ((PL_nexttype[PL_nexttoke++] = yylex()) == '{') {
                       PL_nexttype[PL_nexttoke++] = DO;
                       sv_setpv((SV *) cv, "$");
-                       if (PERL_COMBI_VERSION >= 5011002 &&
-                                       *PL_bufptr == '(') {
+                       if ((PERL_COMBI_VERSION >= 5011002 &&
+                                       *PL_bufptr == '(')
+                          || PERL_COMBI_VERSION >= 5021004) {
                               /*
                                * A paren here triggers special lexer
                                * behaviour for a parenthesised argument
@@ -1910,6 +1912,10 @@ STATIC OP *da_ck_rv2cv(pTHX_ OP *o) {
                                * Suppress it by injecting a semicolon,
                                * which is otherwise a no-op coming just
                                * after the opening brace of a block.
+                                * Also inject the semicolon for 5.21.4
+                                * and higher, because our setting of
+                                * PL_expect is undone, as PL_lex_expect
+                                * is not used any more.
                                */
                               Move(PL_bufptr, PL_bufptr+1,
                                       PL_bufend+1-PL_bufptr, char);
@@ -1920,7 +1926,9 @@ STATIC OP *da_ck_rv2cv(pTHX_ OP *o) {
               }
               if(PL_lex_state != LEX_KNOWNEXT) {
                       PL_lex_defer = PL_lex_state;
+#if PERL_COMBI_VERSION < 5021004
                       PL_lex_expect = PL_expect;
+#endif
                       PL_lex_state = LEX_KNOWNEXT;
               }
               PL_yylval = yylval;