File: Accesses.java

package info (click to toggle)
checker-framework-java 3.2.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 22,840 kB
  • sloc: java: 145,910; xml: 839; sh: 518; makefile: 401; perl: 26
file content (62 lines) | stat: -rw-r--r-- 1,467 bytes parent folder | download | duplicates (3)
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
import org.checkerframework.common.util.report.qual.*;

class Accesses {
    class Demo {
        @ReportReadWrite Object read;

        @ReportWrite Object write;

        @ReportCall
        Object foo(Object p) {
            return null;
        }

        void implicitRead() {
            // :: error: (fieldreadwrite)
            Object o = read;
            // A read counts as access
            // :: error: (fieldreadwrite)
            read = null;
            // :: error: (fieldreadwrite)
            read.toString();
        }

        void implicitWrite() {
            Object o = write;
            // :: error: (fieldwrite)
            write = null;
            write.toString();
        }

        void implicitMethod() {
            // :: error: (methodcall)
            foo(null);
            // :: error: (methodcall)
            equals(foo(null));
        }
    }

    void accessesRead(Demo d) {
        // :: error: (fieldreadwrite)
        Object o = d.read;
        // A read counts as access
        // :: error: (fieldreadwrite)
        d.read = null;
        // :: error: (fieldreadwrite)
        d.read.toString();
    }

    void accessesWrite(Demo d) {
        Object o = d.write;
        // :: error: (fieldwrite)
        d.write = null;
        d.write.toString();
    }

    void accessesMethod(Demo d) {
        // :: error: (methodcall)
        d.foo(null);
        // :: error: (methodcall)
        d.equals(d.foo(null));
    }
}