[light classes] extract KtUltraLightElementWithNullabilityAnnotation to light-classes-base module
^KT-53097
This commit is contained in:
+18
@@ -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?
|
||||
}
|
||||
+4
-9
@@ -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?
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -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
|
||||
|
||||
+2
-2
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user