FIR: Explicitlty separate static and member scopes
For Java, they have rather different semantics considering "overrides" and obtaining functions/properties from supertypes See the Java statics implementation
This commit is contained in:
@@ -36,4 +36,11 @@ abstract class FirTypeScope : FirScope() {
|
||||
|
||||
return baseScope.processOverriddenFunctions(functionSymbol, processor)
|
||||
}
|
||||
|
||||
object Empty : FirTypeScope() {
|
||||
override fun processOverriddenFunctions(
|
||||
functionSymbol: FirFunctionSymbol<*>,
|
||||
processor: (FirFunctionSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction = ProcessorAction.NEXT
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||
|
||||
@@ -16,6 +17,8 @@ abstract class FirCallableSymbol<D : FirCallableDeclaration<D>> : AbstractFirBas
|
||||
get() = null
|
||||
}
|
||||
|
||||
val FirCallableSymbol<*>.isStatic: Boolean get() = (fir as? FirMemberDeclaration)?.status?.isStatic == true
|
||||
|
||||
inline fun <reified E : FirCallableSymbol<*>> E.unwrapSubstitutionOverrides(): E {
|
||||
var current = this
|
||||
while (current.overriddenSymbol != null) {
|
||||
|
||||
Reference in New Issue
Block a user