@@ -11,15 +11,16 @@ Author: Daniel Kroening
11
11
12
12
#include " remove_internal_symbols.h"
13
13
14
- #include < goto-programs/adjust_float_expressions.h>
15
-
14
+ #include < util/c_types.h>
16
15
#include < util/config.h>
17
16
#include < util/find_symbols.h>
18
17
#include < util/message.h>
19
18
#include < util/namespace.h>
20
19
#include < util/std_types.h>
21
20
#include < util/symbol_table.h>
22
21
22
+ #include < goto-programs/adjust_float_expressions.h>
23
+
23
24
#include " static_lifetime_init.h"
24
25
25
26
static void get_symbols (
@@ -62,14 +63,16 @@ static void get_symbols(
62
63
}
63
64
64
65
// check for contract definitions
65
- const exprt ensures =
66
- static_cast <const exprt &>(code_type.find (ID_C_spec_ensures));
67
- const exprt requires =
68
- static_cast <const exprt &>(code_type.find (ID_C_spec_requires));
66
+ const code_with_contract_typet &maybe_contract =
67
+ to_code_with_contract_type (code_type);
69
68
70
69
find_symbols_sett new_symbols;
71
- find_type_and_expr_symbols (ensures, new_symbols);
72
- find_type_and_expr_symbols (requires, new_symbols);
70
+ for (const exprt &e : maybe_contract.ensures ())
71
+ find_type_and_expr_symbols (e, new_symbols);
72
+ for (const exprt &r : maybe_contract.requires ())
73
+ find_type_and_expr_symbols (r, new_symbols);
74
+ for (const exprt &a : maybe_contract.assigns ())
75
+ find_type_and_expr_symbols (a, new_symbols);
73
76
74
77
for (const auto &s : new_symbols)
75
78
{
0 commit comments