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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/typechecker/check-stmt.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/typechecker/check-stmt.sml

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

revision 3408, Wed Nov 11 20:26:18 2015 UTC revision 3410, Thu Nov 12 02:57:49 2015 UTC
# Line 54  Line 54 
54                          val eTy = chkE (env, cxt, e)                          val eTy = chkE (env, cxt, e)
55                          in                          in
56                            case Util.coerceType (ty, eTy)                            case Util.coerceType (ty, eTy)
57                             of SOME(e', _) => (x, x', SOME e')                             of SOME e' => (x, x', SOME e')
58                              | NONE => (                              | NONE => (
59                                  err(cxt, [                                  err(cxt, [
60                                      S "type of variable ", A x,                                      S "type of variable ", A x,
# Line 259  Line 259 
259                  in                  in
260                    case E.currentScope env                    case E.currentScope env
261                     of E.FunctionScope(ty', f) => (case Util.coerceType(ty', eTy)                     of E.FunctionScope(ty', f) => (case Util.coerceType(ty', eTy)
262                           of SOME(e', _) => (AST.S_Return e', env)                           of SOME e' => (AST.S_Return e', env)
263                            | NONE => (                            | NONE => (
264                                err (cxt, [                                err (cxt, [
265                                    S "type of return expression does not match return type of function ",                                    S "type of return expression does not match return type of function ",
# Line 300  Line 300 
300                                    val x' = useVar((#1 cxt, span), x')                                    val x' = useVar((#1 cxt, span), x')
301                                  (* check for promotion *)                                  (* check for promotion *)
302                                    val (e', ty') = (case Util.coerceType(ty, eTy)                                    val (e', ty') = (case Util.coerceType(ty, eTy)
303                                           of SOME eTy' => eTy'                                           of SOME e' => (e', ty)
304                                            | NONE => (                                            | NONE => (
305                                                err(cxt, [                                                err(cxt, [
306                                                    S "type of assigned variable ", A x,                                                    S "type of assigned variable ", A x,

Legend:
Removed from v.3408  
changed lines
  Added in v.3410

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