Repository navigation
Expand file tree
/
Copy pathjavaModifiers.kt
More file actions
308 lines (275 loc) · 14.7 KB
/
Copy pathjavaModifiers.kt
File metadata and controls
308 lines (275 loc) · 14.7 KB
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
/*
* Copyright 2023 Google LLC
* Copyright 2010-2023 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.
*/
// TEST PROCESSOR: JavaModifierProcessor
// EXPECTED:
// C.<init>: FINAL PUBLIC : FINAL PUBLIC
// C.InnerC.<init>: FINAL PUBLIC : FINAL PUBLIC
// C.InnerC: PUBLIC : PUBLIC
// C.NestedC.<init>: FINAL PUBLIC : FINAL PUBLIC
// C.NestedC: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: C.i1.field: JAVA_STATIC JAVA_VOLATILE PROTECTED : JAVA_STATIC JAVA_VOLATILE PROTECTED
// C.i1: JAVA_STATIC JAVA_VOLATILE PROTECTED : JAVA_STATIC JAVA_VOLATILE PROTECTED
// C.intFun: JAVA_DEFAULT JAVA_SYNCHRONIZED : JAVA_DEFAULT JAVA_SYNCHRONIZED
// EXPECT ENABLE_BACKING_FIELDS = TRUE: C.s1.field: FINAL JAVA_TRANSIENT : FINAL JAVA_TRANSIENT
// C.s1: FINAL JAVA_TRANSIENT : FINAL JAVA_TRANSIENT
// EXPECT ENABLE_BACKING_FIELDS = TRUE: C.staticStr.field: PRIVATE : PRIVATE
// C.staticStr: PRIVATE : PRIVATE
// C: ABSTRACT PUBLIC : ABSTRACT PUBLIC
// DependencyOuterJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC
// DependencyOuterJavaClass.DependencyInnerJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC
// DependencyOuterJavaClass.DependencyInnerJavaClass: INNER OPEN PUBLIC : PUBLIC
// DependencyOuterJavaClass.DependencyNestedJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC
// DependencyOuterJavaClass.DependencyNestedJavaClass: OPEN PUBLIC : PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: DependencyOuterJavaClass.staticPackageProtectedField.field: JAVA_STATIC : JAVA_STATIC
// DependencyOuterJavaClass.staticPackageProtectedField: FINAL JAVA_STATIC : FINAL JAVA_STATIC
// DependencyOuterJavaClass.staticPackageProtectedMethod: FINAL JAVA_STATIC : FINAL JAVA_STATIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: DependencyOuterJavaClass.staticPrivateField.field: JAVA_STATIC PRIVATE : JAVA_STATIC PRIVATE
// DependencyOuterJavaClass.staticPrivateField: FINAL JAVA_STATIC PRIVATE : FINAL JAVA_STATIC PRIVATE
// DependencyOuterJavaClass.staticPrivateMethod: FINAL JAVA_STATIC PRIVATE : FINAL JAVA_STATIC PRIVATE
// EXPECT ENABLE_BACKING_FIELDS = TRUE: DependencyOuterJavaClass.staticProtectedField.field: JAVA_STATIC PROTECTED : JAVA_STATIC PROTECTED
// DependencyOuterJavaClass.staticProtectedField: FINAL JAVA_STATIC PROTECTED : FINAL JAVA_STATIC PROTECTED
// DependencyOuterJavaClass.staticProtectedMethod: FINAL JAVA_STATIC PROTECTED : FINAL JAVA_STATIC PROTECTED
// EXPECT ENABLE_BACKING_FIELDS = TRUE: DependencyOuterJavaClass.staticPublicField.field: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC
// DependencyOuterJavaClass.staticPublicField: FINAL JAVA_STATIC PUBLIC : FINAL JAVA_STATIC PUBLIC
// DependencyOuterJavaClass.staticPublicMethod: FINAL JAVA_STATIC PUBLIC : FINAL JAVA_STATIC PUBLIC
// DependencyOuterJavaClass.synchronizedFun: OPEN : JAVA_SYNCHRONIZED
// EXPECT ENABLE_BACKING_FIELDS = TRUE: DependencyOuterJavaClass.transientField.field: JAVA_TRANSIENT : JAVA_TRANSIENT
// DependencyOuterJavaClass.transientField: FINAL : FINAL JAVA_TRANSIENT
// EXPECT ENABLE_BACKING_FIELDS = TRUE: DependencyOuterJavaClass.volatileField.field: JAVA_VOLATILE : JAVA_VOLATILE
// DependencyOuterJavaClass.volatileField: FINAL : FINAL JAVA_VOLATILE
// DependencyOuterJavaClass: OPEN PUBLIC : PUBLIC
// DependencyOuterKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC
// DependencyOuterKotlinClass.Companion.<init>: FINAL PRIVATE : FINAL PRIVATE
// EXPECT ENABLE_BACKING_FIELDS = TRUE: DependencyOuterKotlinClass.Companion.companionField.field: FINAL PRIVATE : FINAL PRIVATE
// DependencyOuterKotlinClass.Companion.companionField: FINAL PUBLIC : FINAL PUBLIC
// DependencyOuterKotlinClass.Companion.companionMethod: FINAL PUBLIC : FINAL PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: DependencyOuterKotlinClass.Companion.customJvmStaticCompanionField.field: FINAL PRIVATE : FINAL PRIVATE
// DependencyOuterKotlinClass.Companion.customJvmStaticCompanionField: FINAL PUBLIC : FINAL JAVA_STATIC PUBLIC
// DependencyOuterKotlinClass.Companion.customJvmStaticCompanionMethod: FINAL PUBLIC : FINAL JAVA_STATIC PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: DependencyOuterKotlinClass.Companion.jvmStaticCompanionField.field: FINAL PRIVATE : FINAL PRIVATE
// DependencyOuterKotlinClass.Companion.jvmStaticCompanionField: FINAL PUBLIC : FINAL JAVA_STATIC PUBLIC
// DependencyOuterKotlinClass.Companion.jvmStaticCompanionMethod: FINAL PUBLIC : FINAL JAVA_STATIC PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: DependencyOuterKotlinClass.Companion.privateCompanionField.field: FINAL PRIVATE : FINAL PRIVATE
// DependencyOuterKotlinClass.Companion.privateCompanionField: FINAL PUBLIC : FINAL PUBLIC
// DependencyOuterKotlinClass.Companion.privateCompanionMethod: FINAL PRIVATE : FINAL PRIVATE
// DependencyOuterKotlinClass.Companion: FINAL PUBLIC : FINAL PUBLIC
// DependencyOuterKotlinClass.DependencyInnerKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC
// DependencyOuterKotlinClass.DependencyInnerKotlinClass: FINAL INNER PUBLIC : FINAL PUBLIC
// DependencyOuterKotlinClass.DependencyNestedKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC
// DependencyOuterKotlinClass.DependencyNestedKotlinClass: OPEN PUBLIC : PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: DependencyOuterKotlinClass.mutableProperty.field: PRIVATE : PRIVATE
// DependencyOuterKotlinClass.mutableProperty: FINAL PUBLIC : FINAL PUBLIC
// DependencyOuterKotlinClass.synchronizedFun: FINAL PUBLIC : FINAL JAVA_SYNCHRONIZED PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: DependencyOuterKotlinClass.transientProperty.field: FINAL PRIVATE : FINAL PRIVATE
// DependencyOuterKotlinClass.transientProperty: FINAL PUBLIC : FINAL JAVA_TRANSIENT PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: DependencyOuterKotlinClass.volatileProperty.field: PRIVATE : PRIVATE
// DependencyOuterKotlinClass.volatileProperty: FINAL PUBLIC : FINAL JAVA_VOLATILE PUBLIC
// DependencyOuterKotlinClass: OPEN PUBLIC : PUBLIC
// HasTypeAliasFuns: Modifiers: []
// HasTypeAliasFuns: Visibility: PUBLIC
// JavaInterfaceImpl.<init>: FINAL PUBLIC : FINAL PUBLIC
// JavaInterfaceImpl.otherInterfaceMethod: PUBLIC : PUBLIC
// JavaInterfaceImpl: ABSTRACT PUBLIC : ABSTRACT PUBLIC
// OuterJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC
// OuterJavaClass.InnerJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC
// OuterJavaClass.InnerJavaClass: PUBLIC : PUBLIC
// OuterJavaClass.NestedJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC
// OuterJavaClass.NestedJavaClass: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: OuterJavaClass.staticPackageProtectedField.field: JAVA_STATIC : JAVA_STATIC
// OuterJavaClass.staticPackageProtectedField: JAVA_STATIC : JAVA_STATIC
// OuterJavaClass.staticPackageProtectedMethod: JAVA_STATIC : JAVA_STATIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: OuterJavaClass.staticPrivateField.field: JAVA_STATIC PRIVATE : JAVA_STATIC PRIVATE
// OuterJavaClass.staticPrivateField: JAVA_STATIC PRIVATE : JAVA_STATIC PRIVATE
// OuterJavaClass.staticPrivateMethod: JAVA_STATIC PRIVATE : JAVA_STATIC PRIVATE
// EXPECT ENABLE_BACKING_FIELDS = TRUE: OuterJavaClass.staticProtectedField.field: JAVA_STATIC PROTECTED : JAVA_STATIC PROTECTED
// OuterJavaClass.staticProtectedField: JAVA_STATIC PROTECTED : JAVA_STATIC PROTECTED
// OuterJavaClass.staticProtectedMethod: JAVA_STATIC PROTECTED : JAVA_STATIC PROTECTED
// EXPECT ENABLE_BACKING_FIELDS = TRUE: OuterJavaClass.staticPublicField.field: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC
// OuterJavaClass.staticPublicField: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC
// OuterJavaClass.staticPublicMethod: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC
// OuterJavaClass: PUBLIC : PUBLIC
// OuterKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC
// OuterKotlinClass.Companion.<init>: FINAL PUBLIC : FINAL PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: OuterKotlinClass.Companion.companionField.field: FINAL PRIVATE : FINAL PRIVATE
// OuterKotlinClass.Companion.companionField: CONST : FINAL PUBLIC
// OuterKotlinClass.Companion.companionMethod: : FINAL PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: OuterKotlinClass.Companion.customJvmStaticCompanionField.field: FINAL PRIVATE : FINAL PRIVATE
// OuterKotlinClass.Companion.customJvmStaticCompanionField: : FINAL JAVA_STATIC PUBLIC
// OuterKotlinClass.Companion.customJvmStaticCompanionMethod: : FINAL PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: OuterKotlinClass.Companion.jvmStaticCompanionField.field: FINAL PRIVATE : FINAL PRIVATE
// OuterKotlinClass.Companion.jvmStaticCompanionField: : FINAL JAVA_STATIC PUBLIC
// OuterKotlinClass.Companion.jvmStaticCompanionMethod: : FINAL JAVA_STATIC PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: OuterKotlinClass.Companion.privateCompanionField.field: FINAL PRIVATE : FINAL PRIVATE
// OuterKotlinClass.Companion.privateCompanionField: PRIVATE : FINAL PRIVATE
// OuterKotlinClass.Companion.privateCompanionMethod: PRIVATE : FINAL PRIVATE
// OuterKotlinClass.Companion: : FINAL PUBLIC
// OuterKotlinClass.InnerKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC
// OuterKotlinClass.InnerKotlinClass: INNER : FINAL PUBLIC
// OuterKotlinClass.NestedKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC
// OuterKotlinClass.NestedKotlinClass: OPEN : PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: OuterKotlinClass.mutableProperty.field: PRIVATE : PRIVATE
// OuterKotlinClass.mutableProperty: : FINAL PUBLIC
// OuterKotlinClass.synchronizedFun: : FINAL JAVA_SYNCHRONIZED PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = FALSE: OuterKotlinClass.transientProperty: : FINAL JAVA_TRANSIENT PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = FALSE: OuterKotlinClass.volatileProperty: : FINAL JAVA_VOLATILE PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: OuterKotlinClass.transientProperty.field: FINAL PRIVATE : FINAL JAVA_TRANSIENT PRIVATE
// EXPECT ENABLE_BACKING_FIELDS = TRUE: OuterKotlinClass.transientProperty: : FINAL PUBLIC
// EXPECT ENABLE_BACKING_FIELDS = TRUE: OuterKotlinClass.volatileProperty.field: PRIVATE : JAVA_VOLATILE PRIVATE
// EXPECT ENABLE_BACKING_FIELDS = TRUE: OuterKotlinClass.volatileProperty: : FINAL PUBLIC
// OuterKotlinClass: OPEN : PUBLIC
// TypeAliasInKt: Modifiers: [PRIVATE]
// TypeAliasInKt: Visibility: PRIVATE
// TypeAliasInLib: Modifiers: [FINAL, PUBLIC]
// TypeAliasInLib: Visibility: PUBLIC
// END
// MODULE: module1
// FILE: ALib.kt
fun interface ALib {
fun test(): Boolean
}
public typealias TypeAliasInLib = Int
// FILE: DependencyOuterJavaClass.java
public class DependencyOuterJavaClass {
public class DependencyInnerJavaClass {}
public static class DependencyNestedJavaClass {}
public static void staticPublicMethod() {}
public static String staticPublicField;
static void staticPackageProtectedMethod() {}
static String staticPackageProtectedField;
protected static void staticProtectedMethod() {}
protected static String staticProtectedField;
private static void staticPrivateMethod() {}
private static String staticPrivateField;
transient String transientField = "";
volatile String volatileField = "";
synchronized String synchronizedFun() { return ""; }
}
// FILE: DependencyOuterKotlinClass.kt
typealias DependencyCustomJvmStatic=JvmStatic
open class DependencyOuterKotlinClass {
inner class DependencyInnerKotlinClass
open class DependencyNestedKotlinClass
companion object {
fun companionMethod() {}
val companionField:String = ""
private fun privateCompanionMethod() {}
val privateCompanionField:String = ""
@JvmStatic
fun jvmStaticCompanionMethod() {}
@JvmStatic
val jvmStaticCompanionField:String = ""
@DependencyCustomJvmStatic
fun customJvmStaticCompanionMethod() {}
@DependencyCustomJvmStatic
val customJvmStaticCompanionField:String = ""
}
var mutableProperty: String = ""
@Transient
val transientProperty: String = ""
@Volatile
var volatileProperty: String = ""
@Synchronized
fun synchronizedFun(): String = ""
}
// MODULE: main(module1)
// FILE: ASrc.kt
private typealias TypeAliasInKt = Int
class HasTypeAliasFuns {
fun FunReturnTA1(): TypeAliasInKt = 0
fun FunReturnTA2(): TypeAliasInLib = 0
}
fun interface ASrc {
fun test(): Boolean
}
// FILE: a.kt
annotation class Test
@Test
class Foo : C() {
}
@Test
class Bar : OuterJavaClass()
@Test
class Baz : OuterKotlinClass()
@Test
class JavaDependency : DependencyOuterJavaClass()
@Test
class KotlinDependency : DependencyOuterKotlinClass()
@Test
class JavaInterfaceDependency : JavaInterfaceImpl {
// FILE: C.java
public abstract class C {
private String staticStr = "str"
final transient String s1;
protected static volatile int i1;
default synchronized int intFun() {
return 1;
}
public static class NestedC {
}
public class InnerC {
}
}
// FILE: OuterJavaClass.java
public class OuterJavaClass {
public class InnerJavaClass {}
public static class NestedJavaClass {}
public static void staticPublicMethod() {}
public static String staticPublicField;
static void staticPackageProtectedMethod() {}
static String staticPackageProtectedField;
protected static void staticProtectedMethod() {}
protected static String staticProtectedField;
private static void staticPrivateMethod() {}
private static String staticPrivateField;
}
// FILE: OuterKotlinClass.kt
typealias CustomJvmStatic=JvmStatic
open class OuterKotlinClass {
inner class InnerKotlinClass
open class NestedKotlinClass
companion object {
fun companionMethod() {}
const val companionField:String = ""
private fun privateCompanionMethod() {}
private val privateCompanionField:String = ""
@JvmStatic
fun jvmStaticCompanionMethod() {}
@JvmStatic
val jvmStaticCompanionField:String = ""
@CustomJvmStatic
fun customJvmStaticCompanionMethod() {}
@CustomJvmStatic
val customJvmStaticCompanionField:String = ""
}
var mutableProperty: String = ""
@Transient
val transientProperty: String = ""
@Volatile
var volatileProperty: String = ""
@Synchronized
fun synchronizedFun(): String = ""
}
// FILE: JavaInterface.java
public interface JavaInterface {
void interfaceMethod();
void otherInterfaceMethod();
}
// FILE: JavaInterfaceImpl.java
public abstract class JavaInterfaceImpl implements JavaInterface {
@Override
public void otherInterfaceMethod() {}
}