pike.git / src / docode.c

version» Context lines:

pike.git/src/docode.c:1311:    * cdr(n)= softcast(apply(efun, arglist(car(n),one more arg)))    *    * The first argument of the arglist is equal to the lvalue.    *    * We only want to evaluate car(n) once.    */    if( CAR(n)->token == F_AUTO_MAP_MARKER )    yyerror("[*] is not yet supported here\n");    return emit_ltosval_call_and_assign( CAR(n), CAADR(n), CDADR(n) );    +  case F_ATOMIC_GET_SET: +  if (CAR(n)->token == F_AUTO_MAP_MARKER) { +  yyerror("Unsupported lvalue for =?."); +  emit0(F_UNDEFINED); +  return 1; +  } +  if (!(flags & DO_POP)) { +  tmp1 = do_docode(CAR(n), DO_LVALUE); +  if (do_docode(CDR(n), 0) != 1) yyerror("RHS is void!"); +  emit0(F_ATOMIC_GET_SET); +  return 1; +  } +  +  yywarning("Use of operator =? without using return value."); +  n->token = F_ASSIGN; +  +  /* FALLTHROUGH */ +     case F_ASSIGN:       if( CAR(n)->token == F_AUTO_MAP_MARKER )    {    int depth = 0;    node *lval = CAR(n);    while( lval->token == F_AUTO_MAP_MARKER )    {    lval = CAR(lval);    depth++;