diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineClassDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineClassDeclarationChecker.kt index da45c73392b..f6266b6af59 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineClassDeclarationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineClassDeclarationChecker.kt @@ -218,7 +218,8 @@ object FirInlineClassDeclarationChecker : FirRegularClassChecker() { private fun FirRegularClass.isSubtypeOfCloneable(session: FirSession): Boolean { if (classId.isCloneableId()) return true - return lookupSuperTypes(this, lookupInterfaces = true, deep = true, session).any { superType -> + return lookupSuperTypes(this, lookupInterfaces = true, deep = true, session, substituteTypes = false).any { superType -> + // Note: We check just classId here, so type substitution isn't needed ^ (we aren't interested in type arguments) (superType as? ConeClassLikeType)?.fullyExpandedType(session)?.lookupTag?.classId?.isCloneableId() == true } } diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt index a6d79f134cf..3a81390cf5e 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt @@ -237,7 +237,8 @@ abstract class FirVisibilityChecker : FirSessionComponent { private fun FirClass.isSubClass(ownerLookupTag: ConeClassLikeLookupTag, session: FirSession): Boolean { if (classId.isSame(ownerLookupTag.classId)) return true - return lookupSuperTypes(this, lookupInterfaces = true, deep = true, session).any { superType -> + return lookupSuperTypes(this, lookupInterfaces = true, deep = true, session, substituteTypes = false).any { superType -> + // Note: We check just classId here, so type substitution isn't needed ^ (we aren't interested in type arguments) (superType as? ConeClassLikeType)?.fullyExpandedType(session)?.lookupTag?.classId?.isSame(ownerLookupTag.classId) == true } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt index ba453c862b2..9242d12263f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt @@ -251,7 +251,8 @@ private fun FirRegularClass.getSingleAbstractMethodOrNull( private fun FirRegularClass.computeSamCandidateNames(session: FirSession): Set { val classes = - lookupSuperTypes(this, lookupInterfaces = true, deep = true, useSiteSession = session) + // Note: we search only for names in this function, so substitution is not needed V + lookupSuperTypes(this, lookupInterfaces = true, deep = true, useSiteSession = session, substituteTypes = false) .mapNotNullTo(mutableListOf(this)) { (session.symbolProvider.getSymbolByLookupTag(it.lookupTag) as? FirRegularClassSymbol)?.fir }