| /* |
| * Copyright 2026 Google LLC |
| * Copyright 2010-2026 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: GetSymbolsWithAnnotationProcessor |
| // PROCESSOR INPUT: Anno1, Anno2, Anno3 |
| // EXPECTED: |
| // Anno1: File: Main.kt |
| // Anno1: File: Other.kt |
| // Anno1: MyClass |
| // Anno1: MyClass.<init>.paramAndPropertyWithOnlyAnno1 |
| // Anno1: MyClass.<init>.paramWithAnno1AndAnno3 |
| // Anno1: MyClass.fieldUseSiteWithAnno1AndAnno3 |
| // Anno1: MyClass.paramAndPropertyWithOnlyAnno1 |
| // Anno1: MyClass.propertyUseSiteWithAnno1AndAnno2 |
| // Anno1: MyClass.setParamUseSiteWithAnno1AndAnno3.setParamUseSiteWithAnno1AndAnno3.setter().value |
| // Anno1: MyClass.setterAndGetterUseSiteWithAnno1AndAnno2.setterAndGetterUseSiteWithAnno1AndAnno2.getter() |
| // Anno1: MyClass.setterAndGetterUseSiteWithAnno1AndAnno2.setterAndGetterUseSiteWithAnno1AndAnno2.setter() |
| // Anno1: MyClass.setterUseSiteWithAnno1AndAnno2.setterUseSiteWithAnno1AndAnno2.setter() |
| // Anno1: extFunWithAnno1AndAnno2.ReceiverClass |
| // Anno2: File: Main.kt |
| // Anno2: MyClass |
| // Anno2: MyClass.delegateUseSiteWithAnno2AndAnno3 |
| // Anno2: MyClass.explicitSetParam.explicitSetParam.setter().valueWithAnno2 |
| // Anno2: MyClass.getterUseSiteWithAnno2AndAnno3.getterUseSiteWithAnno2AndAnno3.getter() |
| // Anno2: MyClass.propertyUseSiteWithAnno1AndAnno2 |
| // Anno2: MyClass.setterAndGetterUseSiteWithAnno1AndAnno2.setterAndGetterUseSiteWithAnno1AndAnno2.getter() |
| // Anno2: MyClass.setterAndGetterUseSiteWithAnno1AndAnno2.setterAndGetterUseSiteWithAnno1AndAnno2.setter() |
| // Anno2: MyClass.setterUseSiteWithAnno1AndAnno2.setterUseSiteWithAnno1AndAnno2.setter() |
| // Anno2: extFunWithAnno1AndAnno2.ReceiverClass |
| // Anno3: File: Other.kt |
| // Anno3: MyClass |
| // Anno3: MyClass.<init>.paramWithAnno1AndAnno3 |
| // Anno3: MyClass.delegateUseSiteWithAnno2AndAnno3 |
| // Anno3: MyClass.fieldUseSiteWithAnno1AndAnno3 |
| // Anno3: MyClass.getterUseSiteWithAnno2AndAnno3.getterUseSiteWithAnno2AndAnno3.getter() |
| // Anno3: MyClass.setParamUseSiteWithAnno1AndAnno3.setParamUseSiteWithAnno1AndAnno3.setter().value |
| // Anno3: extPropWithAnno3.ReceiverClass |
| // END |
| |
| // FILE: Main.kt |
| |
| @file:[Anno1 Anno2] |
| |
| annotation class Anno1 |
| |
| annotation class Anno2 |
| |
| annotation class Anno3 |
| |
| @[Anno1 Anno2 Anno3] |
| class MyClass( |
| @param:[Anno1 Anno3] val paramWithAnno1AndAnno3: Int, |
| @[Anno1] val paramAndPropertyWithOnlyAnno1: Int, |
| @property:[Anno1 Anno2] val propertyUseSiteWithAnno1AndAnno2: Int, |
| @field:[Anno1 Anno3] val fieldUseSiteWithAnno1AndAnno3: Int, |
| @get:[Anno2 Anno3] val getterUseSiteWithAnno2AndAnno3: Int, |
| @set:[Anno1 Anno2] var setterUseSiteWithAnno1AndAnno2: Int, |
| @set:[Anno1 Anno2] @get:[Anno1 Anno2] var setterAndGetterUseSiteWithAnno1AndAnno2: Int, |
| ) { |
| @setparam:[Anno1 Anno3] |
| var setParamUseSiteWithAnno1AndAnno3 = false |
| |
| var explicitSetParam: Int |
| set(@setparam:[Anno2] valueWithAnno2) { |
| field = valueWithAnno2 |
| } |
| |
| @delegate:[Anno2 Anno3] val delegateUseSiteWithAnno2AndAnno3: Int by lazy { 1 } |
| } |
| |
| class ReceiverClass |
| |
| @receiver:[Anno1 Anno2] |
| fun ReceiverClass.extFunWithAnno1AndAnno2() {} |
| |
| @receiver:[Anno3] |
| val ReceiverClass.extPropWithAnno3: Int get() = 0 |
| |
| // FILE: Other.kt |
| |
| @file:[Anno1 Anno3] |