[FIR IDE] Insert ensure resolve into checkers and scopes
This commit is contained in:
@@ -7,10 +7,7 @@ package org.jetbrains.kotlin.fir.java.scopes
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isStatic
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.modality
|
||||
import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
|
||||
@@ -20,6 +17,7 @@ import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirAbstractOverrideChecker
|
||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
||||
import org.jetbrains.kotlin.fir.typeContext
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
@@ -140,6 +138,9 @@ class JavaOverrideChecker internal constructor(
|
||||
overrideCandidate: FirCallableDeclaration,
|
||||
baseDeclaration: FirCallableDeclaration
|
||||
): ConeSubstitutor {
|
||||
overrideCandidate.ensureResolved(FirResolvePhase.TYPES)
|
||||
baseDeclaration.ensureResolved(FirResolvePhase.TYPES)
|
||||
|
||||
if (!overrideCandidate.isTypeParameterDependent() && !baseDeclaration.isTypeParameterDependent()) {
|
||||
return ConeSubstitutor.Empty
|
||||
}
|
||||
@@ -151,6 +152,10 @@ class JavaOverrideChecker internal constructor(
|
||||
|
||||
override fun isOverriddenFunction(overrideCandidate: FirSimpleFunction, baseDeclaration: FirSimpleFunction): Boolean {
|
||||
if (overrideCandidate.isStatic != baseDeclaration.isStatic) return false
|
||||
|
||||
overrideCandidate.ensureResolved(FirResolvePhase.TYPES)
|
||||
baseDeclaration.ensureResolved(FirResolvePhase.TYPES)
|
||||
|
||||
// NB: overrideCandidate is from Java and has no receiver
|
||||
val receiverTypeRef = baseDeclaration.receiverTypeRef
|
||||
val baseParameterTypes = listOfNotNull(receiverTypeRef) + baseDeclaration.valueParameters.map { it.returnTypeRef }
|
||||
@@ -164,6 +169,10 @@ class JavaOverrideChecker internal constructor(
|
||||
|
||||
override fun isOverriddenProperty(overrideCandidate: FirCallableDeclaration, baseDeclaration: FirProperty): Boolean {
|
||||
if (baseDeclaration.modality == Modality.FINAL) return false
|
||||
|
||||
overrideCandidate.ensureResolved(FirResolvePhase.TYPES)
|
||||
baseDeclaration.ensureResolved(FirResolvePhase.TYPES)
|
||||
|
||||
val receiverTypeRef = baseDeclaration.receiverTypeRef
|
||||
return when (overrideCandidate) {
|
||||
is FirSimpleFunction -> {
|
||||
|
||||
Reference in New Issue
Block a user