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/cm/semant/members.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/semant/members.sml

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

revision 299, Thu May 27 13:53:27 1999 UTC revision 301, Fri May 28 09:43:39 1999 UTC
# Line 29  Line 29 
29      val build :      val build :
30          collection * SymbolSet.set option * (string -> unit) *          collection * SymbolSet.set option * (string -> unit) *
31          GeneralParams.info          GeneralParams.info
32          -> impexp SymbolMap.map          -> impexp SymbolMap.map * GroupGraph.privileges
33    
34      val subgroups : collection -> GroupGraph.group list      val subgroups : collection -> GroupGraph.group list
35    
# Line 56  Line 56 
56                          gimports: impexp SymbolMap.map,                          gimports: impexp SymbolMap.map,
57                          smlfiles: smlinfo list,                          smlfiles: smlinfo list,
58                          localdefs: smlinfo SymbolMap.map,                          localdefs: smlinfo SymbolMap.map,
59                          subgroups: GG.group list }                          subgroups: GG.group list,
60                            reqpriv: GG.privileges }
61    
62      val empty =      val empty =
63          COLLECTION { imports = SymbolMap.empty,          COLLECTION { imports = SymbolMap.empty,
64                       gimports = SymbolMap.empty,                       gimports = SymbolMap.empty,
65                       smlfiles = [],                       smlfiles = [],
66                       localdefs = SymbolMap.empty,                       localdefs = SymbolMap.empty,
67                       subgroups = [] }                       subgroups = [],
68                         reqpriv = StringSet.empty }
69    
70      fun sequential (COLLECTION c1, COLLECTION c2, error) = let      fun sequential (COLLECTION c1, COLLECTION c2, error) = let
71          fun describeSymbol (s, r) = let          fun describeSymbol (s, r) = let
# Line 89  Line 91 
91                       gimports = gi_union (#gimports c1, #gimports c2),                       gimports = gi_union (#gimports c1, #gimports c2),
92                       smlfiles = #smlfiles c1 @ #smlfiles c2,                       smlfiles = #smlfiles c1 @ #smlfiles c2,
93                       localdefs = ld_union (#localdefs c1, #localdefs c2),                       localdefs = ld_union (#localdefs c1, #localdefs c2),
94                       subgroups = #subgroups c1 @ #subgroups c2 }                       subgroups = #subgroups c1 @ #subgroups c2,
95                         reqpriv = StringSet.union (#reqpriv c1, #reqpriv c2) }
96      end      end
97    
98      fun expandOne (gp, rparse) arg = let      fun expandOne (gp, rparse) arg = let
# Line 101  Line 104 
104              fun w0 s = error EM.WARN s EM.nullErrorBody              fun w0 s = error EM.WARN s EM.nullErrorBody
105              val expansions = PrivateTools.expand e0 (sourcepath, class)              val expansions = PrivateTools.expand e0 (sourcepath, class)
106              fun exp2coll (PrivateTools.GROUP p) = let              fun exp2coll (PrivateTools.GROUP p) = let
107                      val g as GG.GROUP { exports = i, islib, ... } = rparse p                      val g as GG.GROUP { exports = i, islib, privileges, ... } =
108                            rparse p
109                      val gi = if islib then SymbolMap.empty else i                      val gi = if islib then SymbolMap.empty else i
110                  in                  in
111                      COLLECTION { imports = i, gimports = gi, smlfiles = [],                      COLLECTION { imports = i, gimports = gi, smlfiles = [],
112                                   localdefs = SymbolMap.empty,                                   localdefs = SymbolMap.empty,
113                                   subgroups = [g] }                                   subgroups = [g],
114                                     reqpriv = #required privileges }
115                  end                  end
116                | exp2coll (PrivateTools.SMLSOURCE src) = let                | exp2coll (PrivateTools.SMLSOURCE src) = let
117                      val { sourcepath = p, history = h, share = s } = src                      val { sourcepath = p, history = h, share = s } = src
# Line 114  Line 119 
119                          { sourcepath = p,                          { sourcepath = p,
120                            group = group,                            group = group,
121                            share = s }                            share = s }
122                      val exports = SmlInfo.exports gp i                      val exports =
123                      val _ = if SS.isEmpty exports then w0 "no module exports"                          case SmlInfo.exports gp i of
124                              else ()                              NONE => SS.empty
125                              | SOME ex => (if SS.isEmpty ex then
126                                                w0 ("no module exports from " ^
127                                                    AbsPath.name p)
128                                            else ();
129                                            ex)
130                      fun addLD (s, m) = SymbolMap.insert (m, s, i)                      fun addLD (s, m) = SymbolMap.insert (m, s, i)
131                      val ld = SS.foldl addLD SymbolMap.empty exports                      val ld = SS.foldl addLD SymbolMap.empty exports
132                  in                  in
# Line 124  Line 134 
134                                   gimports = SymbolMap.empty,                                   gimports = SymbolMap.empty,
135                                   smlfiles = [i],                                   smlfiles = [i],
136                                   localdefs = ld,                                   localdefs = ld,
137                                   subgroups = [] }                                   subgroups = [],
138                                     reqpriv = StringSet.empty }
139                  end                  end
140              val collections = map exp2coll expansions              val collections = map exp2coll expansions
141              fun combine (c1, c2) = sequential (c2, c1, e0)              fun combine (c1, c2) = sequential (c2, c1, e0)
# Line 149  Line 160 
160                               gimports = SymbolMap.empty,                               gimports = SymbolMap.empty,
161                               smlfiles = [],                               smlfiles = [],
162                               localdefs = SymbolMap.empty,                               localdefs = SymbolMap.empty,
163                               subgroups = [] }                               subgroups = [],
164                                 reqpriv = Primitive.reqpriv p }
165              end              end
166            | NONE => noPrimitive ()            | NONE => noPrimitive ()
167      end      end

Legend:
Removed from v.299  
changed lines
  Added in v.301

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