@@ -83,7 +83,6 @@ class invariant_failedt: public std::logic_error
83
83
const std::string &reason);
84
84
85
85
public:
86
-
87
86
const std::string file;
88
87
const std::string function;
89
88
const int line;
@@ -117,20 +116,24 @@ class invariant_failedt: public std::logic_error
117
116
#define INVARIANT (CONDITION, REASON ) \
118
117
__CPROVER_assert ((CONDITION), "Invariant : " REASON)
119
118
119
+ #define INVARIANT_STRUCTURED (CONDITION, TYPENAME, ...) \
120
+ INVARIANT (CONDITION, " " )
120
121
121
122
#elif defined(CPROVER_INVARIANT_DO_NOT_CHECK)
122
123
// For performance builds, invariants can be ignored
123
124
// This is *not* recommended as it can result in unpredictable behaviour
124
125
// including silently reporting incorrect results.
125
126
// This is also useful for checking side-effect freedom.
126
- #define INVARIANT (CONDITION, REASON, ...) do {} while (0 )
127
+ #define INVARIANT (CONDITION, REASON ) do {} while (0 )
128
+ #define INVARIANT_STRUCTURED (CONDITION, TYPENAME, ...) do {} while (0 )
127
129
128
130
#elif defined(CPROVER_INVARIANT_ASSERT)
129
131
// Not recommended but provided for backwards compatability
130
132
#include < cassert>
131
133
// NOLINTNEXTLINE(*)
132
- #define INVARIANT (CONDITION, REASON, ...) assert((CONDITION) && ((REASON), true ))
133
-
134
+ #define INVARIANT (CONDITION, REASON ) assert((CONDITION) && ((REASON), true ))
135
+ // NOLINTNEXTLINE(*)
136
+ #define INVARIANT_STRUCTURED (CONDITION, TYPENAME, ...) assert((CONDITION))
134
137
#else
135
138
136
139
void print_backtrace (std::ostream &out);
0 commit comments