Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/compiler/Semant/types/cproto.sml
ViewVC logotype

Diff of /sml/trunk/src/compiler/Semant/types/cproto.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1178, Mon Mar 25 20:51:48 2002 UTC revision 1179, Tue Mar 26 03:04:46 2002 UTC
# Line 133  Line 133 
133                           (CT.C_STRUCT (map (#1 o dt) fl), P.CCI32)                           (CT.C_STRUCT (map (#1 o dt) fl), P.CCI32)
134                         | _ => bad ())                         | _ => bad ())
135    
136              fun rdt t =              fun rdt (t, ml_args) =
137                  if TU.equalType (t, BT.unitTy) then                  if TU.equalType (t, BT.unitTy) then
138                      (CT.C_void, NONE)                      (CT.C_void, NONE, ml_args)
139                  else let val (ct, mt) = dt t                  else let val (ct, mt) = dt t
140                       in                       in
141                           (ct, SOME mt)                           case ct of
142                                 (CT.C_STRUCT _) => (ct, SOME mt, mt :: ml_args)
143                               | _ => (ct, SOME mt, ml_args)
144                       end                       end
145    
146              val (fty, nlists) = unlist (t, 0)              val (fty, nlists) = unlist (t, 0)
# Line 150  Line 152 
152              case getDomainRange fty of              case getDomainRange fty of
153                  NONE => bad ()                  NONE => bad ()
154                | SOME (d, r) =>                | SOME (d, r) =>
155                  let val (retTy, retML) = rdt r                  let val (argTys, argsML) =
                     val (argTys, argsML) =  
156                          if TU.equalType (d, BT.unitTy) then ([], [])                          if TU.equalType (d, BT.unitTy) then ([], [])
157                          else case BT.getFields d of                          else case BT.getFields d of
158                                 SOME (_ :: fl) =>                                   SOME (_ :: fl) => ListPair.unzip (map dt fl)
                                let val args = map dt fl  
                                in  (map #1 args, map #2 args)  
                                end  
159                               | _ => bad ()                               | _ => bad ()
160                        val (retTy, retML, argsML) = rdt (r, argsML)
161                  in                  in
162                      { c_proto = { conv = conv,                      { c_proto = { conv = conv,
163                                    retTy = retTy,                                    retTy = retTy,

Legend:
Removed from v.1178  
changed lines
  Added in v.1179

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0