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 // TEST PROCESSOR: JavaModifierProcessor 19 // EXPECTED: 20 // C: ABSTRACT PUBLIC : ABSTRACT PUBLIC 21 // C.staticStr: PRIVATE : PRIVATE 22 // C.s1: FINAL JAVA_TRANSIENT : FINAL JAVA_TRANSIENT 23 // C.i1: JAVA_STATIC JAVA_VOLATILE PROTECTED : JAVA_STATIC JAVA_VOLATILE PROTECTED 24 // C.NestedC: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC 25 // NestedC.<init>: FINAL PUBLIC : FINAL PUBLIC 26 // C.InnerC: PUBLIC : PUBLIC 27 // InnerC.<init>: FINAL PUBLIC : FINAL PUBLIC 28 // C.intFun: JAVA_DEFAULT JAVA_SYNCHRONIZED : JAVA_DEFAULT JAVA_SYNCHRONIZED 29 // C.foo: ABSTRACT JAVA_STRICT : ABSTRACT JAVA_STRICT 30 // C.<init>: FINAL PUBLIC : FINAL PUBLIC 31 // OuterJavaClass: PUBLIC : PUBLIC 32 // OuterJavaClass.staticPublicField: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC 33 // OuterJavaClass.staticPackageProtectedField: JAVA_STATIC : JAVA_STATIC 34 // OuterJavaClass.staticProtectedField: JAVA_STATIC PROTECTED : JAVA_STATIC PROTECTED 35 // OuterJavaClass.staticPrivateField: JAVA_STATIC PRIVATE : JAVA_STATIC PRIVATE 36 // OuterJavaClass.InnerJavaClass: PUBLIC : PUBLIC 37 // InnerJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC 38 // OuterJavaClass.NestedJavaClass: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC 39 // NestedJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC 40 // OuterJavaClass.staticPublicMethod: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC 41 // OuterJavaClass.staticPackageProtectedMethod: JAVA_STATIC : JAVA_STATIC 42 // OuterJavaClass.staticProtectedMethod: JAVA_STATIC PROTECTED : JAVA_STATIC PROTECTED 43 // OuterJavaClass.staticPrivateMethod: JAVA_STATIC PRIVATE : JAVA_STATIC PRIVATE 44 // OuterJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC 45 // OuterKotlinClass: OPEN : PUBLIC 46 // OuterKotlinClass.InnerKotlinClass: INNER : FINAL PUBLIC 47 // InnerKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC 48 // OuterKotlinClass.NestedKotlinClass: OPEN : PUBLIC 49 // NestedKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC 50 // OuterKotlinClass.Companion: : FINAL JAVA_STATIC PUBLIC 51 // Companion.companionMethod: : FINAL PUBLIC 52 // Companion.companionField: CONST : FINAL PUBLIC 53 // Companion.privateCompanionMethod: PRIVATE : FINAL PRIVATE 54 // Companion.privateCompanionField: PRIVATE : FINAL PRIVATE 55 // Companion.jvmStaticCompanionMethod: : FINAL JAVA_STATIC PUBLIC 56 // Companion.jvmStaticCompanionField: : FINAL JAVA_STATIC PUBLIC 57 // Companion.customJvmStaticCompanionMethod: : FINAL PUBLIC 58 // Companion.customJvmStaticCompanionField: : FINAL PUBLIC 59 // Companion.<init>: FINAL PUBLIC : FINAL PUBLIC 60 // OuterKotlinClass.transientProperty: : FINAL JAVA_TRANSIENT PUBLIC 61 // OuterKotlinClass.volatileProperty: : FINAL JAVA_VOLATILE PUBLIC 62 // OuterKotlinClass.strictfpFun: : FINAL JAVA_STRICT PUBLIC 63 // OuterKotlinClass.synchronizedFun: : FINAL JAVA_SYNCHRONIZED PUBLIC 64 // OuterKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC 65 // DependencyOuterJavaClass: OPEN PUBLIC : PUBLIC 66 // DependencyOuterJavaClass.DependencyNestedJavaClass: OPEN PUBLIC : PUBLIC 67 // DependencyNestedJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC 68 // DependencyOuterJavaClass.DependencyInnerJavaClass: INNER OPEN PUBLIC : PUBLIC 69 // DependencyInnerJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC 70 // DependencyOuterJavaClass.synchronizedFun: JAVA_SYNCHRONIZED OPEN : JAVA_SYNCHRONIZED 71 // DependencyOuterJavaClass.strictfpFun: JAVA_STRICT OPEN : JAVA_STRICT 72 // DependencyOuterJavaClass.transientField: FINAL JAVA_TRANSIENT : FINAL JAVA_TRANSIENT 73 // DependencyOuterJavaClass.volatileField: FINAL JAVA_VOLATILE : FINAL JAVA_VOLATILE 74 // DependencyOuterJavaClass.staticPublicMethod: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC 75 // DependencyOuterJavaClass.staticPackageProtectedMethod: JAVA_STATIC : JAVA_STATIC 76 // DependencyOuterJavaClass.staticProtectedMethod: JAVA_STATIC PROTECTED : JAVA_STATIC PROTECTED 77 // DependencyOuterJavaClass.staticPrivateMethod: JAVA_STATIC PRIVATE : JAVA_STATIC PRIVATE 78 // DependencyOuterJavaClass.staticPublicField: FINAL JAVA_STATIC PUBLIC : FINAL JAVA_STATIC PUBLIC 79 // DependencyOuterJavaClass.staticPackageProtectedField: FINAL JAVA_STATIC : FINAL JAVA_STATIC 80 // DependencyOuterJavaClass.staticProtectedField: FINAL JAVA_STATIC PROTECTED : FINAL JAVA_STATIC PROTECTED 81 // DependencyOuterJavaClass.staticPrivateField: FINAL JAVA_STATIC PRIVATE : FINAL JAVA_STATIC PRIVATE 82 // DependencyOuterJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC 83 // DependencyOuterKotlinClass: OPEN PUBLIC : PUBLIC 84 // DependencyOuterKotlinClass.transientProperty: FINAL PUBLIC : FINAL JAVA_TRANSIENT PUBLIC 85 // DependencyOuterKotlinClass.volatileProperty: FINAL PUBLIC : FINAL JAVA_VOLATILE PUBLIC 86 // DependencyOuterKotlinClass.strictfpFun: FINAL PUBLIC : FINAL JAVA_STRICT PUBLIC 87 // DependencyOuterKotlinClass.synchronizedFun: FINAL PUBLIC : FINAL JAVA_SYNCHRONIZED PUBLIC 88 // DependencyOuterKotlinClass.Companion: FINAL PUBLIC : FINAL PUBLIC 89 // Companion.companionField: FINAL PUBLIC : FINAL PUBLIC 90 // Companion.customJvmStaticCompanionField: FINAL PUBLIC : FINAL PUBLIC 91 // Companion.jvmStaticCompanionField: FINAL PUBLIC : FINAL PUBLIC 92 // Companion.privateCompanionField: FINAL PUBLIC : FINAL PUBLIC 93 // Companion.companionMethod: FINAL PUBLIC : FINAL PUBLIC 94 // Companion.customJvmStaticCompanionMethod: FINAL PUBLIC : FINAL PUBLIC 95 // Companion.jvmStaticCompanionMethod: FINAL PUBLIC : FINAL PUBLIC 96 // Companion.privateCompanionMethod: FINAL PRIVATE : FINAL PRIVATE 97 // Companion.<init>: FINAL PRIVATE : FINAL PRIVATE 98 // DependencyOuterKotlinClass.DependencyInnerKotlinClass: FINAL INNER PUBLIC : FINAL PUBLIC 99 // DependencyInnerKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC 100 // DependencyOuterKotlinClass.DependencyNestedKotlinClass: OPEN PUBLIC : PUBLIC 101 // DependencyNestedKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC 102 // DependencyOuterKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC 103 // END 104 // MODULE: module1 105 // FILE: DependencyOuterJavaClass.java 106 public class DependencyOuterJavaClass { 107 public class DependencyInnerJavaClass {} 108 public static class DependencyNestedJavaClass {} 109 public static void staticPublicMethod() {} 110 public static String staticPublicField; <lambda>null111 static void staticPackageProtectedMethod() {} 112 static String staticPackageProtectedField; 113 protected static void staticProtectedMethod() {} 114 protected static String staticProtectedField; 115 private static void staticPrivateMethod() {} 116 private static String staticPrivateField; 117 transient String transientField = ""; 118 volatile String volatileField = ""; <lambda>null119 synchronized String synchronizedFun() { return ""; } <lambda>null120 strictfp String strictfpFun() { return ""; } 121 } 122 // FILE: DependencyOuterKotlinClass.kt 123 typealias DependencyCustomJvmStatic=JvmStatic 124 open class DependencyOuterKotlinClass { 125 inner class DependencyInnerKotlinClass 126 open class DependencyNestedKotlinClass 127 companion object { companionMethodnull128 fun companionMethod() {} 129 val companionField:String = "" privateCompanionMethodnull130 private fun privateCompanionMethod() {} 131 val privateCompanionField:String = "" 132 @JvmStatic jvmStaticCompanionMethodnull133 fun jvmStaticCompanionMethod() {} 134 @JvmStatic 135 val jvmStaticCompanionField:String = "" 136 @DependencyCustomJvmStatic customJvmStaticCompanionMethodnull137 fun customJvmStaticCompanionMethod() {} 138 @DependencyCustomJvmStatic 139 val customJvmStaticCompanionField:String = "" 140 } 141 142 @Transient 143 val transientProperty: String = "" 144 145 @Volatile 146 var volatileProperty: String = "" 147 148 @Strictfp strictfpFunnull149 fun strictfpFun(): String = "" 150 151 @Synchronized 152 fun synchronizedFun(): String = "" 153 } 154 // MODULE: main(module1) 155 // FILE: a.kt 156 annotation class Test 157 158 @Test 159 class Foo : C() { 160 161 } 162 163 @Test 164 class Bar : OuterJavaClass() 165 166 @Test 167 class Baz : OuterKotlinClass() 168 169 @Test 170 class JavaDependency : DependencyOuterJavaClass() 171 172 @Test 173 class KotlinDependency : DependencyOuterKotlinClass() 174 175 // FILE: C.java 176 177 public abstract class C { 178 179 private String staticStr = "str" 180 181 final transient String s1; 182 183 protected static volatile int i1; 184 185 default synchronized int intFun() { 186 return 1; 187 } 188 189 abstract strictfp void foo() {} 190 191 public static class NestedC { 192 193 } 194 195 public class InnerC { 196 197 } 198 } 199 200 // FILE: OuterJavaClass.java 201 public class OuterJavaClass { 202 public class InnerJavaClass {} 203 public static class NestedJavaClass {} 204 public static void staticPublicMethod() {} 205 public static String staticPublicField; <lambda>null206 static void staticPackageProtectedMethod() {} 207 static String staticPackageProtectedField; 208 protected static void staticProtectedMethod() {} 209 protected static String staticProtectedField; 210 private static void staticPrivateMethod() {} 211 private static String staticPrivateField; 212 } 213 // FILE: OuterKotlinClass.kt 214 typealias CustomJvmStatic=JvmStatic 215 open class OuterKotlinClass { 216 inner class InnerKotlinClass 217 open class NestedKotlinClass 218 companion object { companionMethodnull219 fun companionMethod() {} 220 const val companionField:String = "" privateCompanionMethodnull221 private fun privateCompanionMethod() {} 222 private val privateCompanionField:String = "" 223 @JvmStatic jvmStaticCompanionMethodnull224 fun jvmStaticCompanionMethod() {} 225 @JvmStatic 226 val jvmStaticCompanionField:String = "" 227 @CustomJvmStatic customJvmStaticCompanionMethodnull228 fun customJvmStaticCompanionMethod() {} 229 @CustomJvmStatic 230 val customJvmStaticCompanionField:String = "" 231 } 232 233 @Transient 234 val transientProperty: String = "" 235 236 @Volatile 237 var volatileProperty: String = "" 238 239 @Strictfp strictfpFunnull240 fun strictfpFun(): String = "" 241 242 @Synchronized 243 fun synchronizedFun(): String = "" 244 } 245