[light classes] extract KtUltraLightElementWithNullabilityAnnotation to light-classes-base module

^KT-53097
This commit is contained in:
Dmitry Gridin
2022-07-08 20:02:55 +02:00
committed by Space
parent 83f4a9752b
commit 9cc0791229
6 changed files with 27 additions and 14 deletions
@@ -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<out T : KtDeclaration, out D : PsiModifierListOwner> : KtLightDeclaration<T, D>,
PsiModifierListOwner {
val qualifiedNameForNullabilityAnnotation: String?
val psiTypeForNullabilityAnnotation: PsiType?
}
@@ -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<out T : KtDeclaration, out D : PsiModifierListOwner> : KtLightDeclaration<T, D>,
PsiModifierListOwner {
interface KtUltraLightElementWithNullabilityAnnotationDescriptorBased<T : KtDeclaration, D : PsiModifierListOwner> :
KtUltraLightElementWithNullabilityAnnotation<T, D> {
fun computeQualifiedNameForNullabilityAnnotation(kotlinType: KotlinType?): String? {
val notErrorKotlinType = kotlinType?.takeUnless(KotlinType::isError) ?: return null
@@ -38,7 +36,4 @@ interface KtUltraLightElementWithNullabilityAnnotation<out T : KtDeclaration, ou
TypeNullability.FLEXIBLE -> null
}
}
val qualifiedNameForNullabilityAnnotation: String?
val psiTypeForNullabilityAnnotation: PsiType?
}
}
@@ -136,4 +136,4 @@ private class KtUltraLightPsiArrayInitializerMemberValue(
override fun isPhysical(): Boolean = false
override fun getText(): String = "{" + initializers.joinToString { it.text } + "}"
}
}
@@ -87,7 +87,7 @@ internal open class KtUltraLightFieldImpl protected constructor(
private val support: KtUltraLightSupport,
modifiers: Set<String>,
) : LightFieldBuilder(name, PsiType.NULL, declaration), KtLightField,
KtUltraLightElementWithNullabilityAnnotation<KtDeclaration, PsiField> {
KtUltraLightElementWithNullabilityAnnotationDescriptorBased<KtDeclaration, PsiField> {
private val modifierList by lazyPub {
KtUltraLightFieldModifierList(support, declaration, this, modifiers)
@@ -76,7 +76,7 @@ internal abstract class KtUltraLightMethod(
) : KtLightMethodImpl(
lightMemberOrigin,
containingClass
), KtUltraLightElementWithNullabilityAnnotation<KtDeclaration, PsiMethod> {
), KtUltraLightElementWithNullabilityAnnotationDescriptorBased<KtDeclaration, PsiMethod> {
private class KtUltraLightThrowsReferenceListBuilder(private val parentMethod: PsiMethod) :
KotlinLightReferenceListBuilder(parentMethod.manager, parentMethod.language, PsiReferenceList.Role.THROWS_LIST) {
override fun getParent(): PsiMethod = parentMethod
@@ -37,7 +37,7 @@ internal class KtUltraLightSuspendContinuationParameter(
method: KtLightMethod
) : LightParameter(SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME, PsiType.NULL, method, method.language),
KtLightParameter,
KtUltraLightElementWithNullabilityAnnotation<KtParameter, PsiParameter> {
KtUltraLightElementWithNullabilityAnnotationDescriptorBased<KtParameter, PsiParameter> {
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<KtParameter, PsiParameter>, KtLightParameter {
), KtUltraLightElementWithNullabilityAnnotationDescriptorBased<KtParameter, PsiParameter>, KtLightParameter {
override fun isEquivalentTo(another: PsiElement?): Boolean {
return another is KtParameter && kotlinOrigin?.isEquivalentTo(another) == true || this == another
}