From 050d74a22e350bfbfd4727be2eeba5286bbc970b Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 20 Dec 2023 15:36:11 +0100 Subject: [PATCH] FE: fix PlainJavaClassifierType.isRaw (take inner classes into account) #KT-64090 Fixed --- .../load/java/structure/impl/classFiles/Types.kt | 14 +++++++++++--- ...peFromAnotherModuleWithRawTypedWildcardBound.kt | 1 - 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Types.kt b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Types.kt index 419ef1ddb9c..3cc5867245b 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Types.kt +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Types.kt @@ -39,9 +39,17 @@ internal class PlainJavaClassifierType( private val classifierResolverResult by lazy(LazyThreadSafetyMode.NONE, classifierComputation) override val classifier get() = classifierResolverResult.classifier - override val isRaw - get() = typeArguments.isEmpty() && - (classifierResolverResult.classifier as? JavaClass)?.typeParameters?.isNotEmpty() == true + override val isRaw: Boolean + get() { + if (typeArguments.isNotEmpty()) return false + var javaClass = classifierResolverResult.classifier as? JavaClass + while (javaClass != null) { + if (javaClass.typeParameters.isNotEmpty()) return true + if (javaClass.isStatic) return false + javaClass = javaClass.outerClass + } + return false + } override val classifierQualifiedName: String get() = classifierResolverResult.qualifiedName diff --git a/compiler/testData/codegen/box/javaInterop/javaTypeFromAnotherModuleWithRawTypedWildcardBound.kt b/compiler/testData/codegen/box/javaInterop/javaTypeFromAnotherModuleWithRawTypedWildcardBound.kt index 28af298bbe2..4441185d6ec 100644 --- a/compiler/testData/codegen/box/javaInterop/javaTypeFromAnotherModuleWithRawTypedWildcardBound.kt +++ b/compiler/testData/codegen/box/javaInterop/javaTypeFromAnotherModuleWithRawTypedWildcardBound.kt @@ -1,5 +1,4 @@ // TARGET_BACKEND: JVM_IR -// IGNORE_BACKEND_K2: JVM_IR // ISSUE: KT-64090 // MODULE: lib