Program: 45368
Project: 45368
Buggy source:
public Node assignmentExpression(Node lhs,int op,Node rhs,int pos){
  Node node;
  boolean is_constinit=false;
  if (op == CONST_TOKEN) {
    op=ASSIGN_TOKEN;
    is_constinit=true;
  }
  int prevOp=op;
  if (op != ASSIGN_TOKEN) {
    op=op == MULTASSIGN_TOKEN ? op=MULT_TOKEN : op == DIVASSIGN_TOKEN ? op=DIV_TOKEN : op == MODULUSASSIGN_TOKEN ? op=MODULUS_TOKEN : op == PLUSASSIGN_TOKEN ? op=PLUS_TOKEN : op == MINUSASSIGN_TOKEN ? op=MINUS_TOKEN : op == LEFTSHIFTASSIGN_TOKEN ? op=LEFTSHIFT_TOKEN : op == RIGHTSHIFTASSIGN_TOKEN ? op=RIGHTSHIFT_TOKEN : op == UNSIGNEDRIGHTSHIFTASSIGN_TOKEN ? op=UNSIGNEDRIGHTSHIFT_TOKEN : op == BITWISEANDASSIGN_TOKEN ? op=BITWISEAND_TOKEN : op == BITWISEXORASSIGN_TOKEN ? op=BITWISEXOR_TOKEN : op == BITWISEORASSIGN_TOKEN ? op=BITWISEOR_TOKEN : op == LOGICALANDASSIGN_TOKEN ? op=LOGICALAND_TOKEN : op == LOGICALXORASSIGN_TOKEN ? op=LOGICALXOR_TOKEN : op == LOGICALORASSIGN_TOKEN ? op=LOGICALOR_TOKEN : ERROR_TOKEN;
    rhs=this.binaryExpression(op,lhs,rhs);
  }
  if (lhs.isMemberExpression()) {
    MemberExpressionNode member=(MemberExpressionNode)lhs;
    if (member.selector.isGetExpression()) {
      GetExpressionNode get;
      get=(GetExpressionNode)member.selector;
      if (member.isIndexedMemberExpression()) {
        node=this.indexedMemberExpression(member.base,this.setExpression(get,this.argumentList(null,rhs),is_constinit));
      }
 else {
        node=this.memberExpression(member.base,this.setExpression(get,this.argumentList(null,rhs),is_constinit,rhs.pos()));
      }
    }
 else {
      node=this.error(pos,kError_AssignmentTargetNotRefVal);
    }
  }
 else {
    node=this.memberExpression(null,this.setExpression(lhs,this.argumentList(null,rhs),is_constinit));
  }
  if (cx.scriptAssistParsing) {
    MemberExpressionNode exprNode=(MemberExpressionNode)node;
    if (exprNode != null && (prevOp != op))     exprNode.setOrigToken(prevOp);
  }
  node.setPositionNonterminal(lhs,pos);
  return node;
}

Fixed version (ground truth):
public Node assignmentExpression(Node lhs,int op,Node rhs,int pos){
  Node node;
  boolean is_constinit=false;
  if (op == CONST_TOKEN) {
    op=ASSIGN_TOKEN;
    is_constinit=true;
  }
  int prevOp=op;
  if (op != ASSIGN_TOKEN) {
    while (lhs.isList() && ((ListNode)lhs).items.size() == 1) {
      lhs=((ListNode)lhs).items.get(0);
    }
    op=op == MULTASSIGN_TOKEN ? op=MULT_TOKEN : op == DIVASSIGN_TOKEN ? op=DIV_TOKEN : op == MODULUSASSIGN_TOKEN ? op=MODULUS_TOKEN : op == PLUSASSIGN_TOKEN ? op=PLUS_TOKEN : op == MINUSASSIGN_TOKEN ? op=MINUS_TOKEN : op == LEFTSHIFTASSIGN_TOKEN ? op=LEFTSHIFT_TOKEN : op == RIGHTSHIFTASSIGN_TOKEN ? op=RIGHTSHIFT_TOKEN : op == UNSIGNEDRIGHTSHIFTASSIGN_TOKEN ? op=UNSIGNEDRIGHTSHIFT_TOKEN : op == BITWISEANDASSIGN_TOKEN ? op=BITWISEAND_TOKEN : op == BITWISEXORASSIGN_TOKEN ? op=BITWISEXOR_TOKEN : op == BITWISEORASSIGN_TOKEN ? op=BITWISEOR_TOKEN : op == LOGICALANDASSIGN_TOKEN ? op=LOGICALAND_TOKEN : op == LOGICALXORASSIGN_TOKEN ? op=LOGICALXOR_TOKEN : op == LOGICALORASSIGN_TOKEN ? op=LOGICALOR_TOKEN : ERROR_TOKEN;
    rhs=this.binaryExpression(op,lhs,rhs);
  }
  if (lhs.isMemberExpression()) {
    MemberExpressionNode member=(MemberExpressionNode)lhs;
    if (member.selector.isGetExpression()) {
      GetExpressionNode get;
      get=(GetExpressionNode)member.selector;
      if (member.isIndexedMemberExpression()) {
        node=this.indexedMemberExpression(member.base,this.setExpression(get,this.argumentList(null,rhs),is_constinit));
      }
 else {
        node=this.memberExpression(member.base,this.setExpression(get,this.argumentList(null,rhs),is_constinit,rhs.pos()));
      }
    }
 else {
      node=this.error(pos,kError_AssignmentTargetNotRefVal);
    }
  }
 else {
    node=this.memberExpression(null,this.setExpression(lhs,this.argumentList(null,rhs),is_constinit));
  }
  if (cx.scriptAssistParsing) {
    MemberExpressionNode exprNode=(MemberExpressionNode)node;
    if (exprNode != null && (prevOp != op))     exprNode.setOrigToken(prevOp);
  }
  node.setPositionNonterminal(lhs,pos);
  return node;
}