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 642, Thu May 11 07:30:29 2000 UTC revision 677, Mon Jun 26 00:56:56 2000 UTC
# Line 15  Line 15 
15      type smlinfo = SmlInfo.info      type smlinfo = SmlInfo.info
16      type impexp = DependencyGraph.impexp      type impexp = DependencyGraph.impexp
17      type region = GenericVC.SourceMap.region      type region = GenericVC.SourceMap.region
18        type subgroups =
19             (SrcPath.file * GroupGraph.group * SrcPath.rebindings) list
20    
21      type collection      type collection
22    
# Line 24  Line 26 
26    
27      val expandOne :      val expandOne :
28          { gp: GeneralParams.info,          { gp: GeneralParams.info,
29            rparse: SrcPath.t * Version.t option -> GroupGraph.group,            rparse: SrcPath.file * Version.t option * SrcPath.rebindings ->
30            load_plugin: SrcPath.context -> string -> bool }                    GroupGraph.group,
31              load_plugin: SrcPath.dir -> string -> bool }
32          -> { name: string,          -> { name: string,
33               mkpath: string -> SrcPath.t,               mkpath: string -> SrcPath.prefile,
34               group: SrcPath.t * region,               group: SrcPath.file * region,
35               class: string option,               class: string option,
36               tooloptions: PrivateTools.toolopts option,               tooloptions: PrivateTools.toolopts option,
37               context: SrcPath.context }               context: SrcPath.dir }
38          -> collection          -> collection
39      val sequential : collection * collection * (string -> unit) -> collection      val sequential : collection * collection * (string -> unit) -> collection
40    
# Line 40  Line 43 
43          DependencyGraph.farsbnode       (* pervasive env *)          DependencyGraph.farsbnode       (* pervasive env *)
44          -> impexp SymbolMap.map * GroupGraph.privileges          -> impexp SymbolMap.map * GroupGraph.privileges
45    
46      val subgroups : collection -> (SrcPath.t * GroupGraph.group) list      val subgroups : collection -> subgroups
47      val sources : collection ->      val sources : collection ->
48                    { class: string, derived: bool } SrcPathMap.map                    { class: string, derived: bool } SrcPathMap.map
49    
# Line 62  Line 65 
65      type symbol = Symbol.symbol      type symbol = Symbol.symbol
66      type impexp = DG.impexp      type impexp = DG.impexp
67      type region = GenericVC.SourceMap.region      type region = GenericVC.SourceMap.region
68        type subgroups = (SrcPath.file * GG.group * SrcPath.rebindings) list
69    
70      datatype collection =      datatype collection =
71          COLLECTION of { imports: impexp SymbolMap.map,          COLLECTION of { imports: impexp SymbolMap.map,
72                          gimports: impexp SymbolMap.map,                          gimports: impexp SymbolMap.map,
73                          smlfiles: smlinfo list,                          smlfiles: smlinfo list,
74                          localdefs: smlinfo SymbolMap.map,                          localdefs: smlinfo SymbolMap.map,
75                          subgroups: (SrcPath.t * GG.group) list,                          subgroups: subgroups,
76                          sources:                          sources:
77                                 { class: string, derived: bool } SrcPathMap.map,                                 { class: string, derived: bool } SrcPathMap.map,
78                          reqpriv: GG.privileges }                          reqpriv: GG.privileges }
# Line 100  Line 104 
104                       gimports = SymbolMap.empty,                       gimports = SymbolMap.empty,
105                       smlfiles = [],                       smlfiles = [],
106                       localdefs = SymbolMap.empty,                       localdefs = SymbolMap.empty,
107                       subgroups = [(grouppath, init_group)],                       subgroups = [(grouppath, init_group, [])],
108                       sources = sm,                       sources = sm,
109                       reqpriv = StringSet.empty }                       reqpriv = StringSet.empty }
110      end      end
# Line 111  Line 115 
115              in              in
116                  Symbol.nameSpaceToString ns :: " " :: Symbol.name s :: r                  Symbol.nameSpaceToString ns :: " " :: Symbol.name s :: r
117              end              end
118              fun i_error (s, x as ((f, sbn), e), ((f', sbn'), e')) = let              fun i_error (s, x as (nth, e, allsyms), (nth', e', allsyms')) = let
119                    val (f, sbn) = nth ()
120                    val (f', sbn') = nth' ()
121                  fun complain () =                  fun complain () =
122                      error (concat (describeSymbol                      error (concat (describeSymbol
123                                         (s, [" imported from ",                                         (s, [" imported from ",
# Line 123  Line 129 
129                    | union (SOME f, SOME f') = SOME (SymbolSet.union (f, f'))                    | union (SOME f, SOME f') = SOME (SymbolSet.union (f, f'))
130              in              in
131                  if DG.sbeq (sbn, sbn') then                  if DG.sbeq (sbn, sbn') then
132                      ((union (f, f'), sbn), DAEnv.LAYER (e, e'))                      let val fsbn = (union (f, f'), sbn)
133                        in
134                            (fn () => fsbn, DAEnv.LAYER (e, e'),
135                             SymbolSet.union (allsyms, allsyms'))
136                        end
137                  else (complain (); x)                  else (complain (); x)
138              end              end
139              val i_union = SymbolMap.unionWithi i_error              val i_union = SymbolMap.unionWithi i_error
140              val gi_union = SymbolMap.unionWith #1              val gi_union = SymbolMap.unionWith #1
141              fun ld_error (s, f1, f2) =              fun ld_error (s, f1, f2) =
142                  (error (concat (describeSymbol                  (error (concat (describeSymbol
143                                      (s, [" defined in ", SmlInfo.spec f1,                                      (s, [" defined in ", SmlInfo.descr f1,
144                                           " and also in ", SmlInfo.spec f2])));                                           " and also in ", SmlInfo.descr f2])));
145                   f1)                   f1)
146              val ld_union = SymbolMap.unionWithi ld_error              val ld_union = SymbolMap.unionWithi ld_error
147              val s_union = SrcPathMap.unionWith #1              val s_union = SrcPathMap.unionWith #1
# Line 162  Line 172 
172                                    context = context,                                    context = context,
173                                    load_plugin = load_plugin }                                    load_plugin = load_plugin }
174          val msources = foldl SrcPathMap.insert' SrcPathMap.empty sources          val msources = foldl SrcPathMap.insert' SrcPathMap.empty sources
175          fun g_coll (p, v) =          fun g_coll (p, v, rb) =
176              case rparse (p, v) of              case rparse (p, v, rb) of
177                  g as GG.GROUP { exports = i, kind, required, sources,                  g as GG.GROUP { exports = i, kind, required, sources,
178                                  grouppath, sublibs } => let                                  grouppath, sublibs } => let
179                      val (gi, ver) =                      val (gi, ver) =
# Line 186  Line 196 
196                                  | _ => e0 "library is newer than expected"));                                  | _ => e0 "library is newer than expected"));
197                      COLLECTION { imports = i, gimports = gi, smlfiles = [],                      COLLECTION { imports = i, gimports = gi, smlfiles = [],
198                                   localdefs = SymbolMap.empty,                                   localdefs = SymbolMap.empty,
199                                   subgroups = [(p, g)],                                   subgroups = [(p, g, rb)],
200                                   sources = SrcPathMap.empty,                                   sources = SrcPathMap.empty,
201                                   reqpriv = required }                                   reqpriv = required }
202                  end                  end
203                | GG.ERRORGROUP => ERRORCOLLECTION                | GG.ERRORGROUP => ERRORCOLLECTION
204          fun s_coll (p, s) = let          fun s_coll (p, s, setup) = let
205              val i =              val i =
206                  SmlInfo.info gp { sourcepath = p, group = group, sh_spec = s }                  SmlInfo.info gp { sourcepath = p, group = group,
207                                      sh_spec = s, setup = setup }
208              val exports =              val exports =
209                  case SmlInfo.exports gp i of                  case SmlInfo.exports gp i of
210                      NONE => SS.empty                      NONE => SS.empty

Legend:
Removed from v.642  
changed lines
  Added in v.677

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