Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/lamont_dev/src/compiler/IL/check-il-fn.sml
ViewVC logotype

Diff of /branches/lamont_dev/src/compiler/IL/check-il-fn.sml

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

revision 435, Tue Oct 19 13:14:20 2010 UTC revision 511, Tue Feb 8 17:01:43 2011 UTC
# Line 192  Line 192 
192                  ]                  ]
193            end            end
194    
195      fun check (phase, IL.Program{globals, globalInit, actors}) = let      fun check (phase, IL.Program{globals, globalInit, strands}) = let
196            val errBuf = ref []            val errBuf = ref []
197            val errFn = error errBuf            val errFn = error errBuf
198            fun final () = (case !errBuf            fun final () = (case !errBuf
# Line 219  Line 219 
219                                else errFn [S "unbound variable ", V cond, S " in conditional"]                                else errFn [S "unbound variable ", V cond, S " in conditional"]
220                          | IL.BLOCK{body, ...} =>                          | IL.BLOCK{body, ...} =>
221                              ignore (List.foldl checkAssign (VSet.union(Avail.inValue nd, bvs)) (!body))                              ignore (List.foldl checkAssign (VSet.union(Avail.inValue nd, bvs)) (!body))
222                          | IL.NEW{actor, args, ...} => let                          | IL.NEW{strand, args, ...} => let
223                              val bvs = VSet.union(Avail.inValue nd, bvs)                              val bvs = VSet.union(Avail.inValue nd, bvs)
224                            (* check a variable use *)                            (* check a variable use *)
225                              fun checkVar x = if VSet.member(bvs, x)                              fun checkVar x = if VSet.member(bvs, x)
226                                    then ()                                    then ()
227                                    else errFn [                                    else errFn [
228                                        S "variable ", V x, S " is not bound in new ",                                        S "variable ", V x, S " is not bound in new ",
229                                        S(Atom.toString actor)                                        S(Atom.toString strand)
230                                      ]                                      ]
231                              in                              in
232                                List.app checkVar args                                List.app checkVar args
# Line 238  Line 238 
238                  (* cleanup *)                  (* cleanup *)
239                    Avail.scrub nodes                    Avail.scrub nodes
240                  end                  end
241          (* check an actor definition *)          (* check an strand definition *)
242            fun checkActor (IL.Actor{params, state, stateInit, methods, ...}) = let            fun checkStrand (IL.Strand{params, state, stateInit, methods, ...}) = let
243                  fun checkMethod (IL.Method{stateIn, body, ...}) =                  fun checkMethod (IL.Method{stateIn, body, ...}) =
244                        checkStmt (globals@stateIn, body)                        checkStmt (globals@stateIn, body)
245                  in                  in
# Line 249  Line 249 
249            in            in
250            (* check the global part *)            (* check the global part *)
251              checkStmt ([], globalInit);              checkStmt ([], globalInit);
252            (* check the actors *)            (* check the strands *)
253              List.app checkActor actors;              List.app checkStrand strands;
254            (* check for errors *)            (* check for errors *)
255              final()              final()
256            end            end

Legend:
Removed from v.435  
changed lines
  Added in v.511

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