From 373d0ac6609e3475bc1d9f8fc9a78013284de100 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Mon, 1 Mar 2021 12:51:30 +0100 Subject: [PATCH] Fix ultra light class generation for private suspend methods --- .../kotlin/asJava/classes/ultraLightMembersCreator.kt | 5 ----- .../jetbrains/kotlin/asJava/classes/ultraLightParameters.kt | 3 ++- plugins/uast-kotlin/testData/Suspend.log-ide.txt | 4 +++- plugins/uast-kotlin/testData/Suspend.log.txt | 4 +++- plugins/uast-kotlin/testData/Suspend.render-ide.txt | 4 ++-- plugins/uast-kotlin/testData/Suspend.render.txt | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMembersCreator.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMembersCreator.kt index f75639c9810..1c54ba379ef 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMembersCreator.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMembersCreator.kt @@ -116,11 +116,6 @@ internal class UltraLightMembersCreator( || ktFunction.hasAnnotation(JVM_SYNTHETIC_ANNOTATION_FQ_NAME) ) return emptyList() - - if (ktFunction.modifierList?.hasSuspendModifier() == true && ktFunction.isPrivate()) { - return emptyList() - } - var methodIndex = METHOD_INDEX_BASE val basicMethod = asJavaMethod(ktFunction, forceStatic, forcePrivate, methodIndex = methodIndex) 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 6165cdb8408..ab899c68609 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 @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.codegen.AsmUtil.LABELED_THIS_PARAMETER import org.jetbrains.kotlin.codegen.AsmUtil.RECEIVER_PARAMETER_NAME import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.isPrivate internal class KtUltraLightSuspendContinuationParameter( private val ktFunction: KtFunction, @@ -35,7 +36,7 @@ internal class KtUltraLightSuspendContinuationParameter( KtUltraLightElementWithNullabilityAnnotation { override val qualifiedNameForNullabilityAnnotation: String? - get() = computeQualifiedNameForNullabilityAnnotation(ktType) + get() = if (!ktFunction.isPrivate()) computeQualifiedNameForNullabilityAnnotation(ktType) else null override val psiTypeForNullabilityAnnotation: PsiType? get() = psiType override val kotlinOrigin: KtParameter? = null diff --git a/plugins/uast-kotlin/testData/Suspend.log-ide.txt b/plugins/uast-kotlin/testData/Suspend.log-ide.txt index d291425dddf..fbab5351d41 100644 --- a/plugins/uast-kotlin/testData/Suspend.log-ide.txt +++ b/plugins/uast-kotlin/testData/Suspend.log-ide.txt @@ -21,10 +21,12 @@ UFile (package = test.pkg) UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0)) UIdentifier (Identifier (suspendPrivate)) USimpleNameReferenceExpression (identifier = suspendPrivate, resolvesTo = null) - UMethod (name = Context) UMethod (name = suspendPrivate) + UParameter (name = $completion) + UAnnotation (fqName = null) UBlockExpression UReturnExpression UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0)) UIdentifier (Identifier (inner)) USimpleNameReferenceExpression (identifier = inner, resolvesTo = null) + UMethod (name = Context) diff --git a/plugins/uast-kotlin/testData/Suspend.log.txt b/plugins/uast-kotlin/testData/Suspend.log.txt index d291425dddf..fbab5351d41 100644 --- a/plugins/uast-kotlin/testData/Suspend.log.txt +++ b/plugins/uast-kotlin/testData/Suspend.log.txt @@ -21,10 +21,12 @@ UFile (package = test.pkg) UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0)) UIdentifier (Identifier (suspendPrivate)) USimpleNameReferenceExpression (identifier = suspendPrivate, resolvesTo = null) - UMethod (name = Context) UMethod (name = suspendPrivate) + UParameter (name = $completion) + UAnnotation (fqName = null) UBlockExpression UReturnExpression UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0)) UIdentifier (Identifier (inner)) USimpleNameReferenceExpression (identifier = inner, resolvesTo = null) + UMethod (name = Context) diff --git a/plugins/uast-kotlin/testData/Suspend.render-ide.txt b/plugins/uast-kotlin/testData/Suspend.render-ide.txt index 6c4d4265fb0..ad70e4d78d1 100644 --- a/plugins/uast-kotlin/testData/Suspend.render-ide.txt +++ b/plugins/uast-kotlin/testData/Suspend.render-ide.txt @@ -10,8 +10,8 @@ public final class Context { public final fun inner(@org.jetbrains.annotations.NotNull $completion: kotlin.coroutines.Continuation) : java.lang.Object { return suspendPrivate() } - public fun Context() = UastEmptyExpression - fun suspendPrivate() : int { + private final fun suspendPrivate(@null $completion: kotlin.coroutines.Continuation) : java.lang.Object { return inner() } + public fun Context() = UastEmptyExpression } diff --git a/plugins/uast-kotlin/testData/Suspend.render.txt b/plugins/uast-kotlin/testData/Suspend.render.txt index 6c4d4265fb0..ad70e4d78d1 100644 --- a/plugins/uast-kotlin/testData/Suspend.render.txt +++ b/plugins/uast-kotlin/testData/Suspend.render.txt @@ -10,8 +10,8 @@ public final class Context { public final fun inner(@org.jetbrains.annotations.NotNull $completion: kotlin.coroutines.Continuation) : java.lang.Object { return suspendPrivate() } - public fun Context() = UastEmptyExpression - fun suspendPrivate() : int { + private final fun suspendPrivate(@null $completion: kotlin.coroutines.Continuation) : java.lang.Object { return inner() } + public fun Context() = UastEmptyExpression }