@@ -99,6 +99,10 @@ def rspresult(self) -> "XXpr":
9999 def rrhsexprs (self ) -> List ["XXpr" ]:
100100 return [self .xpr (i , "rhsexpr" ) for i in range (3 , self .regcount + 3 )]
101101
102+ @property
103+ def are_rrhsexprs_ok (self ) -> bool :
104+ return all (self .is_xpr_ok (i ) for i in range (3 , self .regcount + 3 ))
105+
102106 @property
103107 def xaddrs (self ) -> List ["XXpr" ]:
104108 return [self .xpr (i , "xaddr" )
@@ -127,18 +131,22 @@ def r0(self) -> Optional["XXpr"]:
127131
128132 @property
129133 def annotation (self ) -> str :
130- pairs = zip (self .lhsvars , self .rrhsexprs )
131- spassign = str (self .splhs ) + " := " + str (self .rspresult )
132- assigns = "; " .join (str (v ) + " := " + str (x ) for (v , x ) in pairs )
133- assigns = spassign + "; " + assigns
134- if self .has_return_xpr ():
135- cxpr = (
136- " (C: "
137- + (str (self .creturnval ()) if self .has_creturnval () else "None" )
138- + ")" )
139- rxpr = "; return " + str (self .rreturnval ()) + cxpr
134+ if self .are_rrhsexprs_ok :
135+ pairs = zip (self .lhsvars , self .rrhsexprs )
136+ spassign = str (self .splhs ) + " := " + str (self .rspresult )
137+ assigns = "; " .join (str (v ) + " := " + str (x ) for (v , x ) in pairs )
138+ assigns = spassign + "; " + assigns
139+ if self .has_return_xpr ():
140+ cxpr = (
141+ " (C: "
142+ + (str (self .creturnval ()) if self .has_creturnval () else "None" )
143+ + ")" )
144+ rxpr = "; return " + str (self .rreturnval ()) + cxpr
145+ else :
146+ rxpr = ""
140147 else :
141- rxpr = ""
148+ assigns = "rhs error value"
149+ rxpr = "?"
142150 return self .add_instruction_condition (assigns + rxpr )
143151
144152
0 commit comments