Skip to content

Commit d58a325

Browse files
committed
Java: Add test for range analysis
1 parent 0fe5cf6 commit d58a325

File tree

3 files changed

+72
-0
lines changed

3 files changed

+72
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
public class A {
2+
int f1(int x, int y) {
3+
if (x < 500) {
4+
if (x > 400) {
5+
return x;
6+
}
7+
8+
if (y == x && y > 300) {
9+
return x;
10+
}
11+
12+
if (x > 500) {
13+
return x;
14+
}
15+
}
16+
17+
return 0;
18+
}
19+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
| A.java:3:9:3:9 | x | 0 | lower | NoReason |
2+
| A.java:3:9:3:9 | x | 0 | upper | NoReason |
3+
| A.java:3:13:3:15 | 500 | 500 | lower | NoReason |
4+
| A.java:3:13:3:15 | 500 | 500 | upper | NoReason |
5+
| A.java:4:11:4:11 | x | 0 | lower | NoReason |
6+
| A.java:4:11:4:11 | x | 0 | upper | NoReason |
7+
| A.java:4:11:4:11 | x | 499 | upper | ... < ... |
8+
| A.java:4:15:4:17 | 400 | 400 | lower | NoReason |
9+
| A.java:4:15:4:17 | 400 | 400 | upper | NoReason |
10+
| A.java:5:16:5:16 | x | 0 | lower | NoReason |
11+
| A.java:5:16:5:16 | x | 0 | upper | NoReason |
12+
| A.java:5:16:5:16 | x | 401 | lower | ... > ... |
13+
| A.java:5:16:5:16 | x | 499 | upper | ... < ... |
14+
| A.java:8:11:8:11 | y | 0 | lower | NoReason |
15+
| A.java:8:11:8:11 | y | 0 | upper | NoReason |
16+
| A.java:8:16:8:16 | x | 0 | lower | NoReason |
17+
| A.java:8:16:8:16 | x | 0 | upper | NoReason |
18+
| A.java:8:16:8:16 | x | 400 | upper | ... > ... |
19+
| A.java:8:21:8:21 | y | 0 | lower | ... == ... |
20+
| A.java:8:21:8:21 | y | 0 | lower | NoReason |
21+
| A.java:8:21:8:21 | y | 0 | upper | ... == ... |
22+
| A.java:8:21:8:21 | y | 0 | upper | NoReason |
23+
| A.java:8:21:8:21 | y | 400 | upper | ... == ... |
24+
| A.java:8:25:8:27 | 300 | 300 | lower | NoReason |
25+
| A.java:8:25:8:27 | 300 | 300 | upper | NoReason |
26+
| A.java:9:16:9:16 | x | 0 | lower | ... == ... |
27+
| A.java:9:16:9:16 | x | 0 | lower | NoReason |
28+
| A.java:9:16:9:16 | x | 0 | upper | ... == ... |
29+
| A.java:9:16:9:16 | x | 0 | upper | NoReason |
30+
| A.java:9:16:9:16 | x | 400 | upper | ... > ... |
31+
| A.java:12:11:12:11 | x | 0 | lower | NoReason |
32+
| A.java:12:11:12:11 | x | 0 | upper | NoReason |
33+
| A.java:12:11:12:11 | x | 400 | upper | ... > ... |
34+
| A.java:12:15:12:17 | 500 | 500 | lower | NoReason |
35+
| A.java:12:15:12:17 | 500 | 500 | upper | NoReason |
36+
| A.java:13:16:13:16 | x | 0 | lower | NoReason |
37+
| A.java:13:16:13:16 | x | 0 | upper | NoReason |
38+
| A.java:13:16:13:16 | x | 400 | upper | ... > ... |
39+
| A.java:13:16:13:16 | x | 501 | lower | ... > ... |
40+
| A.java:17:12:17:12 | 0 | 0 | lower | NoReason |
41+
| A.java:17:12:17:12 | 0 | 0 | upper | NoReason |
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import java
2+
import semmle.code.java.dataflow.RangeAnalysis
3+
4+
private string getDirectionString(boolean d) {
5+
result = "upper" and d = true
6+
or
7+
result = "lower" and d = false
8+
}
9+
10+
from Expr e, Bound b, int delta, boolean upper, Reason reason
11+
where bounded(e, b, delta, upper, reason)
12+
select e, delta, getDirectionString(upper), reason

0 commit comments

Comments
 (0)