[FIR] Do not enhance java fields to firProperty
This commit is contained in:
committed by
Mikhail Glukhikh
parent
397aaa189e
commit
6c313895df
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirAbstractCallableMember
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.java.types.FirJavaTypeRef
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class FirJavaField(
|
||||
@@ -21,7 +22,7 @@ class FirJavaField(
|
||||
name: Name,
|
||||
visibility: Visibility,
|
||||
modality: Modality?,
|
||||
returnTypeRef: FirJavaTypeRef,
|
||||
returnTypeRef: FirTypeRef,
|
||||
override val isVar: Boolean,
|
||||
isStatic: Boolean
|
||||
) : FirAbstractCallableMember(
|
||||
|
||||
+12
-14
@@ -59,7 +59,7 @@ class JavaClassEnhancementScope(
|
||||
useSiteScope.processPropertiesByName(name) process@{ original ->
|
||||
|
||||
val field = enhancements.getOrPut(original) { enhance(original, name) }
|
||||
processor(field as ConePropertySymbol)
|
||||
processor(field as ConeVariableSymbol)
|
||||
}
|
||||
|
||||
return super.processPropertiesByName(name, processor)
|
||||
@@ -78,28 +78,26 @@ class JavaClassEnhancementScope(
|
||||
private fun enhance(
|
||||
original: ConeVariableSymbol,
|
||||
name: Name
|
||||
): ConePropertySymbol {
|
||||
): ConeVariableSymbol {
|
||||
when (val firElement = (original as FirBasedSymbol<*>).fir) {
|
||||
is FirJavaField -> {
|
||||
|
||||
if (firElement.returnTypeRef !is FirJavaTypeRef) return original
|
||||
val memberContext = context.copyWithNewDefaultTypeQualifiers(typeQualifierResolver, jsr305State, firElement.annotations)
|
||||
val newReturnTypeRef = enhanceReturnType(firElement, emptyList(), memberContext, null)
|
||||
|
||||
val symbol = FirPropertySymbol(original.callableId)
|
||||
with(firElement) {
|
||||
FirMemberPropertyImpl(
|
||||
this@JavaClassEnhancementScope.session, null, symbol, name,
|
||||
visibility, modality, isExpect, isActual, isOverride,
|
||||
isConst = false, isLateInit = false,
|
||||
receiverTypeRef = null,
|
||||
returnTypeRef = newReturnTypeRef,
|
||||
isVar = isVar, initializer = null,
|
||||
getter = FirDefaultPropertyGetter(this@JavaClassEnhancementScope.session, null, newReturnTypeRef, visibility),
|
||||
setter = FirDefaultPropertySetter(this@JavaClassEnhancementScope.session, null, newReturnTypeRef, visibility),
|
||||
delegate = null
|
||||
FirJavaField(
|
||||
session,
|
||||
symbol,
|
||||
name,
|
||||
visibility,
|
||||
modality,
|
||||
newReturnTypeRef,
|
||||
isVar,
|
||||
isStatic
|
||||
).apply {
|
||||
annotations += firElement.annotations
|
||||
status.isStatic = firElement.isStatic
|
||||
}
|
||||
}
|
||||
return symbol
|
||||
|
||||
@@ -126,7 +126,7 @@ class JavaClassUseSiteScope(
|
||||
}
|
||||
}
|
||||
is FirPropertySymbol -> {
|
||||
val self = fir as FirProperty
|
||||
val self = fir as? FirProperty ?: return null
|
||||
candidates.firstOrNull {
|
||||
val member = (it as FirFunctionSymbol).fir as FirNamedFunction
|
||||
self.modality != Modality.FINAL && isOverriddenPropertyCheck(member, self)
|
||||
|
||||
Reference in New Issue
Block a user