File: Issue759.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 (51 lines) | stat: -rw-r--r-- 1,499 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
// Testcase for Issue759
// https://github.com/typetools/checker-framework/issues/759
// Also, see framework/tests/all-systems/Issue759.java

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

@SuppressWarnings("unchecked")
public class Issue759 {
    void possibleValues(final Class<? extends Enum> enumType) {
        lowercase(enumType.getEnumConstants());
        lowercase2(enumType.getEnumConstants());
        lowercase3(enumType.getEnumConstants());
    }

    <T extends Enum<T>> void lowercase(final T @Nullable ... items) {}

    <T extends Enum<T>> void lowercase2(final T @Nullable [] items) {}

    <T> void lowercase3(final T items) {}
}

interface Gen<T extends Gen<T>> {
    T[] getConstants();

    T @Nullable [] getNullableConstants();
}

class IncompatibleTypes {
    void possibleValues(final Gen<?> genType) {
        lowercase(genType.getConstants());
        lowercase(genType.getNullableConstants());
    }

    <S> void lowercase(final S items) {}

    void possibleValues2(final Gen<?> genType) {
        lowercase2(genType.getConstants());
        // :: error: (type.argument.type.incompatible)
        lowercase2(genType.getNullableConstants());
    }

    <S extends Object> void lowercase2(final S items) {}

    void possibleValues3(final Gen<?> genType) {
        lowercase3(genType.getConstants());
        // :: error: (argument.type.incompatible)
        lowercase3(genType.getNullableConstants());
    }

    <S> void lowercase3(final @NonNull S items) {}
}