Skip to content

Commit 9a3f8ec

Browse files
committed
feat: show different message if invariant was violated before or after
taken from https://gitlab.com/karroffel/contracts/-/merge_requests/8/diffs
1 parent 80e311b commit 9a3f8ec

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66

77
## Unreleased
88

9+
- Add effective contract type to invariant violation messages.
10+
911
## [0.6.3] - 2022-03-13
1012

1113
### Fixed

src/implementation/codegen.rs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -213,13 +213,14 @@ pub(crate) fn generate(
213213
.iter()
214214
.filter(|c| c.ty == ContractType::Requires || c.ty == ContractType::Invariant)
215215
.flat_map(|c| {
216+
let contract_type_name = if c.ty == ContractType::Invariant {
217+
format!("{} (as pre-condition)", c.ty.message_name())
218+
} else {
219+
c.ty.message_name().to_string()
220+
};
221+
216222
let desc = if let Some(desc) = c.desc.as_ref() {
217-
format!(
218-
"{} of {} violated: {}",
219-
c.ty.message_name(),
220-
func_name,
221-
desc
222-
)
223+
format!("{} of {} violated: {}", contract_type_name, func_name, desc)
223224
} else {
224225
format!("{} of {} violated", c.ty.message_name(), func_name)
225226
};
@@ -250,13 +251,14 @@ pub(crate) fn generate(
250251
.iter()
251252
.filter(|c| c.ty == ContractType::Ensures || c.ty == ContractType::Invariant)
252253
.flat_map(|c| {
254+
let contract_type_name = if c.ty == ContractType::Invariant {
255+
format!("{} (as post-condition)", c.ty.message_name())
256+
} else {
257+
c.ty.message_name().to_string()
258+
};
259+
253260
let desc = if let Some(desc) = c.desc.as_ref() {
254-
format!(
255-
"{} of {} violated: {}",
256-
c.ty.message_name(),
257-
func_name,
258-
desc
259-
)
261+
format!("{} of {} violated: {}", contract_type_name, func_name, desc)
260262
} else {
261263
format!("{} of {} violated", c.ty.message_name(), func_name)
262264
};

0 commit comments

Comments
 (0)