From 7755820ab7a99f8dcb3d93ca025109fcdc695777 Mon Sep 17 00:00:00 2001 From: Peter Schrammel Date: Tue, 11 Apr 2017 22:28:14 +0200 Subject: [PATCH 1/2] Fix boolean to string conversion in expr2java Fixes diffblue/test-gen#206. --- src/java_bytecode/expr2java.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/java_bytecode/expr2java.cpp b/src/java_bytecode/expr2java.cpp index 3cd487e234a..aac8b17d335 100644 --- a/src/java_bytecode/expr2java.cpp +++ b/src/java_bytecode/expr2java.cpp @@ -195,9 +195,15 @@ std::string expr2javat::convert_constant( const constant_exprt &src, unsigned &precedence) { - if(src.type().id()==ID_bool) + if(src.type().id()==ID_c_bool) + { + if(!src.is_zero()) + return "true"; + else + return "false"; + } + else if(src.type().id()==ID_bool) { - // Java has built-in Boolean constants, in contrast to C if(src.is_true()) return "true"; else if(src.is_false()) @@ -482,7 +488,6 @@ std::string expr2javat::convert( const exprt &src, unsigned &precedence) { - const typet &type=ns.follow(src.type()); if(src.id()=="java-this") return convert_java_this(src, precedence=15); if(src.id()==ID_java_instanceof) @@ -510,13 +515,8 @@ std::string expr2javat::convert( } else if(src.id()==ID_java_string_literal) return '"'+MetaString(src.get_string(ID_value))+'"'; - else if(src.id()==ID_constant && (type.id()==ID_bool || type.id()==ID_c_bool)) - { - if(src.is_true()) - return "true"; - else - return "false"; - } + else if(src.id()==ID_constant) + return convert_constant(to_constant_expr(src), precedence=16); else return expr2ct::convert(src, precedence); } From 396a53091a7af2b3da4c23130daaa08ef24a47ba Mon Sep 17 00:00:00 2001 From: Peter Schrammel Date: Wed, 12 Apr 2017 09:18:37 +0200 Subject: [PATCH 2/2] Remove unused nullptr case in expr2java Was supposedly copy and paste from expr2cpp --- src/java_bytecode/expr2java.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/java_bytecode/expr2java.cpp b/src/java_bytecode/expr2java.cpp index aac8b17d335..5f07b5850fb 100644 --- a/src/java_bytecode/expr2java.cpp +++ b/src/java_bytecode/expr2java.cpp @@ -499,8 +499,6 @@ std::string expr2javat::convert( else if(src.id()==ID_side_effect && src.get(ID_statement)==ID_throw) return convert_function(src, "throw", precedence=16); - else if(src.is_constant() && to_constant_expr(src).get_value()==ID_nullptr) - return "nullptr"; else if(src.id()==ID_unassigned) return "?"; else if(src.id()=="pod_constructor")