From afb10f429248912984a7915bf05c58de85ea5cbb Mon Sep 17 00:00:00 2001 From: Kathy Gray Date: Tue, 10 Nov 2015 16:26:30 +0000 Subject: More tag refinement for lexp --- src/type_check.ml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/type_check.ml b/src/type_check.ml index 37d9ba19..7da777cc 100644 --- a/src/type_check.ml +++ b/src/type_check.ml @@ -1538,7 +1538,8 @@ and check_lexp envs imp_param is_top (LEXP_aux(lexp,(l,annot))) | Tapp("register",[TA_typ t]) | Tabbrev(_,{t=Tapp("register",[TA_typ t])}) -> t,true,false | Tapp("reg",[TA_typ t]) -> t,false,false | _ -> item_t,false,true in - let ef,tag = if add_reg_write then (add_effect (BE_aux(BE_wreg,l)) efl,External None) else (efl,tag) in + let ef,tag = if add_reg_write then (add_effect (BE_aux(BE_wreg,l)) efl,External None) + else match tag with | External _ -> (efl,Emp_local) | _ -> (efl,tag) in if is_top && reg_still_required && reg_required then typ_error l "Assignment expected a register or non-parameter non-letbound identifier to mutate" else -- cgit v1.2.3