ignore methods

git-svn-id: svn+ssh://svn.cprover.org/srv/svn/cbmc/trunk@1880 6afb6bc1-c8e4-404c-8f48-9ae832c5b171
This commit is contained in:
kroening 2012-11-03 15:33:32 +00:00
parent 1de5443f17
commit 5a92fde7ed
1 changed files with 30 additions and 4 deletions

View File

@ -194,7 +194,14 @@ exprt zero_initializert::zero_initializer_rec(
it=components.begin();
it!=components.end();
it++)
value.copy_to_operands(zero_initializer_rec(it->type(), location));
{
// skip methods
if(it->type().id()==ID_code)
{
}
else
value.copy_to_operands(zero_initializer_rec(it->type(), location));
}
value.location()=location;
@ -207,12 +214,31 @@ exprt zero_initializert::zero_initializer_rec(
exprt value(ID_union, type);
if(components.empty())
union_typet::componentt component;
bool found=false;
for(struct_typet::componentst::const_iterator
it=components.begin();
it!=components.end();
it++)
{
// skip methods
if(it->type().id()==ID_code)
{
}
else
{
component=*it;
found=true;
}
}
if(!found)
return value; // stupid empty union
value.set(ID_component_name, components.front().get(ID_name));
value.set(ID_component_name, component.get_name());
value.copy_to_operands(
zero_initializer_rec(components.front().type(), location));
zero_initializer_rec(component.type(), location));
value.location()=location;
return value;