Skip to content

Commit 21d938e

Browse files
author
Daniel Kroening
committed
remove symbol_typet() constructor, which produces an incomplete object
1 parent 514a0a5 commit 21d938e

File tree

7 files changed

+21
-17
lines changed

7 files changed

+21
-17
lines changed

src/ansi-c/c_typecheck_type.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -792,9 +792,8 @@ void c_typecheck_baset::typecheck_compound_type(struct_union_typet &type)
792792
}
793793
}
794794

795-
symbol_typet symbol_type;
795+
symbol_typet symbol_type(identifier);
796796
symbol_type.add_source_location()=type.source_location();
797-
symbol_type.set_identifier(identifier);
798797

799798
c_qualifierst original_qualifiers(type);
800799
type.swap(symbol_type);

src/goto-programs/remove_virtual_functions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ void remove_virtual_functionst::remove_virtual_function(
177177
// So long as `this` is already not `void*` typed, the second parameter
178178
// is ignored:
179179
exprt this_class_identifier =
180-
get_class_identifier_field(this_expr, symbol_typet(), ns);
180+
get_class_identifier_field(this_expr, symbol_typet(irep_idt()), ns);
181181

182182
// If instructed, add an ASSUME(FALSE) to handle the case where we don't
183183
// match any expected type:

src/java_bytecode/java_bytecode_convert_method.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1185,7 +1185,7 @@ codet java_bytecode_convert_methodt::convert_instructions(
11851185
{
11861186
if(cur_pc==it->handler_pc)
11871187
{
1188-
if(catch_type!=typet() || it->catch_type==symbol_typet())
1188+
if(catch_type!=typet() || it->catch_type==symbol_typet(irep_idt()))
11891189
{
11901190
catch_type=symbol_typet("java::java.lang.Throwable");
11911191
break;

src/java_bytecode/java_bytecode_parse_tree.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,12 @@ class java_bytecode_parse_treet
9595
struct exceptiont
9696
{
9797
public:
98+
exceptiont():
99+
start_pc(0), end_pc(0), handler_pc(0),
100+
catch_type(irep_idt())
101+
{
102+
}
103+
98104
std::size_t start_pc;
99105
std::size_t end_pc;
100106
std::size_t handler_pc;

src/java_bytecode/java_string_library_preprocess.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1249,7 +1249,8 @@ exprt java_string_library_preprocesst::get_primitive_value_of_object(
12491249
symbol_table_baset &symbol_table,
12501250
code_blockt &code)
12511251
{
1252-
symbol_typet object_type;
1252+
optionalt<symbol_typet> object_type;
1253+
12531254
typet value_type;
12541255
if(type_name==ID_boolean)
12551256
{
@@ -1296,6 +1297,8 @@ exprt java_string_library_preprocesst::get_primitive_value_of_object(
12961297
else
12971298
UNREACHABLE;
12981299

1300+
assert(object_type.has_value());
1301+
12991302
// declare tmp_type_name to hold the value
13001303
std::string aux_name="tmp_"+id2string(type_name);
13011304
symbolt symbol=get_fresh_aux_symbol(
@@ -1304,7 +1307,7 @@ exprt java_string_library_preprocesst::get_primitive_value_of_object(
13041307

13051308
// Check that the type of the object is in the symbol table,
13061309
// otherwise there is no safe way of finding its value.
1307-
if(const auto maybe_symbol=symbol_table.lookup(object_type.get_identifier()))
1310+
if(const auto maybe_symbol=symbol_table.lookup(object_type->get_identifier()))
13081311
{
13091312
struct_typet struct_type=to_struct_type(maybe_symbol->type);
13101313
// Check that the type has a value field
@@ -1321,7 +1324,7 @@ exprt java_string_library_preprocesst::get_primitive_value_of_object(
13211324
}
13221325
}
13231326

1324-
warning() << object_type.get_identifier()
1327+
warning() << object_type->get_identifier()
13251328
<< " not available to format function" << eom;
13261329
code.add(code_declt(value), loc);
13271330
return value;

src/util/std_types.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,6 @@ class real_typet:public typet
110110
class symbol_typet:public typet
111111
{
112112
public:
113-
symbol_typet():typet(ID_symbol)
114-
{
115-
}
116-
117113
explicit symbol_typet(const irep_idt &identifier):typet(ID_symbol)
118114
{
119115
set_identifier(identifier);

unit/java_bytecode/java_types/generic_type_index.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ SCENARIO("generic_type_index", "[core][java_types]")
1717
const auto symbol_type = symbol_typet("java::GenericClass");
1818
const auto generic_symbol_type = java_generic_symbol_typet(
1919
symbol_type, "LGenericClass<TX;Tvalue;>;", "PrefixClassName");
20-
java_generic_parametert paramX("PrefixClassName::X", symbol_typet());
21-
java_generic_parametert value("PrefixClassName::value", symbol_typet());
22-
java_generic_parametert paramZ("PrefixClassName::Z", symbol_typet());
20+
java_generic_parametert paramX("PrefixClassName::X", symbol_typet(irep_idt()));
21+
java_generic_parametert value("PrefixClassName::value", symbol_typet(irep_idt()));
22+
java_generic_parametert paramZ("PrefixClassName::Z", symbol_typet(irep_idt()));
2323

2424
WHEN("Looking for parameter indexes")
2525
{
@@ -43,9 +43,9 @@ SCENARIO("generic_type_index", "[core][java_types]")
4343
const auto symbol_type = symbol_typet("java::java.util.Map");
4444
const auto generic_symbol_type = java_generic_symbol_typet(
4545
symbol_type, "Ljava/util/Map<TK;TV;>;", "java.util.HashMap");
46-
java_generic_parametert param0("java.util.HashMap::K", symbol_typet());
47-
java_generic_parametert param1("java.util.HashMap::V", symbol_typet());
48-
java_generic_parametert param2("java.util.HashMap::T", symbol_typet());
46+
java_generic_parametert param0("java.util.HashMap::K", symbol_typet(irep_idt()));
47+
java_generic_parametert param1("java.util.HashMap::V", symbol_typet(irep_idt()));
48+
java_generic_parametert param2("java.util.HashMap::T", symbol_typet(irep_idt()));
4949

5050
WHEN("Looking for parameter indexes")
5151
{

0 commit comments

Comments
 (0)