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 283, Wed May 19 08:20:58 1999 UTC revision 286, Fri May 21 07:47:16 1999 UTC
# Line 22  Line 22 
22    
23      val empty : collection      val empty : collection
24    
25      val expandOne : farlooker      val expandOne : GeneralParams.params * farlooker
26          -> { sourcepath: AbsPath.t, group: AbsPath.t, class: string option,          -> { sourcepath: AbsPath.t, group: AbsPath.t, class: string option,
27               error : string -> (PrettyPrint.ppstream -> unit) -> unit }               error : string -> (PrettyPrint.ppstream -> unit) -> unit }
28          -> collection          -> collection
# Line 41  Line 41 
41      structure DG = DependencyGraph      structure DG = DependencyGraph
42      structure EM = GenericVC.ErrorMsg      structure EM = GenericVC.ErrorMsg
43      structure CBE = GenericVC.BareEnvironment      structure CBE = GenericVC.BareEnvironment
44        structure SS = SymbolSet
45    
46      type smlinfo = SmlInfo.info      type smlinfo = SmlInfo.info
47      type symbol = Symbol.symbol      type symbol = Symbol.symbol
# Line 61  Line 62 
62                       smlfiles = [],                       smlfiles = [],
63                       localdefs = SymbolMap.empty }                       localdefs = SymbolMap.empty }
64    
     fun convertEnv cmenv = let  
         fun modulesOnly sl = let  
             fun addModule (sy, set) =  
                 case Symbol.nameSpace sy of  
                     (Symbol.STRspace | Symbol.SIGspace |  
                      Symbol.FCTspace | Symbol.FSIGspace) =>  
                         SymbolSet.add (set, sy)  
                   | _ => set  
         in  
             foldl addModule SymbolSet.empty sl  
         end  
         fun cvt CBE.CM_NONE = NONE  
           | cvt (CBE.CM_ENV { look, symbols }) =  
             SOME (DG.FCTENV { looker = cvt o look,  
                               domain = modulesOnly o symbols })  
     in  
         valOf (cvt cmenv)  
     end  
   
65      fun sequential (COLLECTION c1, COLLECTION c2, error) = let      fun sequential (COLLECTION c1, COLLECTION c2, error) = let
66          fun describeSymbol (s, r) = let          fun describeSymbol (s, r) = let
67              val ns = Symbol.nameSpace s              val ns = Symbol.nameSpace s
# Line 106  Line 88 
88                       localdefs = ld_union (#localdefs c1, #localdefs c2) }                       localdefs = ld_union (#localdefs c1, #localdefs c2) }
89      end      end
90    
91      fun expandOne gexports { sourcepath, group, class, error } = let      fun expandOne (params, gexports) arg = let
92            val primconf = #primconf params
93            val { sourcepath, group, class, error } = arg
94          fun noPrimitive () = let          fun noPrimitive () = let
95              fun e0 s = error s EM.nullErrorBody              fun e0 s = error s EM.nullErrorBody
96              val expansions = PrivateTools.expand e0 (sourcepath, class)              val expansions = PrivateTools.expand e0 (sourcepath, class)
# Line 119  Line 103 
103                | exp2coll (PrivateTools.SMLSOURCE src) = let                | exp2coll (PrivateTools.SMLSOURCE src) = let
104                      val { sourcepath = p, history = h, share = s } = src                      val { sourcepath = p, history = h, share = s } = src
105                      val i =  SmlInfo.info                      val i =  SmlInfo.info
106                          Policy.default                          params
107                          { sourcepath = p, group = group,                          { sourcepath = p, group = group,
108                            error = error, history = h,                            error = error, history = h,
109                            share = s }                            share = s }
110                      val exports = SmlInfo.exports i                      val exports = SmlInfo.exports i
111                        val _ = if SS.isEmpty exports then e0 "no module exports"
112                                else ()
113                      fun addLD (s, m) = SymbolMap.insert (m, s, i)                      fun addLD (s, m) = SymbolMap.insert (m, s, i)
114                      val ld = SymbolSet.foldl addLD SymbolMap.empty exports                      val ld = SS.foldl addLD SymbolMap.empty exports
115                  in                  in
116                      COLLECTION { imports = SymbolMap.empty,                      COLLECTION { imports = SymbolMap.empty,
117                                   gimports = SymbolMap.empty,                                   gimports = SymbolMap.empty,
# Line 141  Line 127 
127          if isSome class then noPrimitive ()          if isSome class then noPrimitive ()
128          else case Primitive.fromString (AbsPath.spec sourcepath) of          else case Primitive.fromString (AbsPath.spec sourcepath) of
129              SOME p => let              SOME p => let
130                  val exports = Primitive.exports p                  val exports = Primitive.exports primconf p
131                    val plook = Primitive.lookup primconf p
132                  fun addFN (s, m) = let                  fun addFN (s, m) = let
133                      val cmenv = Primitive.lookup p s                      val env = plook s
                     val env = convertEnv cmenv  
134                      val fsbn = (NONE, DG.SB_BNODE (DG.PNODE p))                      val fsbn = (NONE, DG.SB_BNODE (DG.PNODE p))
135                  in                  in
136                      SymbolMap.insert (m, s, (fsbn, env))                      SymbolMap.insert (m, s, (fsbn, env))
137                  end                  end
138                  val imp = SymbolSet.foldl addFN SymbolMap.empty exports                  val imp = SS.foldl addFN SymbolMap.empty exports
139              in              in
140                  COLLECTION { imports = imp,                  COLLECTION { imports = imp,
141                               gimports = SymbolMap.empty,                               gimports = SymbolMap.empty,

Legend:
Removed from v.283  
changed lines
  Added in v.286

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