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/elaborate/elabsig.sml
ViewVC logotype

Diff of /sml/trunk/src/compiler/Semant/elaborate/elabsig.sml

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

revision 586, Thu Mar 30 05:08:07 2000 UTC revision 587, Thu Mar 30 09:01:52 2000 UTC
# Line 79  Line 79 
79               (case str               (case str
80                  of M.ERRORstr => strDef                  of M.ERRORstr => strDef
81                   | M.STR{sign,...} =>                   | M.STR{sign,...} =>
82                      (case EPC.lookPath(epContext,MU.strId str)                      (case EPC.lookStrPath(epContext,MU.strId str)
83                         of NONE => strDef                         of NONE => strDef
84                          | SOME entPath => VARstrDef(sign,entPath))                          | SOME entPath => VARstrDef(sign,entPath))
85                   | M.STRSIG _ => bug "lookStrDef")                   | M.STRSIG _ => bug "lookStrDef")
# Line 115  Line 115 
115                        (sortdefs this,(rev others@(item::defs)))                        (sortdefs this,(rev others@(item::defs)))
116                      else loop(defs,this,item::others)                      else loop(defs,this,item::others)
117                    | loop(nil,this,others) = (sortdefs this,rev others)                    | loop(nil,this,others) = (sortdefs this,rev others)
118                      | loop _ = bug "pushDefs:findDefs:loop"
119               in loop(defs,nil,nil)               in loop(defs,nil,nil)
120              end              end
121          fun applyTycDef(tspec as TYCspec{entVar,spec,...},          fun applyTycDef(tspec as TYCspec{entVar,spec,...},
122                          TYCdef{path=spath,tyc,...}) =                          TYCdef{path=spath,tyc,...}) =
123              case spec              (case spec
124                of T.GENtyc{kind=T.FORMAL,arity,eq=eqp,path=tpath,...} =>                of T.GENtyc {kind,arity,eq=eqp,path=tpath,...} =>
125                     (case kind
126                       of T.FORMAL =>
127                    if TU.tyconArity tyc = arity                    if TU.tyconArity tyc = arity
128                    then TYCspec{entVar=entVar, spec=tyc, repl=false,                    then TYCspec{entVar=entVar, spec=tyc, repl=false,
129                                 scope=SP.length spath}                                 scope=SP.length spath}
# Line 134  Line 137 
137                    else (error ("where type definition has wrong arity: " ^                    else (error ("where type definition has wrong arity: " ^
138                                 SP.toString spath);                                 SP.toString spath);
139                          tspec)                          tspec)
140                 | T.GENtyc{kind=T.DATATYPE _,arity,...} =>                      | T.DATATYPE _ =>
141                    (* We allow a where type defn to constrain a datatype spec,                    (* We allow a where type defn to constrain a datatype spec,
142                     * if rhs datatype is "compatible" with spec.  We use                     * if rhs datatype is "compatible" with spec.  We use
143                     * an extremely weak notion of compatibility -- same arity.                     * an extremely weak notion of compatibility -- same arity.
# Line 151  Line 154 
154                     else (error ("where type definition has wrong arity: " ^                     else (error ("where type definition has wrong arity: " ^
155                                  SP.toString spath);                                  SP.toString spath);
156                           tspec)                           tspec)
157                        | _ => bug "elabsig: GENtyc is neither FORMAL nor DATA")
158                 | T.DEFtyc _ =>                 | T.DEFtyc _ =>
159                    (error ("where type defn applied to definitional spec: " ^                    (error ("where type defn applied to definitional spec: " ^
160                            SP.toString spath);                            SP.toString spath);
161                     tspec)                     tspec)
162                   | _ => bug "applyTycDef (1)")
163              | applyTycDef _ = bug "applyTycDef (2)"
164          fun applyStrDefs(spec as STRspec{entVar,sign,def,slot},defs) =          fun applyStrDefs(spec as STRspec{entVar,sign,def,slot},defs) =
165              (* in the case where the where def has a different signature,              (* in the case where the where def has a different signature,
166               * could propagate defs in to the components, as is done currently               * could propagate defs in to the components, as is done currently
# Line 181  Line 187 
187                         | _ => STRspec{entVar=entVar,def=NONE,slot=slot,                         | _ => STRspec{entVar=entVar,def=NONE,slot=slot,
188                                        sign=addWhereDefs(sign,defs,NONE,                                        sign=addWhereDefs(sign,defs,NONE,
189                                                          error,mkStamp)}))                                                          error,mkStamp)}))
190              | applyStrDefs _ = bug "applyStrDefs"
191          fun loop(nil,defs,elems) =  (* all elements processed *)          fun loop(nil,defs,elems) =  (* all elements processed *)
192                (case defs                (case defs
193                   of nil => rev elems  (* all defs consumed *)                   of nil => rev elems  (* all defs consumed *)
# Line 222  Line 229 
229    
230  (* does this belong in ModuleUtil or ElabUtil? DBM *)  (* does this belong in ModuleUtil or ElabUtil? DBM *)
231  and addWhereDefs(sign,nil,nameOp,error,mkStamp) = bug "addWhereDefs"  and addWhereDefs(sign,nil,nameOp,error,mkStamp) = bug "addWhereDefs"
232    | addWhereDefs(sign as SIG{name,closed,fctflag,stamp,    | addWhereDefs(sign as SIG {stamp,name,closed,fctflag,stub,
233                   symbols,elements,boundeps,lambdaty,typsharing,strsharing},                                symbols,elements,boundeps,lambdaty,
234                                  typsharing,strsharing},
235                   whereDefs,nameOp,error,mkStamp) =                   whereDefs,nameOp,error,mkStamp) =
236      SIG{name=case nameOp      SIG{stamp = mkStamp(),
237            (* give modified sig a new stamp
238             * -- could stack stamps *)
239            name=case nameOp
240                 of SOME _ => nameOp (* new name provided *)                 of SOME _ => nameOp (* new name provided *)
241                  | NONE => name, (* retain old name (?) *)                  | NONE => name, (* retain old name (?) *)
242          closed=closed andalso closedDefs whereDefs,          closed=closed andalso closedDefs whereDefs,
243          fctflag=fctflag,          fctflag=fctflag,
         stamp=mkStamp(), (* give modified sig a new stamp  
                              -- could stack stamps *)  
244          symbols=symbols,          symbols=symbols,
245          elements=pushDefs(elements,whereDefs,error,mkStamp),          elements=pushDefs(elements,whereDefs,error,mkStamp),
246          boundeps=ref NONE,          boundeps=ref NONE,
247          lambdaty=ref NONE,          lambdaty=ref NONE,
248          typsharing=typsharing,          typsharing=typsharing,
249          strsharing=strsharing}          strsharing=strsharing,
250            stub = NONE}
251      | addWhereDefs _ = bug "addWhereDefs"
252    
253  fun localPath(p,elements) =  fun localPath(p,elements) =
254        (MU.getSpec(elements,SP.first p); true) handle MU.Unbound _ => false        (MU.getSpec(elements,SP.first p); true) handle MU.Unbound _ => false
# Line 366  Line 377 
377                      | NONE => T.GENtyc{stamp = mkStamp(),                      | NONE => T.GENtyc{stamp = mkStamp(),
378                                         path = IP.IPATH [name],                                         path = IP.IPATH [name],
379                                         arity = arity, eq = ref eqprop,                                         arity = arity, eq = ref eqprop,
380                                         kind = T.FORMAL}                                          kind = T.FORMAL,
381                                            stub = NONE}
382    
383                  val ev = mkStamp()                  val ev = mkStamp()
384                  val etyc = T.PATHtyc{arity=arity,entPath=[ev],                  val etyc = T.PATHtyc{arity=arity,entPath=[ev],
# Line 389  Line 401 
401   *  Need to check that this will do the "right thing" in instantiate. *)   *  Need to check that this will do the "right thing" in instantiate. *)
402  fun elabDATArepl(name,syms,env,elements,symbols,region) =  fun elabDATArepl(name,syms,env,elements,symbols,region) =
403      let val tyc = Lookup.lookTyc(env, SP.SPATH syms, error region)      let val tyc = Lookup.lookTyc(env, SP.SPATH syms, error region)
404            (* rhs is not local to current (outermost) signature *)
405            fun no_datatype () =
406                (error region EM.COMPLAIN
407                       "rhs of datatype replication spec not a datatype"
408                       EM.nullErrorBody;
409                       (env,elements,symbols))
410       in case tyc       in case tyc
411            of T.PATHtyc{entPath,arity,...} =>            of T.PATHtyc{entPath,arity,...} =>
412                (* local to current outermost signature *)                (* local to current outermost signature *)
# Line 396  Line 414 
414                let val sigContext = elements::sctxt                let val sigContext = elements::sctxt
415                    val tyc' = EX.expandTycon(tyc,sigContext,entEnv)                    val tyc' = EX.expandTycon(tyc,sigContext,entEnv)
416                 in case tyc'                 in case tyc'
417                     of T.GENtyc{kind=T.DATATYPE{index, family as {members,...},                     of T.GENtyc { kind, ... } =>
418                                                 stamps, freetycs, ...}, ...} =>                        (case kind of
419                               T.DATATYPE{index, family as {members,...},
420                                          stamps, freetycs, ...} =>
421                          let val stamp = Vector.sub(stamps,index)                          let val stamp = Vector.sub(stamps,index)
422                              val {tycname, arity, dcons, sign, lazyp, ...} =                              val {tycname, arity, dcons, sign, lazyp, ...} =
423                                   Vector.sub(members,index)                                   Vector.sub(members,index)
424                              (* add the type *)                              (* add the type *)
425                              val ev = mkStamp()                              val ev = mkStamp()
426                              (* spec uses wrapped version of the PATHtyc!! *)                              (* spec uses wrapped version of the PATHtyc!! *)
427                              val tspec = TYCspec{spec=TU.wrapDef(tyc,mkStamp()),                                 val tspec = TYCspec{spec=TU.wrapDef(tyc,
428                                                                       mkStamp()),
429                                                  entVar=ev,repl=true,scope=0}                                                  entVar=ev,repl=true,scope=0}
430                              val elements' =                              val elements' =
431                                add(name,tspec,elements,error region)                                add(name,tspec,elements,error region)
# Line 424  Line 445 
445                                     tyc) (* external tyc *)                                     tyc) (* external tyc *)
446                                    handle EE.Unbound =>                                    handle EE.Unbound =>
447                                      (* tyc is local to sig *)                                      (* tyc is local to sig *)
448                                      T.PATHtyc{entPath=prefix @ ep,arity=arity,                                             T.PATHtyc{entPath=prefix @ ep,
449                                                         arity=arity,
450                                                path=path})                                                path=path})
451                                | expandTyc(T.FREEtyc n) =                                | expandTyc(T.FREEtyc n) =
452                                    ((List.nth(freetycs,n)) handle _ =>                                     ((List.nth(freetycs,n))
453                                        handle _ =>
454                                       bug "unexpected freetycs in expandTyc")                                       bug "unexpected freetycs in expandTyc")
455                                | expandTyc(T.RECtyc n) =                                | expandTyc(T.RECtyc n) =
456                                    if n = index then etyc                                    if n = index then etyc
# Line 435  Line 458 
458                                    else let val stamp = Vector.sub(stamps,n)                                    else let val stamp = Vector.sub(stamps,n)
459                                             val {tycname,arity,...} =                                             val {tycname,arity,...} =
460                                               Vector.sub(members,n)                                               Vector.sub(members,n)
                                            val tyc_id = ModuleId.TYCid stamp  
