From 5d5228cfc59068b4d376ee584c55fadbb16312e0 Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Wed, 3 Feb 2021 20:41:27 +0300 Subject: [PATCH] FIR: Require FirJavaClass in JavaScopeProvider --- .../kotlin/fir/java/JavaScopeProvider.kt | 18 +++++++++--------- .../java/scopes/JavaClassUseSiteMemberScope.kt | 16 +++------------- 2 files changed, 12 insertions(+), 22 deletions(-) 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 3af2ec36321..b1692be052d 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,13 +11,10 @@ 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.scopes.FirScope -import org.jetbrains.kotlin.fir.scopes.FirScopeProvider -import org.jetbrains.kotlin.fir.scopes.FirTypeScope +import org.jetbrains.kotlin.fir.scopes.* import org.jetbrains.kotlin.fir.scopes.impl.* -import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol +import org.jetbrains.kotlin.fir.symbols.StandardClassIds import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol -import org.jetbrains.kotlin.fir.types.ConeClassErrorType import org.jetbrains.kotlin.utils.DFS import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult @@ -54,10 +51,14 @@ class JavaScopeProvider( scopeSession: ScopeSession ): JavaClassMembersEnhancementScope { return scopeSession.getOrBuild(symbol, JAVA_ENHANCEMENT) { + val firJavaClass = symbol.fir + require(firJavaClass is FirJavaClass) { + "${firJavaClass.classId} is expected to be FirJavaClass, but ${firJavaClass::class} found" + } JavaClassMembersEnhancementScope( useSiteSession, symbol, - buildUseSiteMemberScopeWithJavaTypes(symbol.fir, useSiteSession, scopeSession) + buildUseSiteMemberScopeWithJavaTypes(firJavaClass, useSiteSession, scopeSession) ) } } @@ -71,7 +72,7 @@ class JavaScopeProvider( } private fun buildUseSiteMemberScopeWithJavaTypes( - regularClass: FirRegularClass, + regularClass: FirJavaClass, useSiteSession: FirSession, scopeSession: ScopeSession, ): JavaClassUseSiteMemberScope { @@ -93,8 +94,7 @@ class JavaScopeProvider( useSiteSession, JavaOverrideChecker( useSiteSession, - if (regularClass is FirJavaClass) regularClass.javaTypeParameterStack - else JavaTypeParameterStack.EMPTY + regularClass.javaTypeParameterStack ), superTypeScopes, regularClass.defaultType(), 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 545ccce2980..19d7470f1c5 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 @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty -import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack import org.jetbrains.kotlin.fir.java.declarations.* import org.jetbrains.kotlin.fir.resolve.FirJavaSyntheticNamesProvider import org.jetbrains.kotlin.fir.resolve.calls.syntheticNamesProvider @@ -28,18 +27,16 @@ import org.jetbrains.kotlin.load.java.structure.impl.JavaPrimitiveTypeImpl import org.jetbrains.kotlin.name.Name class JavaClassUseSiteMemberScope( - klass: FirRegularClass, + klass: FirJavaClass, session: FirSession, superTypesScope: FirTypeScope, declaredMemberScope: FirScope ) : AbstractFirUseSiteMemberScope( session, - JavaOverrideChecker(session, if (klass is FirJavaClass) klass.javaTypeParameterStack else JavaTypeParameterStack.EMPTY), + JavaOverrideChecker(session, klass.javaTypeParameterStack), superTypesScope, declaredMemberScope ) { - internal val symbol = klass.symbol - internal fun bindOverrides(name: Name) { val overrideCandidates = mutableSetOf() declaredMemberScope.processFunctionsByName(name) { @@ -141,18 +138,11 @@ class JavaClassUseSiteMemberScope( } override fun processPropertiesByName(name: Name, processor: (FirVariableSymbol<*>) -> Unit) { - val getterNames = if (symbol.fir is FirJavaClass) { - FirJavaSyntheticNamesProvider.possibleGetterNamesByPropertyName(name) - } else { - emptyList() - } + val getterNames = FirJavaSyntheticNamesProvider.possibleGetterNamesByPropertyName(name) return processAccessorFunctionsAndPropertiesByName(name, getterNames, processor) } override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { - if (symbol.fir !is FirJavaClass) { - return super.processFunctionsByName(name, processor) - } val potentialPropertyNames = session.syntheticNamesProvider.possiblePropertyNamesByAccessorName(name) val accessors = mutableListOf() val getterName by lazy { session.syntheticNamesProvider.getterNameBySetterName(name) ?: name }