Skip to content

Commit 747845d

Browse files
committed
Add proper test case for negated equality
1 parent 18fb9e1 commit 747845d

File tree

2 files changed

+113
-99
lines changed

2 files changed

+113
-99
lines changed

java/ql/test/library-tests/dataflow/range-analysis/A.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ int f1(int x, int y) {
1212
if (x != y + 1) {
1313
int sum = x + y; // x <= 400
1414
} else {
15-
int sum = x + y; // x <= 400, y = x - 1, y <= 399
15+
if (y > 300) {
16+
int sum = x + y; // 302 <= x <= 400, y = x - 1, 301 <= y <= 399
17+
}
1618
}
1719

1820
if (x > 500) {

java/ql/test/library-tests/dataflow/range-analysis/RangeAnalysis.expected

Lines changed: 110 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -56,101 +56,113 @@
5656
| A.java:13:19:13:19 | x | SSA init(x) | 0 | upper | NoReason |
5757
| A.java:13:23:13:23 | y | SSA init(y) | 0 | lower | NoReason |
5858
| A.java:13:23:13:23 | y | SSA init(y) | 0 | upper | NoReason |
59-
| A.java:15:19:15:19 | x | 0 | 400 | upper | ... > ... |
60-
| A.java:15:19:15:19 | x | SSA init(x) | 0 | lower | NoReason |
61-
| A.java:15:19:15:19 | x | SSA init(x) | 0 | upper | NoReason |
62-
| A.java:15:19:15:19 | x | SSA init(y) | 1 | lower | ... != ... |
63-
| A.java:15:19:15:19 | x | SSA init(y) | 1 | upper | ... != ... |
64-
| A.java:15:23:15:23 | y | 0 | 399 | upper | ... != ... |
65-
| A.java:15:23:15:23 | y | SSA init(x) | -1 | lower | ... != ... |
66-
| A.java:15:23:15:23 | y | SSA init(x) | -1 | upper | ... != ... |
67-
| A.java:15:23:15:23 | y | SSA init(y) | 0 | lower | NoReason |
68-
| A.java:15:23:15:23 | y | SSA init(y) | 0 | upper | NoReason |
69-
| A.java:18:11:18:11 | x | 0 | 400 | upper | ... > ... |
70-
| A.java:18:11:18:11 | x | SSA init(x) | 0 | lower | NoReason |
71-
| A.java:18:11:18:11 | x | SSA init(x) | 0 | upper | NoReason |
72-
| A.java:18:15:18:17 | 500 | 0 | 500 | lower | NoReason |
73-
| A.java:18:15:18:17 | 500 | 0 | 500 | upper | NoReason |
74-
| A.java:19:16:19:16 | x | 0 | 400 | upper | ... > ... |
75-
| A.java:19:16:19:16 | x | 0 | 501 | lower | ... > ... |
76-
| A.java:19:16:19:16 | x | SSA init(x) | 0 | lower | NoReason |
77-
| A.java:19:16:19:16 | x | SSA init(x) | 0 | upper | NoReason |
78-
| A.java:23:12:23:12 | 0 | 0 | 0 | lower | NoReason |
79-
| A.java:23:12:23:12 | 0 | 0 | 0 | upper | NoReason |
80-
| A.java:27:9:27:9 | x | SSA init(x) | 0 | lower | NoReason |
81-
| A.java:27:9:27:9 | x | SSA init(x) | 0 | upper | NoReason |
82-
| A.java:27:13:27:15 | 500 | 0 | 500 | lower | NoReason |
83-
| A.java:27:13:27:15 | 500 | 0 | 500 | upper | NoReason |
84-
| A.java:28:11:28:11 | x | 0 | 499 | upper | ... < ... |
85-
| A.java:28:11:28:11 | x | SSA init(x) | 0 | lower | NoReason |
86-
| A.java:28:11:28:11 | x | SSA init(x) | 0 | upper | NoReason |
87-
| A.java:28:15:28:17 | 400 | 0 | 400 | lower | NoReason |
88-
| A.java:28:15:28:17 | 400 | 0 | 400 | upper | NoReason |
89-
| A.java:29:16:29:16 | x | 0 | 401 | lower | ... > ... |
90-
| A.java:29:16:29:16 | x | 0 | 499 | upper | ... < ... |
91-
| A.java:29:16:29:16 | x | SSA init(x) | 0 | lower | NoReason |
92-
| A.java:29:16:29:16 | x | SSA init(x) | 0 | upper | NoReason |
93-
| A.java:32:11:32:11 | y | SSA init(y) | 0 | lower | NoReason |
94-
| A.java:32:11:32:11 | y | SSA init(y) | 0 | upper | NoReason |
95-
| A.java:32:16:32:16 | x | 0 | 400 | upper | ... > ... |
96-
| A.java:32:16:32:16 | x | SSA init(x) | 0 | lower | NoReason |
97-
| A.java:32:16:32:16 | x | SSA init(x) | 0 | upper | NoReason |
98-
| A.java:32:21:32:21 | y | 0 | 400 | upper | ... == ... |
99-
| A.java:32:21:32:21 | y | SSA init(x) | 0 | lower | ... == ... |
100-
| A.java:32:21:32:21 | y | SSA init(x) | 0 | upper | ... == ... |
101-
| A.java:32:21:32:21 | y | SSA init(y) | 0 | lower | NoReason |
102-
| A.java:32:21:32:21 | y | SSA init(y) | 0 | upper | NoReason |
103-
| A.java:32:25:32:27 | 300 | 0 | 300 | lower | NoReason |
104-
| A.java:32:25:32:27 | 300 | 0 | 300 | upper | NoReason |
105-
| A.java:32:32:32:32 | y | 0 | 301 | lower | ... > ... |
106-
| A.java:32:32:32:32 | y | 0 | 400 | upper | ... == ... |
107-
| A.java:32:32:32:32 | y | SSA init(x) | 0 | lower | ... == ... |
108-
| A.java:32:32:32:32 | y | SSA init(x) | 0 | upper | ... == ... |
109-
| A.java:32:32:32:32 | y | SSA init(y) | 0 | lower | NoReason |
110-
| A.java:32:32:32:32 | y | SSA init(y) | 0 | upper | NoReason |
111-
| A.java:32:37:32:37 | z | SSA init(z) | 0 | lower | NoReason |
112-
| A.java:32:37:32:37 | z | SSA init(z) | 0 | upper | NoReason |
113-
| A.java:32:42:32:42 | z | 0 | 301 | lower | ... == ... |
114-
| A.java:32:42:32:42 | z | 0 | 400 | upper | ... == ... |
115-
| A.java:32:42:32:42 | z | SSA init(x) | 0 | lower | ... == ... |
116-
| A.java:32:42:32:42 | z | SSA init(x) | 0 | upper | ... == ... |
117-
| A.java:32:42:32:42 | z | SSA init(y) | 0 | lower | ... == ... |
118-
| A.java:32:42:32:42 | z | SSA init(y) | 0 | upper | ... == ... |
119-
| A.java:32:42:32:42 | z | SSA init(z) | 0 | lower | NoReason |
120-
| A.java:32:42:32:42 | z | SSA init(z) | 0 | upper | NoReason |
121-
| A.java:32:47:32:49 | 350 | 0 | 350 | lower | NoReason |
122-
| A.java:32:47:32:49 | 350 | 0 | 350 | upper | NoReason |
123-
| A.java:33:16:33:16 | x | 0 | 350 | lower | ... == ... |
124-
| A.java:33:16:33:16 | x | 0 | 350 | upper | ... == ... |
125-
| A.java:33:16:33:16 | x | SSA init(x) | 0 | lower | NoReason |
126-
| A.java:33:16:33:16 | x | SSA init(x) | 0 | upper | NoReason |
127-
| A.java:33:16:33:16 | x | SSA init(y) | 0 | lower | ... == ... |
128-
| A.java:33:16:33:16 | x | SSA init(y) | 0 | upper | ... == ... |
129-
| A.java:33:16:33:16 | x | SSA init(z) | 0 | lower | ... == ... |
130-
| A.java:33:16:33:16 | x | SSA init(z) | 0 | upper | ... == ... |
131-
| A.java:33:16:33:20 | ... + ... | 0 | 351 | lower | ... == ... |
132-
| A.java:33:16:33:20 | ... + ... | SSA init(x) | 1 | lower | NoReason |
133-
| A.java:33:16:33:20 | ... + ... | SSA init(y) | 1 | lower | ... == ... |
134-
| A.java:33:16:33:20 | ... + ... | SSA init(z) | 1 | lower | ... == ... |
135-
| A.java:33:16:33:24 | ... + ... | 0 | 352 | lower | ... == ... |
136-
| A.java:33:16:33:24 | ... + ... | SSA init(x) | 2 | lower | NoReason |
137-
| A.java:33:16:33:24 | ... + ... | SSA init(y) | 2 | lower | ... == ... |
138-
| A.java:33:16:33:24 | ... + ... | SSA init(z) | 2 | lower | ... == ... |
139-
| A.java:33:20:33:20 | y | 0 | 350 | lower | ... == ... |
140-
| A.java:33:20:33:20 | y | 0 | 350 | upper | ... == ... |
141-
| A.java:33:20:33:20 | y | SSA init(x) | 0 | lower | ... == ... |
142-
| A.java:33:20:33:20 | y | SSA init(x) | 0 | upper | ... == ... |
143-
| A.java:33:20:33:20 | y | SSA init(y) | 0 | lower | NoReason |
144-
| A.java:33:20:33:20 | y | SSA init(y) | 0 | upper | NoReason |
145-
| A.java:33:20:33:20 | y | SSA init(z) | 0 | lower | ... == ... |
146-
| A.java:33:20:33:20 | y | SSA init(z) | 0 | upper | ... == ... |
147-
| A.java:33:24:33:24 | z | 0 | 350 | lower | ... == ... |
148-
| A.java:33:24:33:24 | z | 0 | 350 | upper | ... == ... |
149-
| A.java:33:24:33:24 | z | SSA init(x) | 0 | lower | ... == ... |
150-
| A.java:33:24:33:24 | z | SSA init(x) | 0 | upper | ... == ... |
151-
| A.java:33:24:33:24 | z | SSA init(y) | 0 | lower | ... == ... |
152-
| A.java:33:24:33:24 | z | SSA init(y) | 0 | upper | ... == ... |
153-
| A.java:33:24:33:24 | z | SSA init(z) | 0 | lower | NoReason |
154-
| A.java:33:24:33:24 | z | SSA init(z) | 0 | upper | NoReason |
155-
| A.java:37:12:37:12 | 0 | 0 | 0 | lower | NoReason |
156-
| A.java:37:12:37:12 | 0 | 0 | 0 | upper | NoReason |
59+
| A.java:15:13:15:13 | y | 0 | 399 | upper | ... != ... |
60+
| A.java:15:13:15:13 | y | SSA init(x) | -1 | lower | ... != ... |
61+
| A.java:15:13:15:13 | y | SSA init(x) | -1 | upper | ... != ... |
62+
| A.java:15:13:15:13 | y | SSA init(y) | 0 | lower | NoReason |
63+
| A.java:15:13:15:13 | y | SSA init(y) | 0 | upper | NoReason |
64+
| A.java:15:17:15:19 | 300 | 0 | 300 | lower | NoReason |
65+
| A.java:15:17:15:19 | 300 | 0 | 300 | upper | NoReason |
66+
| A.java:16:21:16:21 | x | 0 | 302 | lower | ... > ... |
67+
| A.java:16:21:16:21 | x | 0 | 400 | upper | ... > ... |
68+
| A.java:16:21:16:21 | x | SSA init(x) | 0 | lower | NoReason |
69+
| A.java:16:21:16:21 | x | SSA init(x) | 0 | upper | NoReason |
70+
| A.java:16:21:16:21 | x | SSA init(y) | 1 | lower | ... != ... |
71+
| A.java:16:21:16:21 | x | SSA init(y) | 1 | upper | ... != ... |
72+
| A.java:16:21:16:25 | ... + ... | 0 | 303 | lower | ... > ... |
73+
| A.java:16:21:16:25 | ... + ... | SSA init(x) | 1 | lower | NoReason |
74+
| A.java:16:21:16:25 | ... + ... | SSA init(y) | 2 | lower | ... != ... |
75+
| A.java:16:25:16:25 | y | 0 | 301 | lower | ... > ... |
76+
| A.java:16:25:16:25 | y | 0 | 399 | upper | ... != ... |
77+
| A.java:16:25:16:25 | y | SSA init(x) | -1 | lower | ... != ... |
78+
| A.java:16:25:16:25 | y | SSA init(x) | -1 | upper | ... != ... |
79+
| A.java:16:25:16:25 | y | SSA init(y) | 0 | lower | NoReason |
80+
| A.java:16:25:16:25 | y | SSA init(y) | 0 | upper | NoReason |
81+
| A.java:20:11:20:11 | x | 0 | 400 | upper | ... > ... |
82+
| A.java:20:11:20:11 | x | SSA init(x) | 0 | lower | NoReason |
83+
| A.java:20:11:20:11 | x | SSA init(x) | 0 | upper | NoReason |
84+
| A.java:20:15:20:17 | 500 | 0 | 500 | lower | NoReason |
85+
| A.java:20:15:20:17 | 500 | 0 | 500 | upper | NoReason |
86+
| A.java:21:16:21:16 | x | 0 | 400 | upper | ... > ... |
87+
| A.java:21:16:21:16 | x | 0 | 501 | lower | ... > ... |
88+
| A.java:21:16:21:16 | x | SSA init(x) | 0 | lower | NoReason |
89+
| A.java:21:16:21:16 | x | SSA init(x) | 0 | upper | NoReason |
90+
| A.java:25:12:25:12 | 0 | 0 | 0 | lower | NoReason |
91+
| A.java:25:12:25:12 | 0 | 0 | 0 | upper | NoReason |
92+
| A.java:29:9:29:9 | x | SSA init(x) | 0 | lower | NoReason |
93+
| A.java:29:9:29:9 | x | SSA init(x) | 0 | upper | NoReason |
94+
| A.java:29:13:29:15 | 500 | 0 | 500 | lower | NoReason |
95+
| A.java:29:13:29:15 | 500 | 0 | 500 | upper | NoReason |
96+
| A.java:30:11:30:11 | x | 0 | 499 | upper | ... < ... |
97+
| A.java:30:11:30:11 | x | SSA init(x) | 0 | lower | NoReason |
98+
| A.java:30:11:30:11 | x | SSA init(x) | 0 | upper | NoReason |
99+
| A.java:30:15:30:17 | 400 | 0 | 400 | lower | NoReason |
100+
| A.java:30:15:30:17 | 400 | 0 | 400 | upper | NoReason |
101+
| A.java:31:16:31:16 | x | 0 | 401 | lower | ... > ... |
102+
| A.java:31:16:31:16 | x | 0 | 499 | upper | ... < ... |
103+
| A.java:31:16:31:16 | x | SSA init(x) | 0 | lower | NoReason |
104+
| A.java:31:16:31:16 | x | SSA init(x) | 0 | upper | NoReason |
105+
| A.java:34:11:34:11 | y | SSA init(y) | 0 | lower | NoReason |
106+
| A.java:34:11:34:11 | y | SSA init(y) | 0 | upper | NoReason |
107+
| A.java:34:16:34:16 | x | 0 | 400 | upper | ... > ... |
108+
| A.java:34:16:34:16 | x | SSA init(x) | 0 | lower | NoReason |
109+
| A.java:34:16:34:16 | x | SSA init(x) | 0 | upper | NoReason |
110+
| A.java:34:21:34:21 | y | 0 | 400 | upper | ... == ... |
111+
| A.java:34:21:34:21 | y | SSA init(x) | 0 | lower | ... == ... |
112+
| A.java:34:21:34:21 | y | SSA init(x) | 0 | upper | ... == ... |
113+
| A.java:34:21:34:21 | y | SSA init(y) | 0 | lower | NoReason |
114+
| A.java:34:21:34:21 | y | SSA init(y) | 0 | upper | NoReason |
115+
| A.java:34:25:34:27 | 300 | 0 | 300 | lower | NoReason |
116+
| A.java:34:25:34:27 | 300 | 0 | 300 | upper | NoReason |
117+
| A.java:34:32:34:32 | y | 0 | 301 | lower | ... > ... |
118+
| A.java:34:32:34:32 | y | 0 | 400 | upper | ... == ... |
119+
| A.java:34:32:34:32 | y | SSA init(x) | 0 | lower | ... == ... |
120+
| A.java:34:32:34:32 | y | SSA init(x) | 0 | upper | ... == ... |
121+
| A.java:34:32:34:32 | y | SSA init(y) | 0 | lower | NoReason |
122+
| A.java:34:32:34:32 | y | SSA init(y) | 0 | upper | NoReason |
123+
| A.java:34:37:34:37 | z | SSA init(z) | 0 | lower | NoReason |
124+
| A.java:34:37:34:37 | z | SSA init(z) | 0 | upper | NoReason |
125+
| A.java:34:42:34:42 | z | 0 | 301 | lower | ... == ... |
126+
| A.java:34:42:34:42 | z | 0 | 400 | upper | ... == ... |
127+
| A.java:34:42:34:42 | z | SSA init(x) | 0 | lower | ... == ... |
128+
| A.java:34:42:34:42 | z | SSA init(x) | 0 | upper | ... == ... |
129+
| A.java:34:42:34:42 | z | SSA init(y) | 0 | lower | ... == ... |
130+
| A.java:34:42:34:42 | z | SSA init(y) | 0 | upper | ... == ... |
131+
| A.java:34:42:34:42 | z | SSA init(z) | 0 | lower | NoReason |
132+
| A.java:34:42:34:42 | z | SSA init(z) | 0 | upper | NoReason |
133+
| A.java:34:47:34:49 | 350 | 0 | 350 | lower | NoReason |
134+
| A.java:34:47:34:49 | 350 | 0 | 350 | upper | NoReason |
135+
| A.java:35:16:35:16 | x | 0 | 350 | lower | ... == ... |
136+
| A.java:35:16:35:16 | x | 0 | 350 | upper | ... == ... |
137+
| A.java:35:16:35:16 | x | SSA init(x) | 0 | lower | NoReason |
138+
| A.java:35:16:35:16 | x | SSA init(x) | 0 | upper | NoReason |
139+
| A.java:35:16:35:16 | x | SSA init(y) | 0 | lower | ... == ... |
140+
| A.java:35:16:35:16 | x | SSA init(y) | 0 | upper | ... == ... |
141+
| A.java:35:16:35:16 | x | SSA init(z) | 0 | lower | ... == ... |
142+
| A.java:35:16:35:16 | x | SSA init(z) | 0 | upper | ... == ... |
143+
| A.java:35:16:35:20 | ... + ... | 0 | 351 | lower | ... == ... |
144+
| A.java:35:16:35:20 | ... + ... | SSA init(x) | 1 | lower | NoReason |
145+
| A.java:35:16:35:20 | ... + ... | SSA init(y) | 1 | lower | ... == ... |
146+
| A.java:35:16:35:20 | ... + ... | SSA init(z) | 1 | lower | ... == ... |
147+
| A.java:35:16:35:24 | ... + ... | 0 | 352 | lower | ... == ... |
148+
| A.java:35:16:35:24 | ... + ... | SSA init(x) | 2 | lower | NoReason |
149+
| A.java:35:16:35:24 | ... + ... | SSA init(y) | 2 | lower | ... == ... |
150+
| A.java:35:16:35:24 | ... + ... | SSA init(z) | 2 | lower | ... == ... |
151+
| A.java:35:20:35:20 | y | 0 | 350 | lower | ... == ... |
152+
| A.java:35:20:35:20 | y | 0 | 350 | upper | ... == ... |
153+
| A.java:35:20:35:20 | y | SSA init(x) | 0 | lower | ... == ... |
154+
| A.java:35:20:35:20 | y | SSA init(x) | 0 | upper | ... == ... |
155+
| A.java:35:20:35:20 | y | SSA init(y) | 0 | lower | NoReason |
156+
| A.java:35:20:35:20 | y | SSA init(y) | 0 | upper | NoReason |
157+
| A.java:35:20:35:20 | y | SSA init(z) | 0 | lower | ... == ... |
158+
| A.java:35:20:35:20 | y | SSA init(z) | 0 | upper | ... == ... |
159+
| A.java:35:24:35:24 | z | 0 | 350 | lower | ... == ... |
160+
| A.java:35:24:35:24 | z | 0 | 350 | upper | ... == ... |
161+
| A.java:35:24:35:24 | z | SSA init(x) | 0 | lower | ... == ... |
162+
| A.java:35:24:35:24 | z | SSA init(x) | 0 | upper | ... == ... |
163+
| A.java:35:24:35:24 | z | SSA init(y) | 0 | lower | ... == ... |
164+
| A.java:35:24:35:24 | z | SSA init(y) | 0 | upper | ... == ... |
165+
| A.java:35:24:35:24 | z | SSA init(z) | 0 | lower | NoReason |
166+
| A.java:35:24:35:24 | z | SSA init(z) | 0 | upper | NoReason |
167+
| A.java:39:12:39:12 | 0 | 0 | 0 | lower | NoReason |
168+
| A.java:39:12:39:12 | 0 | 0 | 0 | upper | NoReason |

0 commit comments

Comments
 (0)