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

Diff of /sml/trunk/src/compiler/Semant/modules/modules.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 23  Line 23 
23  type sharespec = SP.path list  (* only internal sharing *)  type sharespec = SP.path list  (* only internal sharing *)
24    
25  datatype Signature  datatype Signature
26    = SIG of {name : S.symbol option,    = SIG of sigrec
             closed : bool,  
             fctflag : bool,  
             stamp : ST.stamp,  
             symbols : S.symbol list,  
             elements : (S.symbol * spec) list,  
             boundeps : (EP.entPath * LT.tkind) list option ref,  
             lambdaty : (LT.lty * DI.depth) option ref,  
             typsharing: sharespec list,  
             strsharing: sharespec list}  
27    | ERRORsig    | ERRORsig
28    
29  (*  (*
# Line 69  Line 60 
60  and extDef  and extDef
61    = TYCdef of    = TYCdef of
62        {path : SymPath.path,        {path : SymPath.path,
63         tyc : Types.tycon,         tyc : T.tycon,
64         relative : bool} (* does tyc contain entity paths *)         relative : bool} (* does tyc contain entity paths *)
65    | STRdef of SP.path * strDef    | STRdef of SP.path * strDef
66    
# Line 80  Line 71 
71  (* ------------------------- structures and functors ---------------------- *)  (* ------------------------- structures and functors ---------------------- *)
72    
73  and Structure  and Structure
74    = STR of {sign : Signature, rlzn : strEntity,    = STR of strrec
             access: A.access, info : II.inl_info}  
75    | STRSIG of {sign: Signature, entPath : EP.entPath}    | STRSIG of {sign: Signature, entPath : EP.entPath}
76    | ERRORstr    | ERRORstr
77    
78  and Functor  and Functor
79    = FCT of {sign : fctSig, rlzn : fctEntity,    = FCT of fctrec
             access: A.access, info : II.inl_info}  
80    | ERRORfct    | ERRORfct
81    
82  (* ----------------------- entity-related definitions -------------------- *)  (* ----------------------- entity-related definitions -------------------- *)
# Line 103  Line 92 
92    = CLOSURE of {param : EP.entVar, body : strExp, env : entityEnv}    = CLOSURE of {param : EP.entVar, body : strExp, env : entityEnv}
93    
94  and stampExp  and stampExp
95    = CONST of ST.stamp  (* an existing stamp *)    = (* CONST of ST.stamp  (* an existing stamp *)
96    | GETSTAMP of strExp    | *) GETSTAMP of strExp
97    | NEW                (* generate a new stamp *)    | NEW                (* generate a new stamp *)
98    
99  and tycExp (* expression evaluating to a TYCentity *)  and tycExp (* expression evaluating to a TYCentity *)
100    = VARtyc of EP.entPath                          (* selection from cur-EE *)    = VARtyc of EP.entPath                          (* selection from cur-EE *)
101    | CONSTtyc of Types.tycon                       (* actual tycon *)    | CONSTtyc of T.tycon                       (* actual tycon *)
102    | FORMtyc of Types.tycon                        (* formal tycon *)    | FORMtyc of T.tycon                        (* formal tycon *)
103    
104  and strExp  and strExp
105    = VARstr of EP.entPath       (* selection from current entityEnv *)    = VARstr of EP.entPath       (* selection from current entityEnv *)
# Line 151  Line 140 
140    | EMPTYdec    | EMPTYdec
141    
142  and entityEnv  and entityEnv
143    = MARKeenv of ST.stamp * entityEnv    = MARKeenv of envrec
144    | BINDeenv of entity EP.EvDict.map * entityEnv    | BINDeenv of entity EP.EvDict.map * entityEnv
145    | NILeenv    | NILeenv
146    | ERReenv    | ERReenv
147    
148  withtype strEntity = {stamp : ST.stamp,  and modtree =
149        TYCNODE of Types.gtrec
150      | SIGNODE of sigrec
151      | STRNODE of strrec
152      | FCTNODE of fctrec
153      | ENVNODE of envrec
154      | BRANCH of modtree list
155    
156    withtype stubinfo =
157        {owner : PersStamps.persstamp,
158         lib   : bool,
159         tree  : modtree}
160    
161    and sigrec =
162        {stamp      : ST.stamp,
163         name       : S.symbol option,
164         closed     : bool,
165         fctflag    : bool,
166         symbols    : S.symbol list,
167         elements   : (S.symbol * spec) list,
168         boundeps   : (EP.entPath * LT.tkind) list option ref,
169         lambdaty   : (LT.lty * DI.depth) option ref,
170         typsharing : sharespec list,
171         strsharing : sharespec list,
172         stub       : stubinfo option}
173    
174    and envrec =
175        {stamp : ST.stamp,
176         env   : entityEnv,
177         stub  : stubinfo option}
178    
179    and strEntity =
180        {stamp    : ST.stamp,
181                        entities : entityEnv,                        entities : entityEnv,
182                        lambdaty : (LT.lty * DI.depth) option ref,                        lambdaty : (LT.lty * DI.depth) option ref,
183                        rpath : IP.path}       rpath    : IP.path,
184         stub     : stubinfo option}
185    
186    and strrec =
187        {sign   : Signature,
188         rlzn   : strEntity,
189         access : A.access,
190         info   : II.inl_info}
191    
192  and fctEntity = {stamp : ST.stamp,  and fctEntity =
193        {stamp    : ST.stamp,
194                   closure : fctClosure,                   closure : fctClosure,
195                   lambdaty : (LT.lty * DI.depth) option ref,                   lambdaty : (LT.lty * DI.depth) option ref,
196                   tycpath : T.tycpath option,                   tycpath : T.tycpath option,
197                   rpath : IP.path}       rpath    : IP.path,
198         stub     : stubinfo option}
199    
200    and fctrec =
201        {sign   : fctSig,
202         rlzn   : fctEntity,
203         access : A.access,
204         info   : II.inl_info}
205    
206  (* the stamp and arith inside T.tycon are critical *)  (* the stamp and arith inside T.tycon are critical *)
207  and tycEntity = T.tycon  and tycEntity = T.tycon
# Line 183  Line 219 
219  val bogusRpath = IP.IPATH[S.strSymbol "Bogus"]  val bogusRpath = IP.IPATH[S.strSymbol "Bogus"]
220    
221  val bogusStrEntity : strEntity =  val bogusStrEntity : strEntity =
222        {stamp = bogusStrStamp, entities = ERReenv,      { stamp = bogusStrStamp,
223         lambdaty = ref NONE, rpath = bogusRpath}        entities = ERReenv, lambdaty = ref NONE, rpath = bogusRpath,
224          stub = NONE}
225    
226  val bogusSig : Signature =  val bogusSig : Signature =
227         SIG {name=NONE, closed=true, fctflag=false,      SIG {stamp = bogusSigStamp,
228              stamp=bogusSigStamp, symbols=[],           name=NONE, closed=true, fctflag=false,
229             symbols=[],
230              elements=[], boundeps=ref NONE, lambdaty=ref NONE,              elements=[], boundeps=ref NONE, lambdaty=ref NONE,
231              typsharing=[], strsharing=[]}           typsharing=[], strsharing=[],
232             stub = NONE}
233    
234  val bogusFctEntity : fctEntity =  val bogusFctEntity : fctEntity =
235        {stamp = bogusFctStamp,        {stamp = bogusFctStamp,
236         closure = CLOSURE{param=EP.bogusEntVar,         closure = CLOSURE{param=EP.bogusEntVar,
237                           body= CONSTstr bogusStrEntity,                           body= CONSTstr bogusStrEntity,
238                           env=NILeenv},                           env=NILeenv},
239         tycpath=NONE, lambdaty = ref NONE, rpath = bogusRpath}       tycpath=NONE, lambdaty = ref NONE, rpath = bogusRpath,
240         stub = NONE}
241    
242  end (* local *)  end (* local *)
243  end (* structure Modules *)  end (* structure Modules *)
   

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