diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaScopeProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaScopeProvider.kt index e4ef71fc251..0cb17a5b9f1 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaScopeProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaScopeProvider.kt @@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass import org.jetbrains.kotlin.fir.java.scopes.* import org.jetbrains.kotlin.fir.resolve.* -import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.scopes.FirTypeScope @@ -112,7 +111,8 @@ class JavaScopeProvider( if (regularClass is FirJavaClass) regularClass.javaTypeParameterStack else JavaTypeParameterStack.EMPTY ), - superTypeEnhancementScopes + superTypeEnhancementScopes, + regularClass.classId, ), wrappedDeclaredScope ) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/KotlinScopeProvider.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/KotlinScopeProvider.kt index 5fdfb522c6e..d828bb09276 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/KotlinScopeProvider.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/KotlinScopeProvider.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.resolve.* -import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap import org.jetbrains.kotlin.fir.scopes.impl.* @@ -61,7 +60,8 @@ class KotlinScopeProvider( FirClassUseSiteMemberScope( useSiteSession, FirTypeIntersectionScope.prepareIntersectionScope( - useSiteSession, FirStandardOverrideChecker(useSiteSession), scopes + useSiteSession, FirStandardOverrideChecker(useSiteSession), scopes, + klass.classId, ), decoratedDeclaredMemberScope ) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt index a35e0a46b63..295c7c9eecd 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt @@ -16,11 +16,13 @@ import org.jetbrains.kotlin.fir.scopes.FirOverrideChecker import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.FirTypeScope import org.jetbrains.kotlin.fir.scopes.ProcessorAction +import org.jetbrains.kotlin.fir.symbols.CallableId import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.types.ConeFlexibleType import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeTypeCheckerContext import org.jetbrains.kotlin.fir.types.coneTypeSafe +import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.types.AbstractTypeChecker import org.jetbrains.kotlin.types.AbstractTypeCheckerContext @@ -31,6 +33,7 @@ class FirTypeIntersectionScope private constructor( session: FirSession, overrideChecker: FirOverrideChecker, private val scopes: List, + private val derivedClassId: ClassId?, ) : AbstractFirOverrideScope(session, overrideChecker) { private val absentFunctions: MutableSet = mutableSetOf() private val absentProperties: MutableSet = mutableSetOf() @@ -136,7 +139,7 @@ class FirTypeIntersectionScope private constructor( ): FirNamedFunctionSymbol { val newSymbol = FirNamedFunctionSymbol( - mostSpecific.callableId, + CallableId(derivedClassId ?: mostSpecific.callableId.classId!!, mostSpecific.fir.name), mostSpecific.isFakeOverride, mostSpecific, isIntersectionOverride = true @@ -155,7 +158,7 @@ class FirTypeIntersectionScope private constructor( mostSpecificParameter } else { val overriddenWithDefaultParameter = overriddenWithDefault.valueParameters[index] - createValueParameterCopy(mostSpecificParameter, overriddenWithDefaultParameter.defaultValue).apply { + createValueParameterCopy(mostSpecificParameter, null).apply { annotations += mostSpecificParameter.annotations }.build() } @@ -366,10 +369,11 @@ class FirTypeIntersectionScope private constructor( fun prepareIntersectionScope( session: FirSession, overrideChecker: FirOverrideChecker, - scopes: List + scopes: List, + derivedClassId: ClassId? = null, ): FirTypeScope { scopes.singleOrNull()?.let { return it } - return FirTypeIntersectionScope(session, overrideChecker, scopes) + return FirTypeIntersectionScope(session, overrideChecker, scopes, derivedClassId) } } }