forked from github/codeql
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTest.java
More file actions
113 lines (88 loc) · 2.53 KB
/
Test.java
File metadata and controls
113 lines (88 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
interface I {
// NOT OK: no overriding method uses x
void foo(int x);
// OK: no concrete implementation
void bar(String y);
// OK: no concrete implementation
void baz(float f);
// OK: some overriding method uses x
int qux(boolean b);
}
abstract class A implements I {
// OK: I.foo is already flagged
@Override public void foo(int x) {}
// OK: no concrete implementation
@Override public abstract void baz(float f);
// OK: uses b
@Override public int qux(boolean b) {
return b ? 42 : 23;
}
}
abstract class B extends A {
// OK: I.foo is already flagged
@Override public void foo(int x) {}
}
abstract class C implements I {
// OK: overrides I.qux
@Override public int qux(boolean b) {
return 56;
}
}
interface F {
void doSomething(int arg2);
}
public class Test {
// OK: external interface
public static void main(String[] args) {}
// OK: external interface
public static void premain(String arg) {}
// OK: external interface
public static void premain(String arg, java.lang.instrument.Instrumentation i) {}
// OK: Pseudo-abstract method
public static void foo(Object bar) {
throw new UnsupportedOperationException();
}
public static F getF() {
return Test::myFImplementation;
}
// OK: mentioned in member reference
private static void myFImplementation(int foo) {}
// OK: native method
native int baz(int x);
{
class MyMap extends java.util.HashMap<String,String> {
// OK: method overrides super-class method
@Override
public void putAll(java.util.Map<? extends String,? extends String> m) {};
}
class MyComparable<T> implements Comparable<T> {
// OK: method overrides super-interface method
@Override public int compareTo(T o) { return 0; }
};
class MyComparable2 implements Comparable<Boolean> {
// OK: method overrides super-interface method
@Override public int compareTo(Boolean o) { return 0; }
};
class MySub<T> implements java.util.concurrent.ScheduledFuture<T> {
public int compareTo(java.util.concurrent.Delayed o) {
return 0;
}
public long getDelay(java.util.concurrent.TimeUnit unit) {
return 0;
}
// OK: method overrides super-super-interface method
@Override public boolean cancel(boolean mayInterruptIfRunning) {
return false;
}
public T get() {
return null;
}
// OK: method overrides super-super-interface method
@Override public T get(long timeout, java.util.concurrent.TimeUnit unit) {
return null;
}
public boolean isCancelled() { return false; };
public boolean isDone() { return false; };
}
}
}