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/branches/primop-branch-3/compiler/Elaborator/print/ppmod.sml
ViewVC logotype

Diff of /sml/branches/primop-branch-3/compiler/Elaborator/print/ppmod.sml

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

revision 2570, Sat May 19 21:06:33 2007 UTC revision 2571, Sun May 20 15:12:54 2007 UTC
# Line 103  Line 103 
103  fun sigToEnv(M.SIG {elements,...}) =  fun sigToEnv(M.SIG {elements,...}) =
104      let fun bindElem ((sym,spec), env) =      let fun bindElem ((sym,spec), env) =
105            (case spec            (case spec
106              of M.TYCspec{spec,...} => SE.bind(sym,B.TYCbind spec,env)              of M.TYCspec{info=M.RegTycSpec{spec,...},...} =>
107                    SE.bind(sym,B.TYCbind spec,env)
108                 | M.TYCspec{info=M.InfTycSpec{name,arity},...} =>
109                    let val tyc =
110                            T.GENtyc{stamp=Stamps.special "x", arity=arity,
111                                     eq=ref(T.UNDEF), kind=T.FORMAL, stub=NONE,
112                                     path=InvPath.extend(InvPath.empty,name)}
113                    in SE.bind(sym,B.TYCbind tyc,env)
114                    end
115               | M.STRspec{sign,slot,def,entVar=ev} =>               | M.STRspec{sign,slot,def,entVar=ev} =>
116                   SE.bind(sym,B.STRbind(M.STRSIG{sign=sign,entPath=[ev]}),env)                   SE.bind(sym,B.STRbind(M.STRSIG{sign=sign,entPath=[ev]}),env)
117               | M.CONspec{spec=dcon, ...} => SE.bind(sym,B.CONbind dcon,env)               | M.CONspec{spec=dcon, ...} => SE.bind(sym,B.CONbind dcon,env)
# Line 308  Line 316 
316                     closeBox ppstrm;                     closeBox ppstrm;
317                    closeBox ppstrm)                    closeBox ppstrm)
318    
319                | M.TYCspec{spec,entVar,repl,scope} =>                | M.TYCspec{entVar,info} =>
320                   (if first then () else newline ppstrm;                   (if first then () else newline ppstrm;
321                    openHVBox ppstrm (PP.Rel 0);                    case info
322                        of M.RegTycSpec{spec,repl,scope} =>
323                           (openHVBox ppstrm (PP.Rel 0);
324                     case entityEnvOp                     case entityEnvOp
325                       of NONE =>                       of NONE =>
326                           if repl then                           if repl then
327                             ppReplBind ppstrm (spec,env)                             ppReplBind ppstrm (spec,env)
328                           else (case spec                               else ppTycBind ppstrm (spec,env)
                                  of T.ERRORtyc =>  
                                      (* dummy TYCspec in inferred signature  
                                       * We don't know the arity without an  
                                       * entity env (next case), so we have to  
                                       * punt on printing arity *)  
                                      (pps ppstrm "type";  
                                       break ppstrm {nsp=1,offset=0};                                                  ppSym ppstrm sym)  
                                   | _ => ppTycBind ppstrm (spec,env))  
329                        | SOME eenv =>                        | SOME eenv =>
330                           (case EE.look(eenv,entVar)                           (case EE.look(eenv,entVar)
331                              of M.TYCent tyc =>                              of M.TYCent tyc =>
# Line 341  Line 343 
343                           pps ppstrm (Int.toString scope))                           pps ppstrm (Int.toString scope))
344                     else ();                     else ();
345                    closeBox ppstrm)                    closeBox ppstrm)
346                         | M.InfTycSpec{name,arity} =>
347                           (openHVBox ppstrm (PP.Rel 0);
348                             case entityEnvOp
349                               of NONE =>
350                                   (pps ppstrm "type";
351                                    break ppstrm {nsp=1,offset=0};
352                                    ppFormals ppstrm arity; pps ppstrm " ";
353                                    ppSym ppstrm name)
354                                | SOME eenv =>
355                                   (case EE.look(eenv,entVar)
356                                      of M.TYCent tyc =>
357                                           ppTycBind ppstrm (tyc,env)
358                                       | M.ERRORent => pps ppstrm "<ERRORent>"
359                                       | _ => bug "ppElements:TYCent");
360                             if !internals
361                             then (newline ppstrm;
362                                   pps ppstrm "entVar: ";
363                                   pps ppstrm (EntPath.entVarToString entVar))
364                             else ();
365                            closeBox ppstrm))
366    
367                | M.VALspec{spec=typ,...} =>                | M.VALspec{spec=typ,...} =>
368                   (if first then () else newline ppstrm;                   (if first then () else newline ppstrm;

Legend:
Removed from v.2570  
changed lines
  Added in v.2571

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