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-expr.sml
ViewVC logotype

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

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

revision 3413, Thu Nov 12 15:21:54 2015 UTC revision 3418, Fri Nov 13 00:00:26 2015 UTC
# Line 315  Line 315 
315                                case Unify.matchArgs(domTy, [e1', e2'], [ty1, ty2])                                case Unify.matchArgs(domTy, [e1', e2'], [ty1, ty2])
316                                 of SOME args => (AST.E_Prim(rator, tyArgs, args, rngTy), rngTy)                                 of SOME args => (AST.E_Prim(rator, tyArgs, args, rngTy), rngTy)
317                                  | NONE => err (cxt, [                                  | NONE => err (cxt, [
318                                        S "type error for binary operator '", V rator, S "'\n",                                        S "type error for binary operator ", V rator, S "\n",
319                                        S "  expected:  ", TYS domTy, S "\n",                                        S "  expected:  ", TYS domTy, S "\n",
320                                        S "  but found: ", TYS[ty1, ty2]                                        S "  but found: ", TYS[ty1, ty2]
321                                      ])                                      ])
# Line 336  Line 336 
336                            case Util.coerceType (domTy, eTy)                            case Util.coerceType (domTy, eTy)
337                             of SOME e' => (AST.E_Prim(rator, tyArgs, [e'], rngTy), rngTy)                             of SOME e' => (AST.E_Prim(rator, tyArgs, [e'], rngTy), rngTy)
338                              | NONE => err (cxt, [                              | NONE => err (cxt, [
339                                    S "type error for unary operator \"", V rator, S "\"\n",                                    S "type error for unary operator ", V rator, S "\n",
340                                    S "  expected:  ", TY domTy, S "\n",                                    S "  expected:  ", TY domTy, S "\n",
341                                    S "  but found: ", TY (#2 eTy)                                    S "  but found: ", TY (#2 eTy)
342                                  ])                                  ])
# Line 429  Line 429 
429                                      (AST.E_Select(e', useVar(cxt, x')), ty)                                      (AST.E_Select(e', useVar(cxt, x')), ty)
430                                    end                                    end
431                                | NONE => err(cxt, [                                | NONE => err(cxt, [
432                                      S "strand '", A strand,                                      S "strand ", A strand,
433                                      S "' does not have state variable '", A field, S "'"                                      S " does not have state variable ", A field
434                                    ])                                    ])
435                              (* end case *))                              (* end case *))
436                          | NONE => err(cxt, [S "unknown strand '", A strand, S "'"])                          | NONE => err(cxt, [S "unknown strand ", A strand])
437                        (* end case *))                        (* end case *))
438                    | (_, ty) => err (cxt, [                    | (_, ty) => err (cxt, [
439                          S "expected strand type, but found ", TY ty,                          S "expected strand type, but found ", TY ty,
440                          S " in selection of '", A field, S "'"                          S " in selection of ", A field
441                        ])                        ])
442                  (* end case *))                  (* end case *))
443              | PT.E_Real e => (case check (env, cxt, e)              | PT.E_Real e => (case check (env, cxt, e)
# Line 449  Line 449 
449                        ])                        ])
450                  (* end case *))                  (* end case *))
451              | PT.E_Load nrrd => let              | PT.E_Load nrrd => let
452                  val (tyArgs, Ty.T_Fun(_, rngTy)) = TU.instantiate(Var.typeOf(BV.fn_image))                  val (tyArgs, Ty.T_Fun(_, rngTy)) = TU.instantiate(Var.typeOf(BV.fn_load))
453                  in                  in
454                    case chkStringConstExpr (env, cxt, nrrd)                    case chkStringConstExpr (env, cxt, nrrd)
455                     of SOME nrrd => (AST.E_LoadNrrd(tyArgs, nrrd, rngTy), rngTy)                     of SOME nrrd => (AST.E_LoadNrrd(tyArgs, nrrd, rngTy), rngTy)
# Line 457  Line 457 
457                    (* end case *)                    (* end case *)
458                  end                  end
459              | PT.E_Image nrrd => let              | PT.E_Image nrrd => let
460                  val (tyArgs, Ty.T_Fun(_, rngTy)) = TU.instantiate(Var.typeOf(BV.fn_load))                  val (tyArgs, Ty.T_Fun(_, rngTy)) = TU.instantiate(Var.typeOf(BV.fn_image))
461                  in                  in
462                    case chkStringConstExpr (env, cxt, nrrd)                    case chkStringConstExpr (env, cxt, nrrd)
463                     of SOME nrrd => (AST.E_LoadNrrd(tyArgs, nrrd, rngTy), rngTy)                     of SOME nrrd => (AST.E_LoadNrrd(tyArgs, nrrd, rngTy), rngTy)

Legend:
Removed from v.3413  
changed lines
  Added in v.3418

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