From 5f9660cd3379c0189f0d9819a15389128bbbe1ad Mon Sep 17 00:00:00 2001 From: Nicolay Mitropolsky Date: Mon, 22 Jul 2019 17:20:25 +0300 Subject: [PATCH] `KtLightParameter` introduced as interface --- .../asJava/classes/ultraLightParameters.kt | 19 ++++++++----------- .../kotlin/asJava/classes/ultraLightUtils.kt | 4 ++-- .../kotlin/asJava/elements/KtLightElements.kt | 5 +++++ .../asJava/elements/KtLightParameterImpl.kt | 9 +++------ 4 files changed, 18 insertions(+), 19 deletions(-) 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 397b2733a04..12b4a124a16 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 @@ -9,10 +9,7 @@ import com.intellij.psi.* import com.intellij.psi.search.LocalSearchScope import com.intellij.psi.search.SearchScope import org.jetbrains.annotations.NonNls -import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation -import org.jetbrains.kotlin.asJava.elements.KtLightMethod -import org.jetbrains.kotlin.asJava.elements.KtLightSimpleModifierList -import org.jetbrains.kotlin.asJava.elements.LightParameter +import org.jetbrains.kotlin.asJava.elements.* import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.isSuspendFunctionType import org.jetbrains.kotlin.codegen.coroutines.SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME @@ -26,11 +23,12 @@ internal class KtUltraLightSuspendContinuationParameter( private val support: KtUltraLightSupport, method: KtLightMethod ) : LightParameter(SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME, PsiType.NULL, method, method.language), - KtUltraLightElementWithNullabilityAnnotation { + KtLightParameter, + KtUltraLightElementWithNullabilityAnnotation { override val kotlinTypeForNullabilityAnnotation: KotlinType? get() = ktType override val psiTypeForNullabilityAnnotation: PsiType? get() = psiType - override val kotlinOrigin: KtDeclaration? = null + override val kotlinOrigin: KtParameter? = null override val clsDelegate: PsiParameter get() = throw IllegalStateException("Cls delegate shouldn't be loaded for ultra-light PSI!") @@ -68,7 +66,7 @@ internal class KtUltraLightSuspendContinuationParameter( internal abstract class KtUltraLightParameter( name: String, - override val kotlinOrigin: KtDeclaration?, + override val kotlinOrigin: KtParameter?, protected val support: KtUltraLightSupport, method: KtLightMethod ) : org.jetbrains.kotlin.asJava.elements.LightParameter( @@ -76,7 +74,7 @@ internal abstract class KtUltraLightParameter( PsiType.NULL, method, method.language -), KtUltraLightElementWithNullabilityAnnotation { +), KtUltraLightElementWithNullabilityAnnotation, KtLightParameter { override fun isEquivalentTo(another: PsiElement?): Boolean = kotlinOrigin == another @@ -137,7 +135,7 @@ internal abstract class KtUltraLightParameter( internal abstract class KtAbstractUltraLightParameterForDeclaration( name: String, - kotlinOrigin: KtDeclaration?, + kotlinOrigin: KtParameter?, support: KtUltraLightSupport, method: KtLightMethod, protected val containingDeclaration: KtCallableDeclaration @@ -192,12 +190,11 @@ internal class KtUltraLightReceiverParameter( internal class KtUltraLightParameterForDescriptor( private val descriptor: ParameterDescriptor, - kotlinOrigin: KtDeclaration?, support: KtUltraLightSupport, method: KtLightMethod ) : KtUltraLightParameter( if (descriptor.name.isSpecial) "\$self" else descriptor.name.identifier, - kotlinOrigin, support, method + null, support, method ) { override val kotlinType: KotlinType? get() = descriptor.type diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightUtils.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightUtils.kt index 9c4a1432543..777990e8a44 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightUtils.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightUtils.kt @@ -223,11 +223,11 @@ fun KtUltraLightClass.createGeneratedMethodFromDescriptor( val wrapper = KtUltraLightMethodForDescriptor(descriptor, lightMethod, lightMemberOrigin, support, this) descriptor.extensionReceiverParameter?.let { receiver -> - lightMethod.addParameter(KtUltraLightParameterForDescriptor(receiver, kotlinOrigin, support, wrapper)) + lightMethod.addParameter(KtUltraLightParameterForDescriptor(receiver, support, wrapper)) } for (valueParameter in descriptor.valueParameters) { - lightMethod.addParameter(KtUltraLightParameterForDescriptor(valueParameter, kotlinOrigin, support, wrapper)) + lightMethod.addParameter(KtUltraLightParameterForDescriptor(valueParameter, support, wrapper)) } lightMethod.setMethodReturnType { diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightElements.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightElements.kt index 9bd703c4709..22538a51c36 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightElements.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightElements.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtElement +import org.jetbrains.kotlin.psi.KtParameter import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind interface KtLightElement : PsiElement { @@ -48,6 +49,10 @@ interface KtLightMember : PsiMember, KtLightDeclaration, PsiVariableEx +interface KtLightParameter : PsiParameter, KtLightDeclaration { + val method: KtLightMethod +} + interface KtLightFieldForSourceDeclarationSupport : PsiField { val kotlinOrigin: KtDeclaration? } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightParameterImpl.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightParameterImpl.kt index aba15dac112..87bf8bdf272 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightParameterImpl.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightParameterImpl.kt @@ -16,19 +16,16 @@ import com.intellij.util.IncorrectOperationException import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.idea.KotlinLanguage -import org.jetbrains.kotlin.psi.KtFunction -import org.jetbrains.kotlin.psi.KtParameter -import org.jetbrains.kotlin.psi.KtProperty -import org.jetbrains.kotlin.psi.KtPropertyAccessor +import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.isExtensionDeclaration -class KtLightParameterImpl( +internal class KtLightParameterImpl( private val dummyDelegate: PsiParameter, private val clsDelegateProvider: () -> PsiParameter?, private val index: Int, method: KtLightMethod ) : LightParameter(dummyDelegate.name ?: "p$index", dummyDelegate.type, method, KotlinLanguage.INSTANCE), - KtLightDeclaration { + KtLightDeclaration, KtLightParameter { private val lazyDelegate by lazyPub { clsDelegateProvider() ?: dummyDelegate }