Skip to content

Commit 7cf1c92

Browse files
romainbrenguierJoel Allred
authored and
Joel Allred
committed
Fixes in pre-processing for issue diffblue#170
Do not force return type of StringBuilder functions This was causing some type problems because the return types and the lhs do not match. As a consequence some equalities were ignored by the string solver. Get rid of typecasts These are not needed and may result in incorrect type later.
1 parent 21eeb29 commit 7cf1c92

File tree

1 file changed

+11
-17
lines changed

1 file changed

+11
-17
lines changed

src/goto-programs/string_refine_preprocess.cpp

+11-17
Original file line numberDiff line numberDiff line change
@@ -648,19 +648,15 @@ void string_refine_preprocesst::make_string_function(
648648
{
649649
if(signature.back()=='S')
650650
{
651-
code_typet ft=function_type;
652-
ft.return_type()=jls_ptr;
653-
typecast_exprt lhs2(lhs, jls_ptr);
654-
655651
make_string_assign(
656652
goto_program,
657653
target,
658-
lhs2,
659-
ft,
654+
lhs,
655+
function_type,
660656
function_name,
661657
arguments,
662658
location,
663-
signature);
659+
signature);
664660
}
665661
else
666662
make_normal_assign(
@@ -746,6 +742,7 @@ void string_refine_preprocesst::make_string_function(
746742

747743
std::string new_sig=signature;
748744
exprt lhs;
745+
749746
if(assign_first_arg)
750747
{
751748
assert(!function_call.arguments().empty());
@@ -759,9 +756,6 @@ void string_refine_preprocesst::make_string_function(
759756
else
760757
lhs=function_call.lhs();
761758

762-
if(lhs.id()==ID_typecast)
763-
lhs=to_typecast_expr(lhs).op();
764-
765759
new_type.return_type()=lhs.type();
766760

767761
make_string_function(
@@ -1400,19 +1394,19 @@ void string_refine_preprocesst::initialize_string_function_table()
14001394
signatures["java::java.lang.String.contains:(Ljava/lang/CharSequence;)Z"]=
14011395
"SSZ";
14021396
signatures["java::java.lang.StringBuilder.insert:(IZ)"
1403-
"Ljava/lang/StringBuilder;"]="SIZS";
1397+
"Ljava/lang/StringBuilder;"]="SIZ_";
14041398
signatures["java::java.lang.StringBuilder.insert:(IJ)"
1405-
"Ljava/lang/StringBuilder;"]="SIJS";
1399+
"Ljava/lang/StringBuilder;"]="SIJ_";
14061400
signatures["java::java.lang.StringBuilder.insert:(II)"
1407-
"Ljava/lang/StringBuilder;"]="SIIS";
1401+
"Ljava/lang/StringBuilder;"]="SII_";
14081402
signatures["java::java.lang.StringBuilder.insert:(IC)"
1409-
"Ljava/lang/StringBuilder;"]="SICS";
1403+
"Ljava/lang/StringBuilder;"]="SIC_";
14101404
signatures["java::java.lang.StringBuilder.insert:(ILjava/lang/String;)"
1411-
"Ljava/lang/StringBuilder;"]="SISS";
1405+
"Ljava/lang/StringBuilder;"]="SIS_";
14121406
signatures["java::java.lang.StringBuilder.insert:(ILjava/lang/String;)"
1413-
"Ljava/lang/StringBuilder;"]="SISS";
1407+
"Ljava/lang/StringBuilder;"]="SIS_";
14141408
signatures["java::java.lang.StringBuilder.insert:(I[C)"
1415-
"Ljava/lang/StringBuilder;"]="SI[S";
1409+
"Ljava/lang/StringBuilder;"]="SI[_";
14161410
signatures["java::java.lang.String.intern:()Ljava/lang/String;"]="SV";
14171411
}
14181412

0 commit comments

Comments
 (0)