Skip to content

Commit 4d8a418

Browse files
committed
PROOF: add checker for output parameters
1 parent c6f5e62 commit 4d8a418

13 files changed

+322
-49
lines changed

chc/cmdline/juliet/JulietTestScoring.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ def f(spo: "CFunctionPO") -> None:
185185
if sev is None:
186186
sevtxt = "?"
187187
else:
188-
sevtxt = spo.get_display_prefix() + " " + sev
188+
sevtxt = spo.get_display_prefix() + " " + str(sev)
189189
lines.append(
190190
" C:"
191191
+ str(spo.line).rjust(3)
@@ -213,7 +213,7 @@ def testppo_results_tostring(
213213
if ev is None:
214214
evstr = "?"
215215
else:
216-
evstr = ppo.get_display_prefix() + " " + ev
216+
evstr = ppo.get_display_prefix() + " " + str(ev)
217217
lines.append(
218218
" "
219219
+ str(ppo.line).rjust(3)

chc/proof/CFunctionCallsiteSPO.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
from chc.proof.CFunPODictionaryRecord import CFunPOType
4040
from chc.proof.CFunctionProofs import CFunctionProofs
4141
from chc.proof.CProofDependencies import CProofDependencies
42-
from chc.proof.CProofDiagnostic import CProofDiagnostic
42+
from chc.proof.CProofDiagnostic import CProofDiagnostic, SituatedMsg
4343
from chc.proof.SPOType import CallsiteSPOType
4444

4545

@@ -52,7 +52,7 @@ def __init__(
5252
potype: "CFunPOType",
5353
status: str = "open",
5454
deps: Optional["CProofDependencies"] = None,
55-
expl: Optional[str] = None,
55+
expl: Optional["SituatedMsg"] = None,
5656
diag: Optional["CProofDiagnostic"] = None) -> None:
5757
CFunctionPO.__init__(self, cproofs, potype, status, deps, expl, diag)
5858

chc/proof/CFunctionCallsiteSPOs.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
from chc.proof.CFunctionCallsiteSPO import CFunctionCallsiteSPO
4444
from chc.proof.CFunctionPO import po_status
4545
from chc.proof.CProofDependencies import CProofDependencies
46-
from chc.proof.CProofDiagnostic import CProofDiagnostic
46+
from chc.proof.CProofDiagnostic import CProofDiagnostic, SituatedMsg
4747

4848
import chc.util.fileutil as UF
4949
from chc.util.loggingutil import chklogger
@@ -233,8 +233,10 @@ def spos(self) -> Dict[int, List[CFunctionCallsiteSPO]]:
233233
deps = CProofDependencies(self.cproofs, xpo)
234234
status = po_status[xpo.get("s", "o")]
235235
xexpl = xpo.find("e")
236-
expl = None if xexpl is None else xexpl.get("txt")
237-
diagnostic = CProofDiagnostic(xpo.find("d"))
236+
expl = (
237+
None if xexpl is None
238+
else SituatedMsg(self.cfun.cdictionary, xexpl))
239+
diagnostic = CProofDiagnostic(self.cproofs, xpo.find("d"))
238240
self._spos[int(xapid)].append(
239241
CFunctionCallsiteSPO(
240242
self.cproofs,

chc/proof/CFunctionLocalSPO.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
from chc.proof.CFunctionProofs import CFunctionProofs
3939
from chc.proof.CFunPODictionaryRecord import CFunPOType
4040
from chc.proof.CProofDependencies import CProofDependencies
41-
from chc.proof.CProofDiagnostic import CProofDiagnostic
41+
from chc.proof.CProofDiagnostic import CProofDiagnostic, SituatedMsg
4242

4343

4444
class CFunctionLocalSPO(CFunctionPO):
@@ -49,7 +49,7 @@ def __init__(
4949
potype: "CFunPOType",
5050
status: str = "open",
5151
deps: Optional["CProofDependencies"] = None,
52-
expl: Optional[str] = None,
52+
expl: Optional["SituatedMsg"] = None,
5353
diag: Optional["CProofDiagnostic"] = None) -> None:
5454
CFunctionPO.__init__(self, cproofs, potype, status, deps, expl, diag)
5555

chc/proof/CFunctionPO.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
from chc.proof.CFunPODictionary import CFunPODictionary
4848
from chc.proof.CPOPredicate import CPOPredicate
4949
from chc.proof.CProofDependencies import CProofDependencies
50-
from chc.proof.CProofDiagnostic import CProofDiagnostic
50+
from chc.proof.CProofDiagnostic import CProofDiagnostic, SituatedMsg
5151
from chc.proof.SPOType import SPOType
5252

5353

@@ -72,7 +72,7 @@ def __init__(
7272
potype: CFunPOType,
7373
status: str = "open",
7474
deps: Optional["CProofDependencies"] = None,
75-
expl: Optional[str] = None,
75+
expl: Optional["SituatedMsg"] = None,
7676
diag: Optional["CProofDiagnostic"] = None) -> None:
7777
self._cproofs = cproofs
7878
self._potype = potype
@@ -182,7 +182,7 @@ def has_dependencies(self) -> bool:
182182
return self._dependencies is not None
183183

184184
@property
185-
def explanation(self) -> Optional[str]:
185+
def explanation(self) -> Optional["SituatedMsg"]:
186186
return self._explanation
187187

188188
def has_explanation(self) -> bool:
@@ -364,7 +364,7 @@ def write_xml(self, cnode: ET.Element) -> None:
364364
self.dependencies.write_xml(cnode)
365365
if self.explanation is not None:
366366
enode = ET.Element("e")
367-
enode.set("txt", self.explanation)
367+
enode.set("txt", self.explanation.msg)
368368
cnode.append(enode)
369369
if self.has_diagnostic():
370370
dnode = ET.Element("d")

chc/proof/CFunctionPPO.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
from chc.proof.CFunctionProofs import CFunctionProofs
3939
from chc.proof.CFunPODictionaryRecord import CFunPOType
4040
from chc.proof.CProofDependencies import CProofDependencies
41-
from chc.proof.CProofDiagnostic import CProofDiagnostic
41+
from chc.proof.CProofDiagnostic import CProofDiagnostic, SituatedMsg
4242

4343

4444
class CFunctionPPO(CFunctionPO):
@@ -50,7 +50,7 @@ def __init__(
5050
ppotype: "CFunPOType",
5151
status: str = "open",
5252
deps: Optional["CProofDependencies"] = None,
53-
expl: Optional[str] = None,
53+
expl: Optional["SituatedMsg"] = None,
5454
diag: Optional["CProofDiagnostic"] = None) -> None:
5555
CFunctionPO.__init__(self, cproofs, ppotype, status, deps, expl, diag)
5656

chc/proof/CFunctionPPOs.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535
from chc.proof.CFunctionPPO import CFunctionPPO
3636
from chc.proof.CProofDependencies import CProofDependencies
37-
from chc.proof.CProofDiagnostic import CProofDiagnostic
37+
from chc.proof.CProofDiagnostic import CProofDiagnostic, SituatedMsg
3838

3939
import chc.util.fileutil as UF
4040

@@ -90,12 +90,13 @@ def ppos(self) -> Dict[int, CFunctionPPO]:
9090
id = ppotype.index
9191
status = po_status[xp.get("s", "o")]
9292
deps = CProofDependencies(self.cproofs, xp)
93-
diagnostic = CProofDiagnostic(xp.find("d"))
93+
diagnostic = CProofDiagnostic(self.cproofs, xp.find("d"))
9494

9595
# get explanation
9696
enode = xp.find("e")
9797
if enode is not None:
98-
expl: Optional[str] = enode.get("txt", "")
98+
expl: Optional[SituatedMsg] = SituatedMsg(
99+
self.cfun.cdictionary, enode)
99100
else:
100101
expl = None
101102

chc/proof/CFunctionReturnsiteSPO.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
from chc.proof.CFunctionReturnsiteSPOs import CFunctionReturnsiteSPOs
3939
from chc.proof.CFunPODictionaryRecord import CFunPOType
4040
from chc.proof.CProofDependencies import CProofDependencies
41-
from chc.proof.CProofDiagnostic import CProofDiagnostic
41+
from chc.proof.CProofDiagnostic import CProofDiagnostic, SituatedMsg
4242
from chc.proof.SPOType import SPOType
4343

4444

@@ -51,7 +51,7 @@ def __init__(
5151
potype: "CFunPOType",
5252
status: str = "open",
5353
deps: Optional["CProofDependencies"] = None,
54-
expl: Optional[str] = None,
54+
expl: Optional["SituatedMsg"] = None,
5555
diag: Optional["CProofDiagnostic"] = None) -> None:
5656
CFunctionPO.__init__(
5757
self, crspos.cproofs, potype, status, deps, expl, diag)

chc/proof/CFunctionReturnsiteSPOs.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939

4040
from chc.proof.CFunctionReturnsiteSPO import CFunctionReturnsiteSPO
4141
from chc.proof.CProofDependencies import CProofDependencies
42-
from chc.proof.CProofDiagnostic import CProofDiagnostic
42+
from chc.proof.CProofDiagnostic import CProofDiagnostic, SituatedMsg
4343

4444
import chc.util.fileutil as UF
4545

@@ -107,8 +107,10 @@ def spos(self) -> Dict[int, List[CFunctionReturnsiteSPO]]:
107107
deps = CProofDependencies(self.cproofs, xpo)
108108
status = po_status[xpo.get("s", "o")]
109109
xexpl = xpo.find("e")
110-
expl = None if xexpl is None else xexpl.get("txt")
111-
diagnostic = CProofDiagnostic(xpo.find("d"))
110+
expl = (
111+
None if xexpl is None
112+
else SituatedMsg(self.cfun.cdictionary, xexpl))
113+
diagnostic = CProofDiagnostic(self.cproofs, xpo.find("d"))
112114
self._spos[ipc].append(
113115
CFunctionReturnsiteSPO(
114116
self, spotype, status, deps, expl, diagnostic))

chc/proof/CFunctionSPOs.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
from chc.proof.CFunctionPO import CFunctionPO
4141
from chc.proof.CFunctionPO import po_status
4242
from chc.proof.CProofDependencies import CProofDependencies
43-
from chc.proof.CProofDiagnostic import CProofDiagnostic
43+
from chc.proof.CProofDiagnostic import CProofDiagnostic, SituatedMsg
4444

4545
from chc.util.loggingutil import chklogger
4646

@@ -103,9 +103,11 @@ def local_spos(self) -> Dict[int, CFunctionLocalSPO]:
103103
for xpo in xlspos.findall("po"):
104104
spotype = self.podictionary.read_xml_spo_type(xpo)
105105
xexpl = xpo.find("e")
106-
expl = None if xexpl is None else xexpl.get("txt")
106+
expl = (
107+
None if xexpl is None
108+
else SituatedMsg(self.cfun.cdictionary, xexpl))
107109
deps = CProofDependencies(self.cproofs, xpo)
108-
diagnostic = CProofDiagnostic(xpo.find("d"))
110+
diagnostic = CProofDiagnostic(self.cproofs, xpo.find("d"))
109111
status = po_status[xpo.get("s", "o")]
110112
self._localspos[spotype.po_index] = CFunctionLocalSPO(
111113
self.cproofs, spotype, status, deps, expl, diagnostic)

0 commit comments

Comments
 (0)