Skip to content

Commit 7755820

Browse files
Fix boolean to string conversion in expr2java
Fixes diffblue/test-gen#206.
1 parent 8fd1118 commit 7755820

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

src/java_bytecode/expr2java.cpp

+10-10
Original file line numberDiff line numberDiff line change
@@ -195,9 +195,15 @@ std::string expr2javat::convert_constant(
195195
const constant_exprt &src,
196196
unsigned &precedence)
197197
{
198-
if(src.type().id()==ID_bool)
198+
if(src.type().id()==ID_c_bool)
199+
{
200+
if(!src.is_zero())
201+
return "true";
202+
else
203+
return "false";
204+
}
205+
else if(src.type().id()==ID_bool)
199206
{
200-
// Java has built-in Boolean constants, in contrast to C
201207
if(src.is_true())
202208
return "true";
203209
else if(src.is_false())
@@ -482,7 +488,6 @@ std::string expr2javat::convert(
482488
const exprt &src,
483489
unsigned &precedence)
484490
{
485-
const typet &type=ns.follow(src.type());
486491
if(src.id()=="java-this")
487492
return convert_java_this(src, precedence=15);
488493
if(src.id()==ID_java_instanceof)
@@ -510,13 +515,8 @@ std::string expr2javat::convert(
510515
}
511516
else if(src.id()==ID_java_string_literal)
512517
return '"'+MetaString(src.get_string(ID_value))+'"';
513-
else if(src.id()==ID_constant && (type.id()==ID_bool || type.id()==ID_c_bool))
514-
{
515-
if(src.is_true())
516-
return "true";
517-
else
518-
return "false";
519-
}
518+
else if(src.id()==ID_constant)
519+
return convert_constant(to_constant_expr(src), precedence=16);
520520
else
521521
return expr2ct::convert(src, precedence);
522522
}

0 commit comments

Comments
 (0)