blob: 4a8ea8f71a59bdaedca91fe36dcbc055658af199 [file]
/*
* 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: com.example.Anno, com.example.FileAnno
// EXPECTED:
// com.example.Anno: TargetClass
// com.example.Anno: TargetClass.<init>.allUseSite
// com.example.Anno: TargetClass.<init>.noUseSite
// com.example.Anno: TargetClass.<init>.paramAndPropertyUseSite
// com.example.Anno: TargetClass.<init>.paramUseSite
// com.example.Anno: TargetClass.allUseSite
// com.example.Anno: TargetClass.allUseSite.allUseSite.getter()
// com.example.Anno: TargetClass.allUseSite.allUseSite.setter()
// com.example.Anno: TargetClass.allUseSite.allUseSite.setter().value
// com.example.Anno: TargetClass.delegateUseSite
// com.example.Anno: TargetClass.fieldUseSite
// com.example.Anno: TargetClass.getAndSetUseSite.getAndSetUseSite.getter()
// com.example.Anno: TargetClass.getAndSetUseSite.getAndSetUseSite.setter()
// com.example.Anno: TargetClass.getterUseSite.getterUseSite.getter()
// com.example.Anno: TargetClass.noUseSite
// com.example.Anno: TargetClass.nonParamValAllUseSite
// com.example.Anno: TargetClass.nonParamValAllUseSite.nonParamValAllUseSite.getter()
// com.example.Anno: TargetClass.nonParamVarAllUseSite
// com.example.Anno: TargetClass.nonParamVarAllUseSite.nonParamVarAllUseSite.getter()
// com.example.Anno: TargetClass.nonParamVarAllUseSite.nonParamVarAllUseSite.setter()
// com.example.Anno: TargetClass.nonParamVarAllUseSite.nonParamVarAllUseSite.setter().value
// com.example.Anno: TargetClass.paramAndPropertyUseSite
// com.example.Anno: TargetClass.propertyUseSite
// com.example.Anno: TargetClass.setParamUseSiteOnSetParam.setParamUseSiteOnSetParam.setter().boolSetterParameter
// com.example.Anno: TargetClass.setParamUseSiteOnVar.setParamUseSiteOnVar.setter().value
// com.example.Anno: TargetClass.setterUseSite.setterUseSite.setter()
// com.example.Anno: nothingFun.ReceiverFunClass
// com.example.Anno: nothingProp.ReceiverPropClass
// com.example.FileAnno: File: TargetFile.kt
// END
// FILE: Anno.kt
package com.example
annotation class Anno
annotation class FileAnno
// FILE: TargetFile.kt
import com.example.Anno
import com.example.FileAnno
@file:FileAnno
@Anno
class TargetClass(
@Anno val noUseSite: Int,
@param:Anno val paramUseSite: String,
@property:Anno val propertyUseSite: Boolean,
@get:Anno val getterUseSite: Boolean,
@set:Anno var setterUseSite: Boolean,
@get:Anno @set:Anno var getAndSetUseSite: Boolean,
@field:Anno val fieldUseSite: Float,
@all:Anno var allUseSite: Char,
@param:Anno @property:Anno val paramAndPropertyUseSite: Long,
) {
@all:Anno
var nonParamVarAllUseSite: String
@all:Anno
val nonParamValAllUseSite: String
@setparam:Anno
var setParamUseSiteOnVar = 42
var setParamUseSiteOnSetParam: Boolean
set(@setparam:Anno boolSetterParameter) {
field = boolSetterParameter
}
@delegate:Anno val delegateUseSite: Boolean by lazy { true }
}
class ReceiverFunClass
class ReceiverPropClass
@receiver:Anno
fun ReceiverFunClass.nothingFun() {}
@receiver:Anno
val ReceiverPropClass.nothingProp: Unit get() = Unit