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 275, Sat May 15 09:54:52 1999 UTC revision 276, Mon May 17 06:01:28 1999 UTC
# Line 14  Line 14 
14      type fileoffset = AbsPath.t * int      type fileoffset = AbsPath.t * int
15      type stableinfo = { skeleton: Skeleton.decl, binary: fileoffset }      type stableinfo = { skeleton: Skeleton.decl, binary: fileoffset }
16    
17      val new : policy ->      val info : policy ->
18          { sourcepath: AbsPath.t,          { sourcepath: AbsPath.t,
19            group: AbsPath.t,            group: AbsPath.t,
20            error: string -> unit,            error: string -> unit,
# Line 43  Line 43 
43          INFO of {          INFO of {
44                   sourcepath: AbsPath.t,                   sourcepath: AbsPath.t,
45                   group: AbsPath.t,                   group: AbsPath.t,
46                   error: string -> unit,                   error: string -> unit, (* reports wrt. group description *)
47                   lastseen: TStamp.t ref,                   lastseen: TStamp.t ref,
48                   parsetree: { tree: parsetree, source: source } option ref,                   parsetree: { tree: parsetree, source: source } option ref,
49                   skelpath: AbsPath.t,                   skelpath: AbsPath.t,
# Line 54  Line 54 
54      type fileoffset = AbsPath.t * int      type fileoffset = AbsPath.t * int
55      type stableinfo = { skeleton: Skeleton.decl, binary: fileoffset }      type stableinfo = { skeleton: Skeleton.decl, binary: fileoffset }
56    
57      fun new policy { sourcepath, group, error, history, share, stableinfo } =      fun info policy { sourcepath, group, error, history, share, stableinfo } =
58          case stableinfo of          case stableinfo of
59              NONE => INFO {              NONE => INFO {
60                            sourcepath = sourcepath,                            sourcepath = sourcepath,
# Line 87  Line 87 
87       * not with checking time stamps *)       * not with checking time stamps *)
88      fun getParseTree (INFO ir, quiet) = let      fun getParseTree (INFO ir, quiet) = let
89          val { sourcepath, parsetree, error, ... } = ir          val { sourcepath, parsetree, error, ... } = ir
90            val name = AbsPath.name sourcepath
91      in      in
92          case !parsetree of          case !parsetree of
93              SOME pt => SOME pt              SOME pt => SOME pt
94            | NONE => let            | NONE => let
95                  val stream = AbsPath.openTextIn sourcepath                  val stream = AbsPath.openTextIn sourcepath
                 val name = AbsPath.name sourcepath  
96                  val _ = if quiet then ()                  val _ = if quiet then ()
97                          else Say.vsay (concat ["[parsing ", name, "]\n"])                          else Say.vsay (concat ["[parsing ", name, "]\n"])
98                  val source =                  val source =
# Line 105  Line 105 
105                  in                  in
106                      SOME { tree = tree, source = source }                      SOME { tree = tree, source = source }
107                  end handle SF.Compile msg => (TextIO.closeIn stream;                  end handle SF.Compile msg => (TextIO.closeIn stream;
108                                                error "parse error";                                                error msg;
109                                                NONE)                                                NONE)
110                           | exn as IO.Io _ =>                           | exn => (TextIO.closeIn stream; raise exn)
                                   (TextIO.closeIn stream;  
                                    error (General.exnMessage exn);  
                                    NONE)  
                          | exn => (TextIO.closeIn stream;  
                                    error (concat ["parsing of \"", name,  
                                                   "\" failed: ",  
                                                   General.exnMessage exn]);  
                                    raise exn)  
111              in              in
112                  TextIO.closeIn stream;                  TextIO.closeIn stream;
113                  parsetree := pto;                  parsetree := pto;
114                  pto                  pto
115              end              end handle exn as IO.Io _ => (error (General.exnMessage exn);
116                                              NONE)
117      end      end
118    
119      fun getSkeleton (INFO ir) = let      fun getSkeleton (INFO ir) = let

Legend:
Removed from v.275  
changed lines
  Added in v.276

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