FIR: make JavaClassEnhancementScope use-site, get rid of scope providers
Related to KT-29937
This commit is contained in:
@@ -6,8 +6,10 @@
|
||||
package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||
@@ -19,6 +21,8 @@ interface FirClass : FirDeclarationContainer, FirStatement, FirAnnotationContain
|
||||
|
||||
val classKind: ClassKind
|
||||
|
||||
fun buildClassSpecificUseSiteScope(useSiteSession: FirSession): FirScope? = null
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitClass(this, data)
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. 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.scopes
|
||||
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassifierSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConePropertySymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
interface FirScope {
|
||||
fun processClassifiersByName(
|
||||
name: Name,
|
||||
position: FirPosition,
|
||||
processor: (ConeClassifierSymbol) -> Boolean
|
||||
): Boolean = true
|
||||
|
||||
fun processFunctionsByName(
|
||||
name: Name,
|
||||
processor: (ConeFunctionSymbol) -> ProcessorAction
|
||||
): ProcessorAction = NEXT
|
||||
|
||||
fun processPropertiesByName(
|
||||
name: Name,
|
||||
processor: (ConePropertySymbol) -> ProcessorAction
|
||||
): ProcessorAction = NEXT
|
||||
}
|
||||
|
||||
enum class FirPosition(val allowTypeParameters: Boolean = true) {
|
||||
SUPER_TYPE_OR_EXPANSION(allowTypeParameters = false),
|
||||
OTHER
|
||||
}
|
||||
|
||||
enum class ProcessorAction {
|
||||
STOP,
|
||||
NEXT;
|
||||
|
||||
operator fun not(): Boolean {
|
||||
return when (this) {
|
||||
STOP -> true
|
||||
NEXT -> false
|
||||
}
|
||||
}
|
||||
|
||||
fun next() = this == NEXT
|
||||
}
|
||||
Reference in New Issue
Block a user