Skip to content

Commit b01bb42

Browse files
author
Daniel Kroening
committed
C++: use struct_tag type
1 parent fc58bad commit b01bb42

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

src/cpp/cpp_typecheck_resolve.cpp

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -335,9 +335,13 @@ exprt cpp_typecheck_resolvet::convert_identifier(
335335
{
336336
e.type()=c_enum_tag_typet(symbol.name);
337337
}
338-
else // will need to do struct, union
338+
else if(symbol.type.id()==ID_struct)
339339
{
340-
e.type()=symbol_typet(symbol.name);
340+
e.type()=struct_tag_typet(symbol.name);
341+
}
342+
else if(symbol.type.id()==ID_union)
343+
{
344+
e.type()=union_tag_typet(symbol.name);
341345
}
342346
}
343347
else if(symbol.is_macro)
@@ -898,7 +902,7 @@ cpp_scopet &cpp_typecheck_resolvet::resolve_scope(
898902
cpp_typecheck.cpp_scopes.current_scope().print(std::cout);
899903
std::cout << "X: " << id_set.size() << '\n';
900904
#endif
901-
symbol_typet instance=
905+
struct_tag_typet instance=
902906
disambiguate_template_classes(final_base_name, id_set, template_args);
903907

904908
instance.add_source_location()=source_location;
@@ -944,7 +948,7 @@ cpp_scopet &cpp_typecheck_resolvet::resolve_scope(
944948
// the "::" triggers template elaboration
945949
if(!cpp_typecheck.cpp_scopes.current_scope().class_identifier.empty())
946950
{
947-
symbol_typet instance(
951+
struct_tag_typet instance(
948952
cpp_typecheck.cpp_scopes.current_scope().class_identifier);
949953
cpp_typecheck.elaborate_class_template(instance);
950954
}
@@ -986,7 +990,7 @@ cpp_scopet &cpp_typecheck_resolvet::resolve_scope(
986990
}
987991

988992
/// disambiguate partial specialization
989-
symbol_typet cpp_typecheck_resolvet::disambiguate_template_classes(
993+
struct_tag_typet cpp_typecheck_resolvet::disambiguate_template_classes(
990994
const irep_idt &base_name,
991995
const cpp_scopest::id_sett &id_set,
992996
const cpp_template_args_non_tct &full_template_args)
@@ -1182,7 +1186,7 @@ symbol_typet cpp_typecheck_resolvet::disambiguate_template_classes(
11821186
throw 0;
11831187
}
11841188

1185-
symbol_typet result(instance.name);
1189+
struct_tag_typet result(instance.name);
11861190
result.add_source_location()=source_location;
11871191

11881192
return result;
@@ -1196,7 +1200,7 @@ symbol_typet cpp_typecheck_resolvet::disambiguate_template_classes(
11961200
match.specialization_args,
11971201
match.full_args);
11981202

1199-
symbol_typet result(instance.name);
1203+
struct_tag_typet result(instance.name);
12001204
result.add_source_location()=source_location;
12011205

12021206
return result;
@@ -2062,7 +2066,7 @@ void cpp_typecheck_resolvet::apply_template_args(
20622066
template_args_tc,
20632067
template_args_tc);
20642068

2065-
expr=exprt(ID_type, symbol_typet(new_symbol.name));
2069+
expr=type_exprt(struct_tag_typet(new_symbol.name));
20662070
expr.add_source_location()=source_location;
20672071
}
20682072
else
@@ -2207,11 +2211,7 @@ void cpp_typecheck_resolvet::filter_for_named_scopes(
22072211
assert(pcomp.get_bool(ID_is_type));
22082212
const typet &type=pcomp.type();
22092213
assert(type.id()!=ID_struct);
2210-
2211-
if(type.id() == ID_symbol_type)
2212-
identifier = to_symbol_type(type).get_identifier();
2213-
else
2214-
continue;
2214+
continue;
22152215
}
22162216

22172217
while(true)
@@ -2230,8 +2230,6 @@ void cpp_typecheck_resolvet::filter_for_named_scopes(
22302230
new_set.insert(&class_id);
22312231
break;
22322232
}
2233-
else if(symbol.type.id() == ID_symbol_type)
2234-
identifier = to_symbol_type(symbol.type).get_identifier();
22352233
else
22362234
break;
22372235
}

0 commit comments

Comments
 (0)