File: DefaultsTest.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 (28 lines) | stat: -rw-r--r-- 1,033 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
import testlib.wholeprograminference.qual.*;

// The @DefaultType annotation, which is the default for every location, is forbidden
// to be written anywhere. This class attempts to infer @DefaultType in several
// locations, and the annotated version of this class (in the annotated folder)
// should have no explicit @DefaultType annotations.
public class DefaultsTest {
    String defaultField = "";
    String defaultField2;

    void test() {
        @SuppressWarnings("") // To allow the use of the explicit @DefaultType.
        @DefaultType String explicitDefault = "";
        defaultField2 = explicitDefault;
    }

    // This method's return type should not be updated by the whole-program inference
    // since it is the default.
    String lubTest() {
        if (Math.random() > 0.5) {
            return ""; // @DefaultType
        } else {
            // :: warning: (cast.unsafe)
            @WholeProgramInferenceBottom String s = (@WholeProgramInferenceBottom String) "";
            return s;
        }
    }
}