|
67 | 67 | #include <java_bytecode/java_enum_static_init_unwind_handler.h>
|
68 | 68 | #include <java_bytecode/java_multi_path_symex_checker.h>
|
69 | 69 | #include <java_bytecode/java_multi_path_symex_only_checker.h>
|
| 70 | +#include <java_bytecode/java_single_path_symex_checker.h> |
| 71 | +#include <java_bytecode/java_single_path_symex_only_checker.h> |
70 | 72 | #include <java_bytecode/remove_exceptions.h>
|
71 | 73 | #include <java_bytecode/remove_instanceof.h>
|
72 | 74 | #include <java_bytecode/remove_java_new.h>
|
@@ -574,46 +576,83 @@ int jbmc_parse_optionst::doit()
|
574 | 576 | options.get_bool_option("program-only") ||
|
575 | 577 | options.get_bool_option("show-vcc"))
|
576 | 578 | {
|
577 |
| - if(!options.get_bool_option("paths")) |
| 579 | + std::unique_ptr<goto_verifiert> verifier; |
| 580 | + if(options.get_bool_option("paths")) |
578 | 581 | {
|
579 |
| - all_properties_verifiert<java_multi_path_symex_only_checkert> verifier( |
| 582 | + verifier = util_make_unique< |
| 583 | + all_properties_verifiert<java_single_path_symex_only_checkert>>( |
| 584 | + options, ui_message_handler, goto_model); |
| 585 | + } |
| 586 | + else |
| 587 | + { |
| 588 | + verifier = util_make_unique< |
| 589 | + all_properties_verifiert<java_multi_path_symex_only_checkert>>( |
580 | 590 | options, ui_message_handler, goto_model);
|
581 |
| - (void)verifier(); |
582 |
| - return CPROVER_EXIT_SUCCESS; |
583 | 591 | }
|
| 592 | + |
| 593 | + (void)(*verifier)(); |
| 594 | + return CPROVER_EXIT_SUCCESS; |
584 | 595 | }
|
585 | 596 |
|
586 | 597 | if(
|
587 | 598 | options.get_bool_option("dimacs") ||
|
588 | 599 | !options.get_option("outfile").empty())
|
589 | 600 | {
|
590 |
| - if(!options.get_bool_option("paths")) |
| 601 | + std::unique_ptr<goto_verifiert> verifier; |
| 602 | + if(options.get_bool_option("paths")) |
591 | 603 | {
|
592 |
| - stop_on_fail_verifiert<multi_path_symex_checkert> verifier( |
| 604 | + verifier = util_make_unique< |
| 605 | + stop_on_fail_verifiert<java_single_path_symex_checkert>>( |
593 | 606 | options, ui_message_handler, goto_model);
|
594 |
| - (void)verifier(); |
595 |
| - return CPROVER_EXIT_SUCCESS; |
596 | 607 | }
|
| 608 | + else |
| 609 | + { |
| 610 | + verifier = util_make_unique< |
| 611 | + stop_on_fail_verifiert<java_multi_path_symex_checkert>>( |
| 612 | + options, ui_message_handler, goto_model); |
| 613 | + } |
| 614 | + |
| 615 | + (void)(*verifier)(); |
| 616 | + return CPROVER_EXIT_SUCCESS; |
597 | 617 | }
|
598 | 618 |
|
599 | 619 | std::unique_ptr<goto_verifiert> verifier = nullptr;
|
600 | 620 |
|
601 | 621 | if(
|
602 |
| - !options.get_bool_option("paths") && !options.is_set("cover") && |
603 |
| - !options.get_bool_option("dimacs") && |
| 622 | + !options.is_set("cover") && !options.get_bool_option("dimacs") && |
604 | 623 | options.get_option("outfile").empty())
|
605 | 624 | {
|
606 | 625 | if(options.get_bool_option("stop-on-fail"))
|
607 | 626 | {
|
608 |
| - verifier = util_make_unique< |
609 |
| - stop_on_fail_verifiert<java_multi_path_symex_checkert>>( |
610 |
| - options, ui_message_handler, goto_model); |
| 627 | + if(options.get_bool_option("paths")) |
| 628 | + { |
| 629 | + verifier = util_make_unique< |
| 630 | + stop_on_fail_verifiert<java_single_path_symex_checkert>>( |
| 631 | + options, ui_message_handler, goto_model); |
| 632 | + } |
| 633 | + else |
| 634 | + { |
| 635 | + verifier = util_make_unique< |
| 636 | + stop_on_fail_verifiert<java_multi_path_symex_checkert>>( |
| 637 | + options, ui_message_handler, goto_model); |
| 638 | + } |
611 | 639 | }
|
612 | 640 | else
|
613 | 641 | {
|
614 |
| - verifier = util_make_unique<all_properties_verifier_with_trace_storaget< |
615 |
| - java_multi_path_symex_checkert>>( |
616 |
| - options, ui_message_handler, goto_model); |
| 642 | + if(options.get_bool_option("paths")) |
| 643 | + { |
| 644 | + verifier = |
| 645 | + util_make_unique<all_properties_verifier_with_trace_storaget< |
| 646 | + java_single_path_symex_checkert>>( |
| 647 | + options, ui_message_handler, goto_model); |
| 648 | + } |
| 649 | + else |
| 650 | + { |
| 651 | + verifier = |
| 652 | + util_make_unique<all_properties_verifier_with_trace_storaget< |
| 653 | + java_multi_path_symex_checkert>>( |
| 654 | + options, ui_message_handler, goto_model); |
| 655 | + } |
617 | 656 | }
|
618 | 657 | }
|
619 | 658 |
|
|
0 commit comments