461                                          in T.PATHtyc{arity=arity,                                          in T.PATHtyc{arity=arity,
462                                                       entPath=prefix@[stamp],                                                       entPath=prefix@[stamp],
463                                                       path=IP.IPATH[tycname]}                                                       path=IP.IPATH[tycname]}
# Line 472  Line 494 
494    
495                           in (env', elements'', symbols'')                           in (env', elements'', symbols'')
496                          end                          end
497                       | _ => (* rhs does not denote a datatype *)                           | _ => no_datatype ())
498                          (error region EM.COMPLAIN                      | _ => no_datatype ()
                           "rhs of datatype replication spec not a datatype"  
                           EM.nullErrorBody;  
                          (env,elements,symbols))  
499                end                end
500             | T.GENtyc{arity,kind=T.DATATYPE _,...} =>             | T.GENtyc {arity,kind,...} =>
501                 (case kind
502                   of T.DATATYPE _ =>
503                (* rhs is not local to current outermost signature *)                (* rhs is not local to current outermost signature *)
504                let val (tyc',_) = MU.relativizeTyc epContext tyc                let val (tyc',_) = MU.relativizeTyc epContext tyc
505                 in case tyc'                 in case tyc'
# Line 487  Line 508 
508                          let (* add the type *)                          let (* add the type *)
509                              val ev = mkStamp()                              val ev = mkStamp()
510                              (* spec uses wrapped version of the PATHtyc!! *)                              (* spec uses wrapped version of the PATHtyc!! *)
511                              val tspec = TYCspec{spec=TU.wrapDef(tyc',mkStamp()),                               val tspec =
512                                     TYCspec{spec=TU.wrapDef(tyc',mkStamp()),
513                                                  entVar=ev,repl=true,scope=0}                                                  entVar=ev,repl=true,scope=0}
514                              val elements' = add(name,tspec,elements,error region)                               val elements' =
515                                     add(name,tspec,elements,error region)
516                              val etyc = T.PATHtyc{arity=arity,entPath=[ev],                              val etyc = T.PATHtyc{arity=arity,entPath=[ev],
517                                                   path=IP.IPATH[name]}                                                   path=IP.IPATH[name]}
518                              val env' = SE.bind(name, B.TYCbind etyc, env)                              val env' = SE.bind(name, B.TYCbind etyc, env)
# Line 498  Line 521 
521                              (* get the dcons -- quick and dirty (buggy?) hack *)                              (* get the dcons -- quick and dirty (buggy?) hack *)
522                              val dcons = TU.extractDcons tyc                              val dcons = TU.extractDcons tyc
523                              fun addDcons([], elems, syms) = (elems, syms)                              fun addDcons([], elems, syms) = (elems, syms)
524                                | addDcons((d as T.DATACON{name,rep,const,lazyp,sign,                                 | addDcons((d as T.DATACON{name,rep,const,
525                                                              lazyp,sign,
526                                                           typ})::ds,                                                           typ})::ds,
527                                           elems, syms) =                                           elems, syms) =
528                                    let val nd =                                    let val nd =
529                                           T.DATACON {name=name,rep=rep,lazyp=lazyp,                                           T.DATACON {name=name,rep=rep,
530                                                        lazyp=lazyp,
531                                                      const=const,sign=sign,                                                      const=const,sign=sign,
532                                                      typ= #1(MU.relativizeType epContext typ)}                                                      typ= #1(MU.relativizeType
533                                                                    epContext typ)}
534                                        val dspec = CONspec{spec=nd, slot=NONE}                                        val dspec = CONspec{spec=nd, slot=NONE}
535                                        val elems' = add(name, dspec, elems, error region)                                       val elems' =
536                                             add(name, dspec, elems, error region)
537                                     in addDcons(ds, elems', name::syms)                                     in addDcons(ds, elems', name::syms)
538                                    end                                    end
539    
540                              val (elements'', symbols'') =                              val (elements'', symbols'') =
541                                  addDcons(dcons, elements', symbols')                                  addDcons(dcons, elements', symbols')
542                           in (env', elements'', symbols'')                           in (env', elements'', symbols'')
   
543                          end                          end
544                       | _ => (* fixed global *)                       | _ => (* fixed global *)
545                          let (* add the type *)                          let (* add the type *)
546                              val ev = mkStamp()                              val ev = mkStamp()
547                              val tspec = M.TYCspec{spec=TU.wrapDef(tyc,mkStamp()),                               val tspec =
548                                     M.TYCspec{spec=TU.wrapDef(tyc,mkStamp()),
549                                                    entVar=ev,repl=true,scope=0}                                                    entVar=ev,repl=true,scope=0}
550                                  (* put in the constant tyc                                  (* put in the constant tyc
551                                     how to treat this in instantiate?*)                                     how to treat this in instantiate?*)
552                              val elements' = add(name,tspec,elements,error region)                               val elements' =
553                                     add(name,tspec,elements,error region)
554                              val etyc = T.PATHtyc{arity=arity,entPath=[ev],                              val etyc = T.PATHtyc{arity=arity,entPath=[ev],
555                                                   path=IP.IPATH[name]}                                                   path=IP.IPATH[name]}
556                              val env' = SE.bind(name, B.TYCbind etyc, env)                              val env' = SE.bind(name, B.TYCbind etyc, env)
# Line 533  Line 561 
561                                | addDcons((dc as T.DATACON{name,...})::dcs,                                | addDcons((dc as T.DATACON{name,...})::dcs,
562                                           elems, syms) =                                           elems, syms) =
563                                    let val dspec = CONspec{spec=dc, slot=NONE}                                    let val dspec = CONspec{spec=dc, slot=NONE}
564                                        val elems' = add(name, dspec, elems, error region)                                       val elems' =
565                                             add(name, dspec, elems, error region)
566                                     in addDcons(dcs, elems', name::syms)                                     in addDcons(dcs, elems', name::syms)
567                                    end                                    end
568                              val (elements'', symbols'') =                              val (elements'', symbols'') =
# Line 541  Line 570 
570                           in (env', elements'', symbols'')                           in (env', elements'', symbols'')
571                          end                          end
572                end                end
573             | _ => (* rhs is not local to current (outermost) signature *)                  | _ => no_datatype ())
574               (error region EM.COMPLAIN             | _ => no_datatype ()
                 "rhs of datatype replication spec not a datatype"  
                 EM.nullErrorBody;  
               (env,elements,symbols))  
575      end      end
576    
577    
# Line 560  Line 586 
586    
587        fun isFree (T.PATHtyc _) = true        fun isFree (T.PATHtyc _) = true
588          | isFree tc =          | isFree tc =
589              (case EPC.lookPath(epContext, MU.tycId tc)              (case EPC.lookTycPath(epContext, MU.tycId tc)
590                of SOME _ => true                of SOME _ => true
591                 | _ => false)                 | _ => false)
592    
# Line 580  Line 606 
606        val viztc = (fn tc => #1(MU.relativizeTyc epContext tc))        val viztc = (fn tc => #1(MU.relativizeTyc epContext tc))
607        val ndtycs =        val ndtycs =
608          (case dtycs          (case dtycs
609            of ((T.GENtyc{kind=T.DATATYPE{index=0,family,freetycs,            of (T.GENtyc { stamp, kind, ... } :: _) =>
610                                          stamps, root}, stamp, ...})::_) =>               (case kind of
611                      T.DATATYPE{index=0,family,freetycs, stamps, root} =>
612                 let (* MAJOR GROSS HACK: use the stamp of the type as its                 let (* MAJOR GROSS HACK: use the stamp of the type as its
613                      * entVar. This makes possible to reconstruct the entPath                         * entVar. This makes possible to reconstruct the
614                      * associated with a RECty when translating the types of                         * entPath associated with a RECty when translating the
615                      * domains in elabDATArepl.  See >>HACK<< signs.                         * types of domains in elabDATArepl.  See >>HACK<< signs.
616                      *)                      *)
617                     val rtev = stamp (* mkStamp() >>HACK<< *)                     val rtev = stamp (* mkStamp() >>HACK<< *)
618                     val nfreetycs = map viztc freetycs                     val nfreetycs = map viztc freetycs
619                     fun newdt (dt as T.GENtyc{kind=T.DATATYPE{index=i,...},                        fun newdt (dt as T.GENtyc {kind,arity,eq,path,...}) =
620                                               arity, eq, path, ...}) =                            (case kind of
621                                   T.DATATYPE{index=i,...} =>
622                           let val s = Vector.sub(stamps, i)                           let val s = Vector.sub(stamps, i)
623                               val (ev, rt) =                               val (ev, rt) =
624                                 if i=0 then (rtev, NONE)                                 if i=0 then (rtev, NONE)
625                                 else (s (* mkStamp() >>HACK<< *), SOME rtev)                                         else (s (* mkStamp() >>HACK<< *),
626                                                 SOME rtev)
627                               val nkind =                               val nkind =
628                                 T.DATATYPE{index=i, stamps=stamps,                                 T.DATATYPE{index=i, stamps=stamps,
629                                            freetycs=nfreetycs,root=rt,                                            freetycs=nfreetycs,root=rt,
630                                            family=family}                                            family=family}
631                               val ndt =                               val ndt =
632                                 T.GENtyc{arity=arity, eq=eq, kind=nkind,                                         T.GENtyc{arity=arity, eq=eq,
633                                                    kind=nkind,
634                                                    stub=NONE,
635                                          path=path, stamp=s}                                          path=path, stamp=s}
636    
637                               val _ = EPC.bindPath(epContext, MU.tycId ndt, ev)                                     val _ =
638                                           EPC.bindTycPath(epContext,
639                                                           MU.tycId ndt, ev)
640                            in (ev, arity, ndt)                            in (ev, arity, ndt)
641                           end                           end
642                      | newdt _ = bug "unexpected case in newdtyc"                               | _ => bug "unexpected case in newdtyc (1)")
643                            | newdt _ = bug "unexpected case in newdtyc (2)"
644                 in map newdt dtycs                 in map newdt dtycs
645                end                end
646            | _ => bug "unexpected tycs in bindNewTycs")                  | _ => bug "unexpected tycs in bindNewTycs (1)")
647               | _ => bug "unexpected tycs in bindNewTycs (2)")
648    
649        val nwtycs =        val nwtycs =
650          let fun newwt (T.DEFtyc{stamp, tyfun=T.TYFUN{arity,body},          let fun newwt (T.DEFtyc{stamp, tyfun=T.TYFUN{arity,body},
# Line 618  Line 653 
653                    val nwt =                    val nwt =
654                      T.DEFtyc{stamp=stamp,strict=strict,path=path,                      T.DEFtyc{stamp=stamp,strict=strict,path=path,
655                               tyfun=T.TYFUN{arity=arity, body=vizty body}}                               tyfun=T.TYFUN{arity=arity, body=vizty body}}
656                    val _ = EPC.bindPath(epContext, MU.tycId nwt, ev)                      val _ = EPC.bindTycPath(epContext, MU.tycId nwt, ev)
657                 in (ev, arity, nwt)                 in (ev, arity, nwt)
658                end                end
659                  | newwt _ = bug "newwt"
660           in map newwt wtycs           in map newwt wtycs
661          end          end
662    
# Line 694  Line 730 
730                                             epContext, region, compInfo)                                             epContext, region, compInfo)
731    
732                                val sign' =                                val sign' =
733                                  SIG{name=NONE, closed=false,fctflag=fflag',                                  SIG{stamp = mkStamp(),
734                                      stamp=mkStamp(), symbols=symbols',                                      name=NONE, closed=false,fctflag=fflag',
735                                        symbols=symbols',
736                                      elements=elements', boundeps=ref NONE,                                      elements=elements', boundeps=ref NONE,
737                                      lambdaty=ref NONE, typsharing=tycShare',                                      lambdaty=ref NONE, typsharing=tycShare',
738                                      strsharing=strShare'}                                      strsharing=strShare',
739                                        stub = NONE}
740    
741                             in sign'                             in sign'
742                            end                            end
# Line 739  Line 777 
777        val elements' = add(name, strspec, elements, err)        val elements' = add(name, strspec, elements, err)
778        val _ = debugmsg "<<elabSTRspec"        val _ = debugmsg "<<elabSTRspec"
779    
780        val fflag = case sign of SIG{fctflag=ff,...} => ff        val fflag = case sign of SIG {fctflag,...} => fctflag
781                               | _ => false                               | _ => false
782    
783     in (env', elements', name::syms, fflag)     in (env', elements', name::syms, fflag)
# Line 1048  Line 1086 
1086                                region, compInfo)                                region, compInfo)
1087                   val _ = debugmsg "--elabSig: after elabBody"                   val _ = debugmsg "--elabSig: after elabBody"
1088    
1089                   val sign=SIG{name = nameOp,                   val sign=SIG{stamp = mkStamp(),
1090                                  name = nameOp,
1091                                closed = case nameOp                                closed = case nameOp
1092                                           of SOME _ => true                                           of SOME _ => true
1093                                            | NONE => false,                                            | NONE => false,
1094                                fctflag=fflag,                                fctflag=fflag,
                               stamp = mkStamp(),  
1095                                symbols = syms,                                symbols = syms,
1096                                elements = elements,                                elements = elements,
1097                                boundeps = ref NONE,                                boundeps = ref NONE,
1098                                lambdaty = ref NONE,                                lambdaty = ref NONE,
1099                                typsharing = tycShare,                                typsharing = tycShare,
1100                                strsharing = strShare}                                strsharing = strShare,
1101                                  stub = NONE}
1102    
1103                in debugPrint("--elabSig: returned signature:",                in debugPrint("--elabSig: returned signature:",
1104                     (fn pps => fn s => PPModules.ppSignature pps (s,env,6)),sign);                     (fn pps => fn s => PPModules.ppSignature pps (s,env,6)),sign);
# Line 1069  Line 1108 
1108    
1109           | MarkSig(sigexp',region') => bug "elabSig0"           | MarkSig(sigexp',region') => bug "elabSig0"
1110               (* elabWhere should have stripped this *)               (* elabWhere should have stripped this *)
1111             | _ => bug "elabSig0:sigexp"
1112    
1113      val sign =      val sign =
1114          case sign          case sign

Legend:
Removed from v.586  
changed lines
  Added in v.587

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