diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt index 6f29d945bf9..8dccda0a629 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt @@ -21,10 +21,12 @@ import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass import org.jetbrains.kotlin.fir.java.declarations.FirJavaMethod import org.jetbrains.kotlin.fir.java.declarations.buildJavaMethodCopy import org.jetbrains.kotlin.fir.java.declarations.buildJavaValueParameterCopy +import org.jetbrains.kotlin.fir.java.resolveIfJavaType import org.jetbrains.kotlin.fir.java.syntheticPropertiesStorage import org.jetbrains.kotlin.fir.java.symbols.FirJavaOverriddenSyntheticPropertySymbol import org.jetbrains.kotlin.fir.java.toConeKotlinTypeProbablyFlexible import org.jetbrains.kotlin.fir.resolve.defaultType +import org.jetbrains.kotlin.fir.resolve.providers.toSymbol import org.jetbrains.kotlin.fir.scopes.* import org.jetbrains.kotlin.fir.scopes.impl.AbstractFirUseSiteMemberScope import org.jetbrains.kotlin.fir.scopes.impl.FirTypeIntersectionScopeContext.ResultOfIntersection @@ -334,8 +336,10 @@ class JavaClassUseSiteMemberScope( private fun FirNamedFunctionSymbol.createSuspendView(): FirSimpleFunction? { val continuationParameter = fir.valueParameters.lastOrNull() ?: return null + val owner = classId.toSymbol(session)?.fir as? FirJavaClass ?: return null val continuationParameterType = continuationParameter .returnTypeRef + .resolveIfJavaType(session, owner.javaTypeParameterStack) .coneTypeSafe() ?.lowerBoundIfFlexible() as? ConeClassLikeType ?: return null diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendCovarianJavaOverride.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendCovarianJavaOverride.fir.kt deleted file mode 100644 index 4c42b3270cb..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendCovarianJavaOverride.fir.kt +++ /dev/null @@ -1,50 +0,0 @@ -// FILE: I.kt - -interface I { - suspend fun foo(x: Int): String -} - -// FILE: JavaClass.java -import kotlin.coroutines.Continuation; -import org.jetbrains.annotations.NotNull; - -public class JavaClass implements I { - @Override - public Object foo(int x, @NotNull Continuation continuation) { - return null; - } -} - -// FILE: main.kt - -import kotlin.coroutines.Continuation -class K1 : JavaClass() - -class K2 : JavaClass() { - override suspend fun foo(x: Int): String = "" -} - -class K3 : JavaClass() { - override fun foo(x: Int, y: Continuation): Any? = null -} - -fun builder(block: suspend () -> Unit) {} - -fun main(x: Continuation) { - JavaClass().foo(5, x) - K1().foo(6, x) - K2().foo(7, x) - K3().foo(8, x) - - builder { - JavaClass().foo(1) - K1().foo(2) - K2().foo(3) - K3().foo(4) - - JavaClass().foo(5, x) - K1().foo(6, x) - K2().foo(7, x) - K3().foo(8, x) - } -} diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendCovarianJavaOverride.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendCovarianJavaOverride.kt index 57f098269d1..13e8661bb00 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendCovarianJavaOverride.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendCovarianJavaOverride.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // FILE: I.kt interface I { diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendJavaOverrides.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendJavaOverrides.fir.kt deleted file mode 100644 index 4c42b3270cb..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendJavaOverrides.fir.kt +++ /dev/null @@ -1,50 +0,0 @@ -// FILE: I.kt - -interface I { - suspend fun foo(x: Int): String -} - -// FILE: JavaClass.java -import kotlin.coroutines.Continuation; -import org.jetbrains.annotations.NotNull; - -public class JavaClass implements I { - @Override - public Object foo(int x, @NotNull Continuation continuation) { - return null; - } -} - -// FILE: main.kt - -import kotlin.coroutines.Continuation -class K1 : JavaClass() - -class K2 : JavaClass() { - override suspend fun foo(x: Int): String = "" -} - -class K3 : JavaClass() { - override fun foo(x: Int, y: Continuation): Any? = null -} - -fun builder(block: suspend () -> Unit) {} - -fun main(x: Continuation) { - JavaClass().foo(5, x) - K1().foo(6, x) - K2().foo(7, x) - K3().foo(8, x) - - builder { - JavaClass().foo(1) - K1().foo(2) - K2().foo(3) - K3().foo(4) - - JavaClass().foo(5, x) - K1().foo(6, x) - K2().foo(7, x) - K3().foo(8, x) - } -} diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendJavaOverrides.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendJavaOverrides.kt index 57f098269d1..13e8661bb00 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendJavaOverrides.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendJavaOverrides.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // FILE: I.kt interface I {