1 /*
2 * Copyright 2020 Google LLC
3 * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 // WITH_RUNTIME
19 // TEST PROCESSOR: ReplaceWithErrorTypeArgsProcessor
20 // EXPECTED:
21 // KS.star.replace([INVARIANT Int, INVARIANT String]): KS<Int, String>
22 // KS.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
23 // KS.asType([INVARIANT Int, INVARIANT String]): KS<Int, String>
24 // KS.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
25 // KS.asType(emptyList()): KS<T1, T2>
26 // KL.star.replace([INVARIANT Int, INVARIANT String]): KL<Int, String>
27 // KL.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
28 // KL.asType([INVARIANT Int, INVARIANT String]): KL<Int, String>
29 // KL.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
30 // KL.asType(emptyList()): KL<T1, T2>
31 // JS.star.replace([INVARIANT Int, INVARIANT String]): JS<Int, String>
32 // JS.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
33 // JS.asType([INVARIANT Int, INVARIANT String]): JS<Int, String>
34 // JS.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
35 // JS.asType(emptyList()): JS<T1, T2>
36 // JL.star.replace([INVARIANT Int, INVARIANT String]): JL<Int, String>
37 // JL.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
38 // JL.asType([INVARIANT Int, INVARIANT String]): JL<Int, String>
39 // JL.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
40 // JL.asType(emptyList()): JL<T1, T2>
41 // KS1.star.replace([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
42 // KS1.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
43 // KS1.asType([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
44 // KS1.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
45 // KS1.asType(emptyList()): KS1<T>
46 // KL1.star.replace([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
47 // KL1.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
48 // KL1.asType([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
49 // KL1.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
50 // KL1.asType(emptyList()): KL1<T>
51 // JS1.star.replace([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
52 // JS1.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
53 // JS1.asType([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
54 // JS1.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
55 // JS1.asType(emptyList()): JS1<T>
56 // JL1.star.replace([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
57 // JL1.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
58 // JL1.asType([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
59 // JL1.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
60 // JL1.asType(emptyList()): JL1<T>
61 // JSE.star.replace([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
62 // JSE.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
63 // JSE.asType([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
64 // JSE.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
65 // JSE.asType(emptyList()): JSE
66 // JSE.E.star.replace([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
67 // JSE.E.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
68 // JSE.E.asType([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
69 // JSE.E.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
70 // JSE.E.asType(emptyList()): JSE.E
71 // JLE.star.replace([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
72 // JLE.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
73 // JLE.asType([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
74 // JLE.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
75 // JLE.asType(emptyList()): JLE
76 // JLE.E.star.replace([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
77 // JLE.E.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
78 // JLE.E.asType([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
79 // JLE.E.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
80 // JLE.E.asType(emptyList()): JLE.E
81 // KSE.star.replace([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
82 // KSE.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
83 // KSE.asType([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
84 // KSE.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
85 // KSE.asType(emptyList()): KSE
86 // KSE.E.star.replace([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
87 // KSE.E.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
88 // KSE.E.asType([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
89 // KSE.E.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
90 // KSE.E.asType(emptyList()): E
91 // KLE.star.replace([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
92 // KLE.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
93 // KLE.asType([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
94 // KLE.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
95 // KLE.asType(emptyList()): KLE
96 // KLE.E.star.replace([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
97 // KLE.E.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
98 // KLE.E.asType([INVARIANT Int, INVARIANT String]): <ERROR TYPE>
99 // KLE.E.asType([INVARIANT NotExist1, INVARIANT NotExist2]): <ERROR TYPE>
100 // KLE.E.asType(emptyList()): KLE.E
101 // END
102
103 // MODULE: lib
104 // FILE: JL.java
105 class JL<T1, T2> {}
106 class JL1<T> {}
<lambda>null107 enum JLE {
108 E
109 }
110
111 // FILE: KL.kt
112 class KL<T1, T2>
113 class KL1<T>
114 enum class KLE {
115 E
116 }
117
118 // MODULE: main(lib)
119 // FILE: JS.java
120 class JS<T1, T2> {}
121 class JS1<T> {}
<lambda>null122 enum JSE {
123 E
124 }
125
126 // FILE: KS.kt
127 class KS<T1, T2>
128 class KS1<T>
129 enum class KSE {
130 E
131 }
132
133 val x: KS<Int, String> = TODO()
134 val y: KS<NotExist1, NotExist2> = TODO()
135