@@ -2844,10 +2844,10 @@ expr({'try',Anno,Es,Scs,Ccs,As}, Vt, St0) ->
28442844 vtupdate (Evt0 , Vt ), Uvt , St1 ),
28452845 Evt1 = vtupdate (Uvt , Evt0 ),
28462846 Rvt0 = Sccs ,
2847- Rvt1 = vtupdate ( vtunsafe ( TryAnno , Rvt0 , Vt ), Rvt0 ),
2847+ Rvt1 = vtupd_unsafe ( TryAnno , Rvt0 , Vt ),
28482848 Evt2 = vtmerge (Evt1 , Rvt1 ),
28492849 {Avt0 ,St } = exprs (As , vtupdate (Evt2 , Vt ), St2 ),
2850- Avt1 = vtupdate ( vtunsafe ( TryAnno , Avt0 , Vt ), Avt0 ),
2850+ Avt1 = vtupd_unsafe ( TryAnno , Avt0 , Vt ),
28512851 Avt = vtmerge (Evt2 , Avt1 ),
28522852 {Avt ,St };
28532853expr ({'catch' ,Anno ,E }, Vt , St0 ) ->
@@ -2857,7 +2857,7 @@ expr({'catch',Anno,E}, Vt, St0) ->
28572857 true -> add_warning (Anno , deprecated_catch , St );
28582858 false -> St
28592859 end ,
2860- {vtupdate ( vtunsafe ( {'catch' ,Anno }, Evt , Vt ), Evt ), St1 };
2860+ {vtupd_unsafe ( {'catch' , Anno }, Evt , Vt ), St1 };
28612861expr ({match ,_Anno ,P ,E }, Vt , St0 ) ->
28622862 {Evt ,St1 } = expr (E , Vt , St0 ),
28632863 {Pvt ,Pnew ,St } = pattern (P , vtupdate (Evt , Vt ), St1 ),
@@ -2886,7 +2886,7 @@ expr({op,Anno,Op,L,R}, Vt, St0) when Op =:= 'orelse'; Op =:= 'andalso' ->
28862886 {Evt1 ,St1 } = expr (L , Vt , St0 ),
28872887 Vt1 = vtupdate (Evt1 , Vt ),
28882888 {Evt2 ,St2 } = expr (R , Vt1 , St1 ),
2889- Evt3 = vtupdate ( vtunsafe ( {Op ,Anno }, Evt2 , Vt1 ), Evt2 ),
2889+ Evt3 = vtupd_unsafe ( {Op , Anno }, Evt2 , Vt1 ),
28902890 {vtmerge (Evt1 , Evt3 ),St2 };
28912891expr ({op ,_Anno ,EqOp ,L ,R }, Vt , St0 ) when EqOp =:= '=:=' ; EqOp =:= '=/=' ->
28922892 St = expr_check_match_zero (R , expr_check_match_zero (L , St0 )),
@@ -4470,6 +4470,9 @@ vtunsafe({Tag,Anno}, Uvt, Vt) ->
44704470 Location = erl_anno :location (Anno ),
44714471 [{V ,{{unsafe ,{Tag ,Location }},U ,As }} || {V ,{_ ,U ,As }} <- vtnew (Uvt , Vt )].
44724472
4473+ vtupd_unsafe (Where , NewVt , OldVt ) ->
4474+ vtupdate (vtunsafe (Where , NewVt , OldVt ), NewVt ).
4475+
44734476% % vtmerge(VarTable, VarTable) -> VarTable.
44744477% % Merge two variables tables generating a new vartable. Give priority to
44754478% % errors then warnings.
0 commit comments