File: FinalLocalVariables.java

package info (click to toggle)
checker-framework-java 3.2.0%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 23,104 kB
  • sloc: java: 145,916; xml: 839; sh: 518; makefile: 404; perl: 26
file content (103 lines) | stat: -rw-r--r-- 3,303 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
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
// Test enclosing final local variables

import org.checkerframework.checker.nullness.qual.*;

interface FunctionLE<T extends @Nullable Object, R> {
    R apply(T t);
}

class LambdaEnclosing {

    // Test static initializer
    static {
        String local1 = "";
        String local2 = null;
        FunctionLE<String, String> f0 =
                s -> {
                    local1.toString();
                    // :: error: (dereference.of.nullable)
                    local2.toString();
                    return "";
                };
    }

    // Test instance initializer
    {
        String local1 = "";
        String local2 = null;
        FunctionLE<String, String> f0 =
                s -> {
                    local1.toString();
                    // :: error: (dereference.of.nullable)
                    local2.toString();
                    return "";
                };
    }

    FunctionLE<String, String> functionField =
            s -> {
                String local1 = "";
                String local2 = null;
                FunctionLE<String, String> f0 =
                        s2 -> {
                            local1.toString();
                            // :: error: (dereference.of.nullable)
                            local2.toString();
                            return "";
                        };
                return "";
            };

    void context() {
        String local1 = "";
        String local2 = null;

        FunctionLE<String, String> f1 =
                s -> {
                    local1.toString();
                    // :: error: (dereference.of.nullable)
                    local2.toString();
                    class Inner {

                        void context2() {
                            String local3 = "";
                            String local4 = null;

                            FunctionLE<String, String> f2 =
                                    s2 -> {
                                        local1.toString();
                                        local2.toString();
                                        local3.toString();
                                        // :: error: (dereference.of.nullable)
                                        local4.toString();

                                        return "";
                                    };
                        }
                    }

                    new Object() {

                        @Override()
                        public String toString() {
                            String local3 = "";
                            String local4 = null;

                            FunctionLE<String, String> f2 =
                                    s2 -> {
                                        local1.toString();
                                        local2.toString();
                                        local3.toString();
                                        // :: error: (dereference.of.nullable)
                                        local4.toString();

                                        return "";
                                    };
                            return "";
                        }
                    }.toString();

                    return "";
                };
    }
}