diff --git a/compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtUltraLightElementWithNullabilityAnnotation.kt b/compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtUltraLightElementWithNullabilityAnnotation.kt new file mode 100644 index 00000000000..a72c746c99b --- /dev/null +++ b/compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtUltraLightElementWithNullabilityAnnotation.kt @@ -0,0 +1,18 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.asJava.classes + +import com.intellij.psi.PsiModifierListOwner +import com.intellij.psi.PsiType +import org.jetbrains.kotlin.asJava.elements.KtLightDeclaration +import org.jetbrains.kotlin.psi.KtDeclaration + +interface KtUltraLightElementWithNullabilityAnnotation : KtLightDeclaration, + PsiModifierListOwner { + + val qualifiedNameForNullabilityAnnotation: String? + val psiTypeForNullabilityAnnotation: PsiType? +} diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightElementWithNullabilityAnnotation.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtUltraLightElementWithNullabilityAnnotationDescriptorBased.kt similarity index 77% rename from compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightElementWithNullabilityAnnotation.kt rename to compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtUltraLightElementWithNullabilityAnnotationDescriptorBased.kt index 70ca12198e4..088ac883e78 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightElementWithNullabilityAnnotation.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtUltraLightElementWithNullabilityAnnotationDescriptorBased.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -7,10 +7,8 @@ package org.jetbrains.kotlin.asJava.classes import com.intellij.psi.PsiModifierListOwner import com.intellij.psi.PsiPrimitiveType -import com.intellij.psi.PsiType import org.jetbrains.annotations.NotNull import org.jetbrains.annotations.Nullable -import org.jetbrains.kotlin.asJava.elements.KtLightDeclaration import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.TypeUtils @@ -19,8 +17,8 @@ import org.jetbrains.kotlin.types.typeUtil.TypeNullability import org.jetbrains.kotlin.types.typeUtil.isTypeParameter import org.jetbrains.kotlin.types.typeUtil.nullability -interface KtUltraLightElementWithNullabilityAnnotation : KtLightDeclaration, - PsiModifierListOwner { +interface KtUltraLightElementWithNullabilityAnnotationDescriptorBased : + KtUltraLightElementWithNullabilityAnnotation { fun computeQualifiedNameForNullabilityAnnotation(kotlinType: KotlinType?): String? { val notErrorKotlinType = kotlinType?.takeUnless(KotlinType::isError) ?: return null @@ -38,7 +36,4 @@ interface KtUltraLightElementWithNullabilityAnnotation null } } - - val qualifiedNameForNullabilityAnnotation: String? - val psiTypeForNullabilityAnnotation: PsiType? -} \ No newline at end of file +} diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightAnnotations.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightAnnotations.kt index cc556151d58..c31d273fd9e 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightAnnotations.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightAnnotations.kt @@ -136,4 +136,4 @@ private class KtUltraLightPsiArrayInitializerMemberValue( override fun isPhysical(): Boolean = false override fun getText(): String = "{" + initializers.joinToString { it.text } + "}" -} \ No newline at end of file +} diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightField.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightField.kt index 780263e9a33..bdf4fcd569c 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightField.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightField.kt @@ -87,7 +87,7 @@ internal open class KtUltraLightFieldImpl protected constructor( private val support: KtUltraLightSupport, modifiers: Set, ) : LightFieldBuilder(name, PsiType.NULL, declaration), KtLightField, - KtUltraLightElementWithNullabilityAnnotation { + KtUltraLightElementWithNullabilityAnnotationDescriptorBased { private val modifierList by lazyPub { KtUltraLightFieldModifierList(support, declaration, this, modifiers) 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 d7dd0c81a80..242c06481f6 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 @@ -76,7 +76,7 @@ internal abstract class KtUltraLightMethod( ) : KtLightMethodImpl( lightMemberOrigin, containingClass -), KtUltraLightElementWithNullabilityAnnotation { +), KtUltraLightElementWithNullabilityAnnotationDescriptorBased { private class KtUltraLightThrowsReferenceListBuilder(private val parentMethod: PsiMethod) : KotlinLightReferenceListBuilder(parentMethod.manager, parentMethod.language, PsiReferenceList.Role.THROWS_LIST) { override fun getParent(): PsiMethod = parentMethod 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 4ab2c9e2ac0..5d0632d7f77 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 @@ -37,7 +37,7 @@ internal class KtUltraLightSuspendContinuationParameter( method: KtLightMethod ) : LightParameter(SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME, PsiType.NULL, method, method.language), KtLightParameter, - KtUltraLightElementWithNullabilityAnnotation { + KtUltraLightElementWithNullabilityAnnotationDescriptorBased { override val qualifiedNameForNullabilityAnnotation: String? get() = if (!ktFunction.isPrivate()) computeQualifiedNameForNullabilityAnnotation(ktType) else null @@ -89,7 +89,7 @@ internal abstract class KtUltraLightParameter( PsiType.NULL, ultraLightMethod, ultraLightMethod.language -), KtUltraLightElementWithNullabilityAnnotation, KtLightParameter { +), KtUltraLightElementWithNullabilityAnnotationDescriptorBased, KtLightParameter { override fun isEquivalentTo(another: PsiElement?): Boolean { return another is KtParameter && kotlinOrigin?.isEquivalentTo(another) == true || this == another }