From 91fce215d2aa1d70e836431e53cd41d4c0d33af3 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Wed, 4 Dec 2019 14:45:42 +0300 Subject: [PATCH] FIR: Simplify super type scopes related code - Get rid of unnecessary subclass - Use more abstract type where possible --- .../kotlin/fir/java/JavaSymbolProvider.kt | 16 ++++++++++--- .../scopes/JavaClassUseSiteMemberScope.kt | 8 ++++--- .../fir/java/scopes/JavaSuperTypeScope.kt | 23 ------------------- .../impl/AbstractFirUseSiteMemberScope.kt | 2 +- .../scopes/impl/FirClassUseSiteMemberScope.kt | 2 +- .../fir/scopes/impl/FirSuperTypeScope.kt | 2 +- 6 files changed, 21 insertions(+), 32 deletions(-) delete mode 100644 compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaSuperTypeScope.kt diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt index 03849845b7f..5e577675aab 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt @@ -11,8 +11,11 @@ import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.* +import org.jetbrains.kotlin.fir.declarations.FirRegularClass +import org.jetbrains.kotlin.fir.declarations.FirTypeParameter +import org.jetbrains.kotlin.fir.declarations.addDefaultBoundIfNecessary import org.jetbrains.kotlin.fir.declarations.impl.FirTypeParameterImpl +import org.jetbrains.kotlin.fir.declarations.visibility import org.jetbrains.kotlin.fir.generateValueOfFunction import org.jetbrains.kotlin.fir.generateValuesFunction import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass @@ -21,9 +24,10 @@ import org.jetbrains.kotlin.fir.java.declarations.FirJavaField import org.jetbrains.kotlin.fir.java.declarations.FirJavaMethod import org.jetbrains.kotlin.fir.java.scopes.JavaClassEnhancementScope import org.jetbrains.kotlin.fir.java.scopes.JavaClassUseSiteMemberScope -import org.jetbrains.kotlin.fir.java.scopes.JavaSuperTypeScope +import org.jetbrains.kotlin.fir.java.scopes.JavaOverrideChecker import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.scopes.FirScope +import org.jetbrains.kotlin.fir.scopes.impl.FirSuperTypeScope import org.jetbrains.kotlin.fir.scopes.impl.declaredMemberScope import org.jetbrains.kotlin.fir.symbols.CallableId import org.jetbrains.kotlin.fir.symbols.impl.* @@ -117,7 +121,13 @@ class JavaSymbolProvider( } JavaClassUseSiteMemberScope( regularClass, useSiteSession, - JavaSuperTypeScope(regularClass, useSiteSession, superTypeEnhancementScopes), wrappedDeclaredScope + FirSuperTypeScope( + useSiteSession, + JavaOverrideChecker( + useSiteSession, if (regularClass is FirJavaClass) regularClass + .javaTypeParameterStack else JavaTypeParameterStack.EMPTY), + superTypeEnhancementScopes + ), wrappedDeclaredScope ) } } 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 ba5e22dfa94..a6bb8ec3283 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 @@ -20,16 +20,18 @@ import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT import org.jetbrains.kotlin.fir.scopes.ProcessorAction.STOP import org.jetbrains.kotlin.fir.scopes.impl.AbstractFirUseSiteMemberScope -import org.jetbrains.kotlin.fir.scopes.impl.FirSuperTypeScope import org.jetbrains.kotlin.fir.symbols.CallableId -import org.jetbrains.kotlin.fir.symbols.impl.* +import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.types.jvm.FirJavaTypeRef import org.jetbrains.kotlin.name.Name class JavaClassUseSiteMemberScope( klass: FirRegularClass, session: FirSession, - superTypesScope: FirSuperTypeScope, + superTypesScope: FirScope, declaredMemberScope: FirScope ) : AbstractFirUseSiteMemberScope( session, diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaSuperTypeScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaSuperTypeScope.kt deleted file mode 100644 index 5c61813a309..00000000000 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaSuperTypeScope.kt +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.java.scopes - -import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirRegularClass -import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack -import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass -import org.jetbrains.kotlin.fir.scopes.FirScope -import org.jetbrains.kotlin.fir.scopes.impl.FirSuperTypeScope - -class JavaSuperTypeScope( - klass: FirRegularClass, - session: FirSession, - scopes: List -) : FirSuperTypeScope( - session, - JavaOverrideChecker(session, if (klass is FirJavaClass) klass.javaTypeParameterStack else JavaTypeParameterStack.EMPTY), - scopes -) \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt index c751db65242..8dd9fa68847 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.name.Name abstract class AbstractFirUseSiteMemberScope( session: FirSession, overrideChecker: FirOverrideChecker, - protected val superTypesScope: FirSuperTypeScope, + protected val superTypesScope: FirScope, protected val declaredMemberScope: FirScope ) : AbstractFirOverrideScope(session, overrideChecker) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteMemberScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteMemberScope.kt index e41dfa2022d..00533b87721 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteMemberScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteMemberScope.kt @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.name.Name class FirClassUseSiteMemberScope( session: FirSession, - superTypesScope: FirSuperTypeScope, + superTypesScope: FirScope, declaredMemberScope: FirScope ) : AbstractFirUseSiteMemberScope(session, FirStandardOverrideChecker(session), superTypesScope, declaredMemberScope) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirSuperTypeScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirSuperTypeScope.kt index 0e07485a94e..cf76b3c973d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirSuperTypeScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirSuperTypeScope.kt @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol import org.jetbrains.kotlin.name.Name -open class FirSuperTypeScope( +class FirSuperTypeScope( session: FirSession, overrideChecker: FirOverrideChecker, val scopes: List