RNode node_assign(RNode lhs, RNode rhs) { if (lhs == null) return null; value_expr(rhs); if (lhs is RNGAsgn || lhs is RNIAsgn || lhs is RNLAsgn || lhs is RNDAsgn || lhs is RNDAsgnCurr || lhs is RNMAsgn || lhs is RNCDecl || lhs is RNCVDecl || lhs is RNCVAsgn) { lhs.val = rhs; } else if (lhs is RNCall) { lhs.args = arg_add(lhs.args, rhs); } if (rhs != null) { lhs.FixPos(rhs); } return lhs; }