Skip to content

Commit 0e55409

Browse files
committed
Add remove_java_new pass to jdiff and janalyzer tools
Add the `remove_java_new` pass after `convert_java_nondet` to both `jdiff` and `janalyzer`. This ensures that any new statements introduced by `convert_java_nondet` are properly processed. Fixes: #3094
1 parent 4fe3ade commit 0e55409

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

jbmc/src/janalyzer/janalyzer_parse_options.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,13 @@ Author: Daniel Kroening, [email protected]
3535
#include <goto-analyzer/static_verifier.h>
3636
#include <goto-analyzer/taint_analysis.h>
3737
#include <goto-analyzer/unreachable_instructions.h>
38+
#include <java_bytecode/convert_java_nondet.h>
3839
#include <java_bytecode/java_bytecode_language.h>
40+
#include <java_bytecode/java_object_factory_parameters.h>
3941
#include <java_bytecode/lazy_goto_model.h>
4042
#include <java_bytecode/remove_exceptions.h>
4143
#include <java_bytecode/remove_instanceof.h>
44+
#include <java_bytecode/remove_java_new.h>
4245
#include <langapi/language.h>
4346
#include <langapi/mode.h>
4447
#include <linking/static_lifetime_init.h>
@@ -695,6 +698,19 @@ void janalyzer_parse_optionst::process_goto_function(
695698

696699
remove_returns(function, function_is_stub);
697700

701+
// convert Java nondet expressions
702+
java_object_factory_parameterst object_factory_parameters;
703+
object_factory_parameters.set(options);
704+
convert_nondet(
705+
function, ui_message_handler, object_factory_parameters, ID_java);
706+
707+
// remove Java new expressions (must be after convert_nondet)
708+
remove_java_new(
709+
function.get_function_id(),
710+
function.get_goto_function(),
711+
symbol_table,
712+
ui_message_handler);
713+
698714
transform_assertions_assumptions(options, function.get_goto_function().body);
699715
}
700716

jbmc/src/jdiff/jdiff_parse_options.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,12 @@ Author: Peter Schrammel
3333
#include <goto-diff/change_impact.h>
3434
#include <goto-diff/unified_diff.h>
3535
#include <goto-instrument/cover.h>
36+
#include <java_bytecode/convert_java_nondet.h>
3637
#include <java_bytecode/java_bytecode_language.h>
38+
#include <java_bytecode/java_object_factory_parameters.h>
3739
#include <java_bytecode/remove_exceptions.h>
3840
#include <java_bytecode/remove_instanceof.h>
41+
#include <java_bytecode/remove_java_new.h>
3942

4043
#include "java_syntactic_diff.h"
4144

@@ -198,6 +201,14 @@ bool jdiff_parse_optionst::process_goto_program(
198201
// remove returns
199202
remove_returns(goto_model);
200203

204+
// convert Java nondet expressions
205+
java_object_factory_parameterst object_factory_parameters;
206+
object_factory_parameters.set(options);
207+
convert_nondet(goto_model, ui_message_handler, object_factory_parameters);
208+
209+
// remove Java new expressions (must be after convert_nondet)
210+
remove_java_new(goto_model, ui_message_handler);
211+
201212
transform_assertions_assumptions(options, goto_model);
202213

203214
// checks don't know about adjusted float expressions

0 commit comments

Comments
 (0)