[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.
|
* 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.PsiModifierListOwner
|
||||||
import com.intellij.psi.PsiPrimitiveType
|
import com.intellij.psi.PsiPrimitiveType
|
||||||
import com.intellij.psi.PsiType
|
|
||||||
import org.jetbrains.annotations.NotNull
|
import org.jetbrains.annotations.NotNull
|
||||||
import org.jetbrains.annotations.Nullable
|
import org.jetbrains.annotations.Nullable
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightDeclaration
|
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.types.TypeUtils
|
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.isTypeParameter
|
||||||
import org.jetbrains.kotlin.types.typeUtil.nullability
|
import org.jetbrains.kotlin.types.typeUtil.nullability
|
||||||
|
|
||||||
interface KtUltraLightElementWithNullabilityAnnotation<out T : KtDeclaration, out D : PsiModifierListOwner> : KtLightDeclaration<T, D>,
|
interface KtUltraLightElementWithNullabilityAnnotationDescriptorBased<T : KtDeclaration, D : PsiModifierListOwner> :
|
||||||
PsiModifierListOwner {
|
KtUltraLightElementWithNullabilityAnnotation<T, D> {
|
||||||
|
|
||||||
fun computeQualifiedNameForNullabilityAnnotation(kotlinType: KotlinType?): String? {
|
fun computeQualifiedNameForNullabilityAnnotation(kotlinType: KotlinType?): String? {
|
||||||
val notErrorKotlinType = kotlinType?.takeUnless(KotlinType::isError) ?: return null
|
val notErrorKotlinType = kotlinType?.takeUnless(KotlinType::isError) ?: return null
|
||||||
@@ -38,7 +36,4 @@ interface KtUltraLightElementWithNullabilityAnnotation<out T : KtDeclaration, ou
|
|||||||
TypeNullability.FLEXIBLE -> null
|
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 isPhysical(): Boolean = false
|
||||||
|
|
||||||
override fun getText(): String = "{" + initializers.joinToString { it.text } + "}"
|
override fun getText(): String = "{" + initializers.joinToString { it.text } + "}"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ internal open class KtUltraLightFieldImpl protected constructor(
|
|||||||
private val support: KtUltraLightSupport,
|
private val support: KtUltraLightSupport,
|
||||||
modifiers: Set<String>,
|
modifiers: Set<String>,
|
||||||
) : LightFieldBuilder(name, PsiType.NULL, declaration), KtLightField,
|
) : LightFieldBuilder(name, PsiType.NULL, declaration), KtLightField,
|
||||||
KtUltraLightElementWithNullabilityAnnotation<KtDeclaration, PsiField> {
|
KtUltraLightElementWithNullabilityAnnotationDescriptorBased<KtDeclaration, PsiField> {
|
||||||
|
|
||||||
private val modifierList by lazyPub {
|
private val modifierList by lazyPub {
|
||||||
KtUltraLightFieldModifierList(support, declaration, this, modifiers)
|
KtUltraLightFieldModifierList(support, declaration, this, modifiers)
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ internal abstract class KtUltraLightMethod(
|
|||||||
) : KtLightMethodImpl(
|
) : KtLightMethodImpl(
|
||||||
lightMemberOrigin,
|
lightMemberOrigin,
|
||||||
containingClass
|
containingClass
|
||||||
), KtUltraLightElementWithNullabilityAnnotation<KtDeclaration, PsiMethod> {
|
), KtUltraLightElementWithNullabilityAnnotationDescriptorBased<KtDeclaration, PsiMethod> {
|
||||||
private class KtUltraLightThrowsReferenceListBuilder(private val parentMethod: PsiMethod) :
|
private class KtUltraLightThrowsReferenceListBuilder(private val parentMethod: PsiMethod) :
|
||||||
KotlinLightReferenceListBuilder(parentMethod.manager, parentMethod.language, PsiReferenceList.Role.THROWS_LIST) {
|
KotlinLightReferenceListBuilder(parentMethod.manager, parentMethod.language, PsiReferenceList.Role.THROWS_LIST) {
|
||||||
override fun getParent(): PsiMethod = parentMethod
|
override fun getParent(): PsiMethod = parentMethod
|
||||||
|
|||||||
+2
-2
@@ -37,7 +37,7 @@ internal class KtUltraLightSuspendContinuationParameter(
|
|||||||
method: KtLightMethod
|
method: KtLightMethod
|
||||||
) : LightParameter(SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME, PsiType.NULL, method, method.language),
|
) : LightParameter(SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME, PsiType.NULL, method, method.language),
|
||||||
KtLightParameter,
|
KtLightParameter,
|
||||||
KtUltraLightElementWithNullabilityAnnotation<KtParameter, PsiParameter> {
|
KtUltraLightElementWithNullabilityAnnotationDescriptorBased<KtParameter, PsiParameter> {
|
||||||
|
|
||||||
override val qualifiedNameForNullabilityAnnotation: String?
|
override val qualifiedNameForNullabilityAnnotation: String?
|
||||||
get() = if (!ktFunction.isPrivate()) computeQualifiedNameForNullabilityAnnotation(ktType) else null
|
get() = if (!ktFunction.isPrivate()) computeQualifiedNameForNullabilityAnnotation(ktType) else null
|
||||||
@@ -89,7 +89,7 @@ internal abstract class KtUltraLightParameter(
|
|||||||
PsiType.NULL,
|
PsiType.NULL,
|
||||||
ultraLightMethod,
|
ultraLightMethod,
|
||||||
ultraLightMethod.language
|
ultraLightMethod.language
|
||||||
), KtUltraLightElementWithNullabilityAnnotation<KtParameter, PsiParameter>, KtLightParameter {
|
), KtUltraLightElementWithNullabilityAnnotationDescriptorBased<KtParameter, PsiParameter>, KtLightParameter {
|
||||||
override fun isEquivalentTo(another: PsiElement?): Boolean {
|
override fun isEquivalentTo(another: PsiElement?): Boolean {
|
||||||
return another is KtParameter && kotlinOrigin?.isEquivalentTo(another) == true || this == another
|
return another is KtParameter && kotlinOrigin?.isEquivalentTo(another) == true || this == another
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user