From 71afa7a1a891edaa584aed903729bb3f437d3205 Mon Sep 17 00:00:00 2001 From: "Achim D. Brucker" Date: Sun, 4 Jan 2009 23:53:14 +0000 Subject: [PATCH] fixed typing of let-expressions git-svn-id: https://projects.brucker.ch/su4sml/svn/su4sml/trunk@8382 3260e6d1-4efc-4170-b0a7-36055960796d --- su4sml/src/ocl_parser/type_checker.sml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/su4sml/src/ocl_parser/type_checker.sml b/su4sml/src/ocl_parser/type_checker.sml index 72d42fd..d7dab23 100644 --- a/su4sml/src/ocl_parser/type_checker.sml +++ b/su4sml/src/ocl_parser/type_checker.sml @@ -207,7 +207,8 @@ fun AsSet_desugarator rterm path attr_or_meth rargs (model as (cls,assocs)) = if (List.length ops = 0) then raise TC_NoSuchOperationError ("interefere_methods: No operation signature " - ^"matches given types (source: " + ^"for `"^(Rep_Core.string_of_path path)^"'" + ^" matches given types (source: " ^(Ocl2String.ocl2string false rterm)^").") else upcast_op ops new_rterm rargs model @@ -672,7 +673,15 @@ let val _ = Logger.debug2 ("TypeChecker.resolve_OclTerm a Let-Expression \n") val rrhs_term = resolve_OclTerm rhs_term model val rrhs_typ = type_of_term rrhs_term - val rin_term = resolve_OclTerm in_term model +(* val rin_term = resolve_OclTerm in_term model (* TODO *) *) + + val _ = Logger.debug3 ("res Iter: types conforms \n") + val bound_expr = embed_bound_variables [(str,typ)] in_term + val _ = Logger.debug3 ("res Iter: term : " ^ Ocl2String.ocl2string false bound_expr ^ "\n") + val rin_term = resolve_OclTerm bound_expr model + + + val rin_typ = type_of_term rin_term val res = (Let (str,typ,rrhs_term,rrhs_typ,rin_term,rin_typ)) val _ = Logger.debug2 ("TypeChecker.resolve_OclTerm")