diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightParameters.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightParameters.kt index cef26fac21d..8bdc9531c59 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightParameters.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightParameters.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.psi.KtParameter import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.codegen.AsmUtil.LABELED_THIS_PARAMETER import org.jetbrains.kotlin.codegen.AsmUtil.RECEIVER_PARAMETER_NAME +import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget internal class KtUltraLightSuspendContinuationParameter( private val ktFunction: KtFunction, @@ -144,7 +145,7 @@ internal abstract class KtAbstractUltraLightParameterForDeclaration( ) : KtUltraLightParameter(name, kotlinOrigin, support, method) { protected fun tryGetContainingDescriptor(): CallableDescriptor? = - containingDeclaration.resolve() as? CallableMemberDescriptor + containingDeclaration.resolve() as? CallableDescriptor protected abstract fun tryGetKotlinType(): KotlinType? @@ -189,11 +190,16 @@ internal class KtUltraLightParameterForSetterParameter( override fun tryGetKotlinType(): KotlinType? = property.getKotlinType() override val givenAnnotations: List? - get() = (property.resolve() as? PropertyDescriptor) - ?.setter - ?.valueParameters - ?.firstOrNull() - ?.obtainLightAnnotations(support, this) + get() = property.annotationEntries.filter { + it.useSiteTarget?.getAnnotationUseSiteTarget() == AnnotationUseSiteTarget.SETTER_PARAMETER + }.map { entry -> + KtLightAnnotationForSourceEntry( + lazyQualifiedName = { entry.analyzeAnnotation()?.fqName?.asString() }, + kotlinOrigin = entry, + parent = this, + lazyClsDelegate = null + ) + } override fun isVarArgs(): Boolean = false } diff --git a/compiler/testData/asJava/lightClasses/AnnotatedPropertyWithSites.java b/compiler/testData/asJava/lightClasses/AnnotatedPropertyWithSites.java new file mode 100644 index 00000000000..4e57bad8a6c --- /dev/null +++ b/compiler/testData/asJava/lightClasses/AnnotatedPropertyWithSites.java @@ -0,0 +1,14 @@ +public final class Test /* Test*/ { + @MyAnnotation5() + private java.lang.String bar; + + @MyAnnotation() + @org.jetbrains.annotations.NotNull() + public final java.lang.String getBar();// getBar() + + @MyAnnotation2() + public final void setBar(@MyAnnotation3() @org.jetbrains.annotations.NotNull() java.lang.String);// setBar(java.lang.String) + + public Test(@MyAnnotation6() @org.jetbrains.annotations.NotNull() java.lang.String);// .ctor(java.lang.String) + +} diff --git a/compiler/testData/asJava/lightClasses/AnnotatedPropertyWithSites.kt b/compiler/testData/asJava/lightClasses/AnnotatedPropertyWithSites.kt new file mode 100644 index 00000000000..9ec2d98b316 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/AnnotatedPropertyWithSites.kt @@ -0,0 +1,9 @@ +// Test +annotation class MyAnnotation +annotation class MyAnnotation2 +annotation class MyAnnotation3 +annotation class MyAnnotation4 +annotation class MyAnnotation5 +annotation class MyAnnotation6 + +class Test(@get:MyAnnotation @set:MyAnnotation2 @setparam:MyAnnotation3 @property:MyAnnotation4 @field:MyAnnotation5 @param:MyAnnotation6 var bar: String) diff --git a/compiler/tests/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java index 784e8b5d086..e481e317067 100644 --- a/compiler/tests/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java @@ -38,6 +38,11 @@ public class CompilerLightClassTestGenerated extends AbstractCompilerLightClassT runTest("compiler/testData/asJava/lightClasses/AnnotatedParameterInInnerClassConstructor.kt"); } + @TestMetadata("AnnotatedPropertyWithSites.kt") + public void testAnnotatedPropertyWithSites() throws Exception { + runTest("compiler/testData/asJava/lightClasses/AnnotatedPropertyWithSites.kt"); + } + @TestMetadata("AnnotationClass.kt") public void testAnnotationClass() throws Exception { runTest("compiler/testData/asJava/lightClasses/AnnotationClass.kt"); diff --git a/idea/tests/org/jetbrains/kotlin/asJava/classes/UltraLightClassSanityTestGenerated.java b/idea/tests/org/jetbrains/kotlin/asJava/classes/UltraLightClassSanityTestGenerated.java index 3fcc47b4f35..660fef98e8f 100644 --- a/idea/tests/org/jetbrains/kotlin/asJava/classes/UltraLightClassSanityTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/asJava/classes/UltraLightClassSanityTestGenerated.java @@ -38,6 +38,11 @@ public class UltraLightClassSanityTestGenerated extends AbstractUltraLightClassS runTest("compiler/testData/asJava/lightClasses/AnnotatedParameterInInnerClassConstructor.kt"); } + @TestMetadata("AnnotatedPropertyWithSites.kt") + public void testAnnotatedPropertyWithSites() throws Exception { + runTest("compiler/testData/asJava/lightClasses/AnnotatedPropertyWithSites.kt"); + } + @TestMetadata("AnnotationClass.kt") public void testAnnotationClass() throws Exception { runTest("compiler/testData/asJava/lightClasses/AnnotationClass.kt"); diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeCompiledLightClassTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeCompiledLightClassTestGenerated.java index 5b01f48a2d5..6b5edd4405a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeCompiledLightClassTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeCompiledLightClassTestGenerated.java @@ -38,6 +38,11 @@ public class IdeCompiledLightClassTestGenerated extends AbstractIdeCompiledLight runTest("compiler/testData/asJava/lightClasses/AnnotatedParameterInInnerClassConstructor.kt"); } + @TestMetadata("AnnotatedPropertyWithSites.kt") + public void testAnnotatedPropertyWithSites() throws Exception { + runTest("compiler/testData/asJava/lightClasses/AnnotatedPropertyWithSites.kt"); + } + @TestMetadata("AnnotationClass.kt") public void testAnnotationClass() throws Exception { runTest("compiler/testData/asJava/lightClasses/AnnotationClass.kt"); diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java index ecdd62cfc44..7239c5544f6 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java @@ -38,6 +38,11 @@ public class IdeLightClassTestGenerated extends AbstractIdeLightClassTest { runTest("compiler/testData/asJava/lightClasses/AnnotatedParameterInInnerClassConstructor.kt"); } + @TestMetadata("AnnotatedPropertyWithSites.kt") + public void testAnnotatedPropertyWithSites() throws Exception { + runTest("compiler/testData/asJava/lightClasses/AnnotatedPropertyWithSites.kt"); + } + @TestMetadata("AnnotationClass.kt") public void testAnnotationClass() throws Exception { runTest("compiler/testData/asJava/lightClasses/AnnotationClass.kt");