Skip to content

Commit 2857ae1

Browse files
author
Joel Allred
committed
[preprocess] [amendments4] PR 906 diffblue/test-gen#133
Correct implementation and usage of string_length_type()
1 parent bb54186 commit 2857ae1

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

src/java_bytecode/java_string_library_preprocess.cpp

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -269,14 +269,11 @@ typet string_data_type(symbol_tablet symbol_table)
269269
270270
Function: java_string_library_preprocesst::string_length_type
271271
272-
Inputs:
273-
symbol_table - a symbol_table containing an entry for java Strings
274-
275-
Outputs: the type of length fields in java Strings.
272+
Outputs: the type of the length field in java Strings.
276273
277274
\*******************************************************************/
278275

279-
typet string_length_type(symbol_tablet symbol_table)
276+
typet string_length_type()
280277
{
281278
return java_int_type();
282279
}
@@ -305,14 +302,14 @@ void java_string_library_preprocesst::add_string_type(
305302
string_type.components()[0].type()=symbol_typet("java::java.lang.Object");
306303
string_type.components()[1].set_name("length");
307304
string_type.components()[1].set_pretty_name("length");
308-
string_type.components()[1].type()=java_int_type();
305+
string_type.components()[1].type()=string_length_type();
309306
string_type.components()[2].set_name("data");
310307
string_type.components()[2].set_pretty_name("data");
311308
// Use a pointer-to-unbounded-array instead of a pointer-to-char.
312309
// Saves some casting in the string refinement algorithm but may
313310
// be unnecessary.
314311
string_type.components()[2].type()=pointer_typet(
315-
array_typet(java_char_type(), infinity_exprt(java_int_type())));
312+
array_typet(java_char_type(), infinity_exprt(string_length_type())));
316313
string_type.add_base(symbol_typet("java::java.lang.Object"));
317314

318315
symbolt string_symbol;
@@ -441,7 +438,7 @@ void java_string_library_preprocesst::process_single_operand(
441438
code_blockt &init_code)
442439
{
443440
member_exprt length(
444-
op_to_process, "length", string_length_type(symbol_table));
441+
op_to_process, "length", string_length_type());
445442
member_exprt data(op_to_process, "data", string_data_type(symbol_table));
446443
dereference_exprt deref_data(data, data.type().subtype());
447444
string_exprt string_expr=fresh_string_expr(loc, symbol_table, init_code);
@@ -1303,7 +1300,7 @@ codet java_string_library_preprocesst::make_string_builder_append_float_code(
13031300
exprt this_obj=symbol_exprt(params[0].get_identifier(), params[0].type());
13041301

13051302
// Getting types
1306-
typet length_type=string_length_type(symbol_table);
1303+
typet length_type=string_length_type();
13071304

13081305
// Code to be returned
13091306
code_blockt code;
@@ -1665,7 +1662,7 @@ codet java_string_library_preprocesst::make_string_to_char_array_code(
16651662
// first_element_address is `&((string_argument->data)[0])`
16661663
exprt data=get_data(deref, symbol_table);
16671664
dereference_exprt deref_data(data, data.type().subtype());
1668-
exprt first_index=from_integer(0, java_int_type());
1665+
exprt first_index=from_integer(0, string_length_type());
16691666
index_exprt first_element(deref_data, first_index, java_char_type());
16701667
address_of_exprt first_element_address(first_element);
16711668

0 commit comments

Comments
 (0)