From 4b1226e3d7970094ebf32c4b51be081d3399f901 Mon Sep 17 00:00:00 2001 From: Igor Yakovlev Date: Mon, 1 Jul 2019 18:06:30 +0300 Subject: [PATCH] Set correct nullability and Companion support to annotations --- .../kotlin/asJava/classes/ultraLightClass.kt | 11 +++++++---- .../kotlin/asJava/classes/ultraLightMembersCreator.kt | 9 +++++++-- .../kotlin/asJava/classes/ultraLightMethods.kt | 5 +++-- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightClass.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightClass.kt index 7094e15a1da..c0b345390b1 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightClass.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightClass.kt @@ -169,13 +169,10 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor override fun getLBrace(): PsiElement? = null private val _ownFields: List by lazyPub { + val result = arrayListOf() val usedNames = hashSetOf() - for (parameter in propertyParameters()) { - membersBuilder.createPropertyField(parameter, usedNames, forceStatic = false)?.let(result::add) - } - this.classOrObject.companionObjects.firstOrNull()?.let { companion -> result.add( KtUltraLightField( @@ -193,6 +190,12 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor } } + if (isAnnotationType) return@lazyPub result + + for (parameter in propertyParameters()) { + membersBuilder.createPropertyField(parameter, usedNames, forceStatic = false)?.let(result::add) + } + if (!isInterface) { val isCompanion = this.classOrObject is KtObjectDeclaration && this.classOrObject.isCompanion() for (property in this.classOrObject.declarations.filterIsInstance()) { diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMembersCreator.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMembersCreator.kt index 5cef20f2380..be5c219c404 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMembersCreator.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMembersCreator.kt @@ -397,7 +397,13 @@ internal class UltraLightMembersCreator( val defaultGetterName = if (createAsAnnotationMethod) propertyName else JvmAbi.getterName(propertyName) val getterName = computeMethodName(auxiliaryOrigin, defaultGetterName, MethodType.GETTER) val getterPrototype = lightMethod(getterName, auxiliaryOrigin, forceStatic = onlyJvmStatic || forceStatic) - val getterWrapper = KtUltraLightMethodForSourceDeclaration(getterPrototype, lightMemberOrigin, support, containingClass) + val getterWrapper = KtUltraLightMethodForSourceDeclaration( + getterPrototype, + lightMemberOrigin, + support, + containingClass, + forceToSkipNullabilityAnnotation = createAsAnnotationMethod + ) val getterType: PsiType by lazyPub { methodReturnType(declaration, getterWrapper, isSuspendFunction = false) } getterPrototype.setMethodReturnType { getterType } @@ -419,7 +425,6 @@ internal class UltraLightMembersCreator( auxiliaryOriginalElement = auxiliaryOrigin ) - val setterName = computeMethodName(auxiliaryOrigin, JvmAbi.setterName(propertyName), MethodType.SETTER) val setterPrototype = lightMethod(setterName, auxiliaryOrigin, forceStatic = onlyJvmStatic || forceStatic) .setMethodReturnType(PsiType.VOID) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethods.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethods.kt index 694bff2bcb8..1f9aad6b2f1 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethods.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethods.kt @@ -104,7 +104,8 @@ internal class KtUltraLightMethodForSourceDeclaration( delegate: PsiMethod, lightMemberOrigin: LightMemberOrigin?, support: KtUltraLightSupport, - containingClass: KtLightClass + containingClass: KtLightClass, + private val forceToSkipNullabilityAnnotation: Boolean = false ) : KtUltraLightMethod( delegate, lightMemberOrigin, @@ -119,7 +120,7 @@ internal class KtUltraLightMethodForSourceDeclaration( ) : this(delegate, LightMemberOriginForDeclaration(declaration, JvmDeclarationOriginKind.OTHER), support, containingClass) override val kotlinTypeForNullabilityAnnotation: KotlinType? - get() = kotlinOrigin?.getKotlinType() + get() = if (forceToSkipNullabilityAnnotation) null else kotlinOrigin?.getKotlinType() override fun buildTypeParameterList(): PsiTypeParameterList { val origin = kotlinOrigin