File tree Expand file tree Collapse file tree 3 files changed +48
-0
lines changed
jbmc/regression/jbmc/nondet-static Expand file tree Collapse file tree 3 files changed +48
-0
lines changed Original file line number Diff line number Diff line change 1+ public class My {
2+ public static int s_non_init ;
3+ public static int s_init = 1 ;
4+ public static int s_static_init ;
5+ static { s_static_init = 2 ; }
6+
7+ public static final int sf_init = 1 ;
8+ public static final int sf_static_init ;
9+ static { sf_static_init = 2 ; }
10+
11+ public int field ;
12+ public My (int i ) {
13+ String s = "bla" ;
14+ field = i ;
15+ if (s_non_init != 0 )
16+ field = 108 ; // this line can only be covered with nondet-static
17+ if (s_init != 1 )
18+ field = 108 ; // this line can only be covered with nondet-static
19+ if (s_static_init != 2 )
20+ field = 108 ; // this line can only be covered with nondet-static
21+
22+ if (sf_init != 1 )
23+ field = 108 ; // this line cannot be covered even with nondet-static
24+ if (sf_static_init != 2 )
25+ field = 108 ; // this line cannot be covered even with nondet-static
26+ if (s != "bla" )
27+ field = 108 ; // this line cannot be covered even with nondet-static
28+ }
29+ }
Original file line number Diff line number Diff line change 1+ CORE symex-driven-lazy-loading-expected-failure
2+ My.class
3+ --function "My.<init>" --cover location --nondet-static
4+ ^EXIT=0$
5+ ^SIGNAL=0$
6+ file My\.java line 18 function java::My\.\<init\>:\(I\)V.*SATISFIED$
7+ file My\.java line 19 function java::My\.\<init\>:\(I\)V.*SATISFIED$
8+ file My\.java line 20 function java::My\.\<init\>:\(I\)V.*SATISFIED$
9+ file My\.java line 25 function java::My\.\<init\>:\(I\)V.*FAILED$
10+ file My\.java line 27 function java::My\.\<init\>:\(I\)V.*FAILED$
11+ --
12+ file My\.java line 23 function java::My\.\<init\>:\(I\)V.*SATISFIED$
13+ --
14+ This tests nondet-static option, namely that static (non-final) variables are
15+ non-det initialized regardless of whether they are given a (static) initializer
16+ or not but constants such as strings are not non-det initialized
17+
18+ This fails under symex-driven lazy loading because nondet-static cannot be used
19+ with it
You can’t perform that action at this time.
0 commit comments