==================
Field Assignment
==================

f = record { fst = 2; snd = 3 }

---

(source_file
    (function
        (lhs (atom (qid)))
        (rhs (expr (atom
            (record_assignments
                (field_assignment (field_name) (expr (atom (qid))))
                (field_assignment (field_name) (expr (atom (qid))))))))))

==================
Building records from modules
==================

r = record { M hiding (y); M2 a renaming (w to y) }

---

(source_file
    (function
        (lhs (atom (qid)))
        (rhs (expr (atom
            (record_assignments
                (module_assignment (module_name (qid)) (import_directive (id)))
                (module_assignment (module_name (qid)) (atom (qid))
                    (import_directive (renaming (id) (id))))))))))

==================
Record update
==================

a = record old { a = 0; c = 5 }

---

(source_file
    (function
        (lhs (atom (qid)))
        (rhs (expr (atom
            (record_assignments
                (qid)
                (field_assignment (field_name) (expr (atom (qid))))
                (field_assignment (field_name) (expr (atom (qid))))))))))

==================
Record update in fields
==================

a = record { MyRecord old; a = 0; c = 5}

---

(source_file
    (function
        (lhs (atom (qid)))
        (rhs (expr (atom
            (record_assignments
                (module_assignment (module_name (qid)) (atom (qid)))
                (field_assignment (field_name) (expr (atom (qid))))
                (field_assignment (field_name) (expr (atom (qid))))))))))
