60 |
| build ([], _, _, _) = bug "build mismatch: too many types" |
| build ([], _, _, _) = bug "build mismatch: too many types" |
61 |
| build ((imp as (pid, tr)) :: rest, tyl, i, rvl) = let |
| build ((imp as (pid, tr)) :: rest, tyl, i, rvl) = let |
62 |
val lc = cnt tr |
val lc = cnt tr |
63 |
|
fun copy fdec = let val F.FIX([fdec], F.RET[]) = |
64 |
|
FU.copy IntmapF.empty (F.FIX([fdec], F.RET[])) |
65 |
|
in fdec end |
66 |
in |
in |
67 |
case Option.map (FU.copy LV.mkLvar) (symLook pid) of |
case Option.map copy (symLook pid) of |
68 |
NONE => let |
NONE => let |
69 |
fun h (0, tyl, i, rvl) = build (rest, tyl, i, rvl) |
fun h (0, tyl, i, rvl) = build (rest, tyl, i, rvl) |
70 |
| h (n, ty :: tyl, i, rvl) = let |
| h (n, ty :: tyl, i, rvl) = let |