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 4348, Tue Aug 2 15:48:33 2016 UTC revision 4349, Tue Aug 2 18:14:48 2016 UTC
# Line 499  Line 499 
499                            | NONE => (case Env.findFunc (env, f)                            | NONE => (case Env.findFunc (env, f)
500                                 of Env.PrimFun[] => err(cxt, [S "unknown function ", A f])                                 of Env.PrimFun[] => err(cxt, [S "unknown function ", A f])
501                                  | Env.PrimFun[f'] => checkPrimApp f'                                  | Env.PrimFun[f'] => checkPrimApp f'
502                                  | Env.PrimFun ovldList =>                                  | Env.PrimFun ovldList => let
503                                        val (e' as AST.E_Prim(f', tyArgs, _, _), rngTy) =
504                                      resolveOverload ((#1 cxt, span), f, tys, args, ovldList)                                      resolveOverload ((#1 cxt, span), f, tys, args, ovldList)
505                                        in
506    (* NOTE: if/when we switch to type patterns, we can use a "Self" type pattern to handle
507     * spatial queries.
508     *)
509                                          if Basis.isSpatialQueryOp f'
510                                            then (case Env.strandTy env
511                                               of SOME strandTy => let
512                                                    val [Ty.TYPE tv] = tyArgs
513                                                    in
514                                                      ignore (Unify.matchType (Ty.T_Var tv, strandTy));
515                                                      Env.recordProp (env, Properties.StrandCommunication);
516                                                      (e', rngTy)
517                                                    end
518                                                | NONE => err(cxt, [
519                                                      S "spatial queries are only allowed inside strands"
520                                                    ])
521                                              (* end case *))
522                                            else (e', rngTy)
523                                        end
524                                  | Env.UserFun f' => checkFunApp((#1 cxt, span), f')                                  | Env.UserFun f' => checkFunApp((#1 cxt, span), f')
525                                (* end case *))                                (* end case *))
526                            (* end case *))                            (* end case *))

Legend:
Removed from v.4348  
changed lines
  Added in v.4349

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