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

Diff of /sml/trunk/src/cm/smlfile/smlinfo.sml

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

revision 344, Sun Jun 20 03:14:57 1999 UTC revision 345, Sun Jun 20 11:55:26 1999 UTC
# Line 134  Line 134 
134          val ts = !lastseen          val ts = !lastseen
135          val nts = AbsPath.tstamp sourcepath          val nts = AbsPath.tstamp sourcepath
136      in      in
137          if TStamp.earlier (ts, nts) then          if TStamp.needsUpdate { source = nts, target = ts } then
138              (lastseen := nts;              (lastseen := nts;
139               parsetree := NONE;               parsetree := NONE;
140               skeleton := NONE)               skeleton := NONE)
# Line 198  Line 198 
198          case !parsetree of          case !parsetree of
199              SOME pt => SOME pt              SOME pt => SOME pt
200            | NONE => let            | NONE => let
201                  val stream = AbsPath.openTextIn sourcepath                  fun work stream = let
202                  val _ = if noerrors orelse quiet then ()                  val _ = if noerrors orelse quiet then ()
203                          else Say.vsay ["[parsing ", name, "]\n"]                          else Say.vsay ["[parsing ", name, "]\n"]
204                  val source =                  val source =
205                      Source.newSource (name, 1, stream, false, #errcons gp)                      Source.newSource (name, 1, stream, false, #errcons gp)
                 val pto = let  
                     val tree = SF.parse source  
206                  in                  in
207                      SOME (tree, source)                      (SF.parse source, source)
208                  end handle SF.Compile msg => (TextIO.closeIn stream;                  end
209                                                err msg;                  fun openIt () = AbsPath.openTextIn sourcepath
210                                                NONE)                  val pto =
211                           | exn => (TextIO.closeIn stream; raise exn)                      SOME (SafeIO.perform { openIt = openIt,
212                                               closeIt = TextIO.closeIn,
213                                               work = work,
214                                               cleanup = fn () => () })
215              in              in
                 TextIO.closeIn stream;  
216                  parsetree := pto;                  parsetree := pto;
217                  pto                  pto
218              end handle exn as IO.Io _ => (err (General.exnMessage exn);              end handle exn as IO.Io _ => (err (General.exnMessage exn); NONE)
219                                            NONE)                       | SF.Compile msg => (err msg; NONE)
220      end      end
221    
222      fun getSkeleton gp (i as INFO ir, noerrors) = let      fun getSkeleton gp (i as INFO ir, noerrors) = let
# Line 244  Line 244 
244                                        else error gp i EM.COMPLAIN                                        else error gp i EM.COMPLAIN
245                                                   "error(s) in ML source file"                                                   "error(s) in ML source file"
246                                                   EM.nullErrorBody                                                   EM.nullErrorBody
247                                    else (SkelIO.write (skelpath, sk);                                    else (SkelIO.write (skelpath, sk, !lastseen);
248                                          skeleton := SOME sk);                                          skeleton := SOME sk);
249                                    SOME sk                                    SOME sk
250                                end                                end

Legend:
Removed from v.344  
changed lines
  Added in v.345

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