Changes by: Jason J. Hickey (jyh at cs.caltech.edu)
Date: 2007-10-09 12:02:05 -0700 (Tue, 09 Oct 2007)
Revision: 12336
Log message:

      Stricter static scoping for returns.  See bug #701.
     
        - Each return is annotated with "return <exp> from <id>"
          where <id> is a unique id for the function.
        - The return exception is caught only if the id matches.
     
     Escaping returns abort.
     
         public.G(x) =
             value $x
         
         F(g) =
             G = $g
             export
         
         H() =
             F(x => ...)
                 # This escaping function returns from H
                 return $x
             export
         
         H()
         G(1)
     
     This raises the exception:
     *** omake error:
        File /Users/jyh/projects/omake/jumbo/keyword/test/return/Test3: line 10, characters 8-17
        uncaught return from H (File /Users/jyh/projects/omake/jumbo/keyword/test/return/Test3: line 8, characters 1-6)

Changes  Path(relative to omake-branches/jumbo/keyword)
+5 -5 src/build/omake_build.ml
+11 -4 src/env/omake_command_digest.ml
+5 -2 src/env/omake_exn_print.ml
+30 -10 src/env/omake_ir_ast.ml
+39 -33 src/env/omake_ir_semant.ml
+9 -9 src/eval/omake_eval.ml
+7 -2 src/ir/omake_ir.ml
+2 -2 src/ir/omake_ir_free_vars.ml
+12 -4 src/ir/omake_ir_print.ml
+2 -2 src/ir/omake_ir_util.ml
+1 -1 src/ir/omake_value_type.ml
+4 -1 src/main/omake_shell.ml
Added test/return/Test2