FIR: Add FirTypeScope

^KT-35495 Relates
This commit is contained in:
Denis Zharkov
2020-06-09 14:35:45 +03:00
parent 38922a84f1
commit 0bd2a74542
15 changed files with 96 additions and 29 deletions
@@ -8,7 +8,9 @@ package org.jetbrains.kotlin.fir.scopes.jvm
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltInsSettings
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
@@ -19,7 +21,7 @@ class JvmMappedScope(
private val declaredMemberScope: FirScope,
private val javaMappedClassUseSiteScope: FirScope,
private val signatures: Signatures
) : FirScope() {
) : FirTypeScope() {
override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) {
val whiteListSignatures = signatures.whiteListSignaturesByName[name]
@@ -37,6 +39,14 @@ class JvmMappedScope(
declaredMemberScope.processFunctionsByName(name, processor)
}
// JvmMappedScope is basically used as declaration scope but it's being wrapped into substitution scopes where
// a use-site (FirOverrideAwareScope) is expected
// So, we put here a stub implementation
override fun processOverriddenFunctions(
functionSymbol: FirFunctionSymbol<*>,
processor: (FirFunctionSymbol<*>) -> ProcessorAction
) = ProcessorAction.NONE
override fun processDeclaredConstructors(processor: (FirConstructorSymbol) -> Unit) {
val constructorBlackList = signatures.constructorBlackList
if (constructorBlackList.isNotEmpty()) {
@@ -116,4 +126,4 @@ class JvmMappedScope(
return Signatures(whiteListSignaturesByName, constructorBlackList)
}
}
}
}