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

Diff of /sml/trunk/src/cm/depend/build.sml

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

revision 280, Tue May 18 09:05:13 1999 UTC revision 281, Tue May 18 14:57:00 1999 UTC
# Line 144  Line 144 
144              val f = SmlInfo.sourcepath i              val f = SmlInfo.sourcepath i
145              fun isSelf i' = SmlInfo.eq (i, i')              fun isSelf i' = SmlInfo.eq (i, i')
146    
147                exception Lookup
148    
149              (* lookup function for things not defined in the same ML file.              (* lookup function for things not defined in the same ML file.
150               * As a side effect, this function registers local and               * As a side effect, this function registers local and
151               * global imports. *)               * global imports. *)
# Line 156  Line 158 
158                                             ": reference to unknown " ::                                             ": reference to unknown " ::
159                                             symDesc (s, [])))                                             symDesc (s, [])))
160                                    EM.nullErrorBody;                                    EM.nullErrorBody;
161                                   DG.EMPTY)                                   raise Lookup)
162              in              in
163                  case SM.find (localdefs, s) of                  case SM.find (localdefs, s) of
164                      SOME i' =>                      SOME i' =>
# Line 171  Line 173 
173              end              end
174    
175              (* build the lookup function for DG.env *)              (* build the lookup function for DG.env *)
176              val lookup = look lookimport              val lookup_exn = look lookimport
177    
178              fun lookSymPath e (SP.SPATH []) = DG.EMPTY              fun lookSymPath e (SP.SPATH []) = DG.EMPTY
179                | lookSymPath e (SP.SPATH (p as (h :: t))) = let                | lookSymPath e (SP.SPATH (p as (h :: t))) = let
180                      fun dotPath [] = []                      fun dotPath [] = []
181                        | dotPath [s] = [S.name s]                        | dotPath [s] = [S.name s]
182                        | dotPath (h :: t) = S.name h :: "." :: dotPath t                        | dotPath (h :: t) = S.name h :: "." :: dotPath t
                     val firstTime = ref true  
183                      fun complain s =                      fun complain s =
                         if !firstTime then  
184                              (SmlInfo.error i                              (SmlInfo.error i
185                               (concat                               (concat
186                                ("undefined " ::                             (AbsPath.spec f ::
187                                ": undefined " ::
188                                 symDesc (s, " in path " :: dotPath p)))                                 symDesc (s, " in path " :: dotPath p)))
189                               EM.nullErrorBody;                               EM.nullErrorBody;
190                               firstTime := false;                           raise Lookup)
191                               DG.EMPTY)                      val lookup_exn' = look complain
                         else DG.EMPTY  
                     val lookup' = look complain  
192                      fun loop (e, []) = e                      fun loop (e, []) = e
193                        | loop (e, h :: t) = loop (lookup' e h, t)                        | loop (e, h :: t) = loop (lookup_exn' e h, t)
194                  in                  in
195                      loop (lookup e h, t)                      loop (lookup_exn e h, t) handle Lookup => DG.EMPTY
196                  end                  end
197    
198                fun lookup e s = lookup_exn e s handle Lookup => DG.EMPTY
199    
200              (* "eval" -- compute the export environment of a skeleton *)              (* "eval" -- compute the export environment of a skeleton *)
201              fun eval sk = let              fun eval sk = let
202                  fun layer' f [] = DG.EMPTY                  fun layer' f [] = DG.EMPTY

Legend:
Removed from v.280  
changed lines
  Added in v.281

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