aboutsummaryrefslogtreecommitdiff
path: root/test-utils/testData/api/rawTypes.kt
blob: aa948a8fd2e4d87c52a66ab71a2c0a0c0cfa4b19 (plain)
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
/*
 * Copyright 2022 Google LLC
 * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// WITH_RUNTIME
// TEST PROCESSOR: RawTypesProcessor
// EXPECTED:
// barRaw
// barRawField
// barRawGet
// barRawGetCompiled
// fooRaw
// fooRawField
// fooRawGet
// fooRawGetCompiled
// p4
// p5
// END
// MODULE: lib
// FILE: dummy.kt
// FILE: Api.java
public interface Api {}

// FILE: Foo.java
public class Foo<T> {}

// FILE: Bar.java
public class Bar<T extends Api> {}

// FILE: UsageCompiled.java
public abstract class UsageCompiled {
    public static void usage(
        Foo<?> fooWildcardCompiled,
        Foo<? super Api> fooWildcardExCompiled,
        Bar<?> barWildcardCompiled,
        Bar<? extends Api> barWildcardExCompiled,
        Foo fooRawCompiled,
        Bar barRawCompiled
    ) {}

    public abstract Foo<?> fooWildcardGetCompiled();
    public abstract Foo<? super Api> fooWildcardExGetCompiled();
    public abstract Bar<?> barWildcardGetCompiled();
    public abstract Bar<? extends Api> barWildcardExGetCompiled();
    public abstract Foo fooRawGetCompiled();
    public abstract Bar barRawGetCompiled();
}

// MODULE: main(lib)
// FILE: usage.kt
fun usage(
    fooStar: Foo<*>,
    fooIn: Foo<in Api>,
    fooOut: Foo<out Api>,
    barStar: Bar<*>,
) = Unit

val fooStarProp: Foo<*>
val fooInProp: Foo<in Api>
val fooOutProp: Foo<out Api>
val barStarProp: Bar<*>

// FILE: Usage.java
public abstract class Usage {
    public Foo<?> fooWildcardField;
    public Foo<? super Api> fooWildcardExField;
    public Bar<?> barWildcardField;
    public Bar<? extends Api> barWildcardExField;
    public Foo fooRawField;
    public Bar barRawField;

    public static void usage(
        Foo<?> fooWildcard,
        Foo<? super Api> fooWildcardEx,
        Bar<?> barWildcard,
        Bar<? extends Api> barWildcardEx,
        Foo fooRaw,
        Bar barRaw
    ) {}

    public abstract Foo<?> fooWildcardGet();
    public abstract Foo<? super Api> fooWildcardExGet();
    public abstract Bar<?> barWildcardGet();
    public abstract Bar<? extends Api> barWildcardExGet();
    public abstract Foo fooRawGet();
    public abstract Bar barRawGet();
}