Skip to content

Commit 6da3630

Browse files
committed
Extends ansi_c_declarationt to include accessors for assigns clauses
1 parent c7d79a4 commit 6da3630

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

src/ansi-c/ansi_c_declaration.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,21 @@ class ansi_c_declarationt:public exprt
244244
assert(!declarators().empty());
245245
declarators().back().value().swap(value);
246246
}
247+
248+
const exprt &spec_assigns() const
249+
{
250+
return static_cast<const exprt &>(find(ID_C_spec_assigns));
251+
}
252+
253+
const exprt &spec_requires() const
254+
{
255+
return static_cast<const exprt &>(find(ID_C_spec_requires));
256+
}
257+
258+
const exprt &spec_ensures() const
259+
{
260+
return static_cast<const exprt &>(find(ID_C_spec_ensures));
261+
}
247262
};
248263

249264
inline ansi_c_declarationt &to_ansi_c_declaration(exprt &expr)

src/ansi-c/c_typecheck_base.cpp

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -645,17 +645,14 @@ void c_typecheck_baset::typecheck_declaration(
645645
irept contract;
646646

647647
{
648-
exprt spec_assigns=
649-
static_cast<const exprt&>(declaration.find(ID_C_spec_assigns));
648+
exprt spec_assigns = declaration.spec_assigns();
650649
contract.add(ID_C_spec_assigns).swap(spec_assigns);
651650

652-
exprt spec_requires=
653-
static_cast<const exprt&>(declaration.find(ID_C_spec_requires));
654-
contract.add(ID_C_spec_requires).swap(spec_requires);
655-
656-
exprt spec_ensures=
657-
static_cast<const exprt&>(declaration.find(ID_C_spec_ensures));
651+
exprt spec_ensures = declaration.spec_ensures();
658652
contract.add(ID_C_spec_ensures).swap(spec_ensures);
653+
654+
exprt spec_requires = declaration.spec_requires();
655+
contract.add(ID_C_spec_requires).swap(spec_requires);
659656
}
660657

661658
// Now do declarators, if any.

0 commit comments

Comments
 (0)