FIR: extract initializing of containingClassAttr into fun

This commit is contained in:
Ilya Kirillov
2021-03-20 15:05:08 +01:00
parent 9f0af3faba
commit 93f711e2b8
3 changed files with 11 additions and 18 deletions
@@ -1019,9 +1019,7 @@ class DeclarationsConverter(
null, session, FirDeclarationOrigin.Source, returnType, propertyVisibility null, session, FirDeclarationOrigin.Source, returnType, propertyVisibility
).also { ).also {
it.status = defaultAccessorStatus() it.status = defaultAccessorStatus()
currentDispatchReceiverType()?.lookupTag?.let { lookupTag -> it.initContainingClassAttr()
it.containingClassAttr = lookupTag
}
} }
// NOTE: We still need the setter even for a val property so we can report errors (e.g., VAL_WITH_SETTER). // NOTE: We still need the setter even for a val property so we can report errors (e.g., VAL_WITH_SETTER).
this.setter = convertedAccessors.find { it.isSetter } this.setter = convertedAccessors.find { it.isSetter }
@@ -1030,9 +1028,7 @@ class DeclarationsConverter(
null, session, FirDeclarationOrigin.Source, returnType, propertyVisibility null, session, FirDeclarationOrigin.Source, returnType, propertyVisibility
).also { ).also {
it.status = defaultAccessorStatus() it.status = defaultAccessorStatus()
currentDispatchReceiverType()?.lookupTag?.let { lookupTag -> it.initContainingClassAttr()
it.containingClassAttr = lookupTag
}
} }
} else null } else null
@@ -1176,9 +1172,7 @@ class DeclarationsConverter(
.also { accessor -> .also { accessor ->
accessor.annotations += modifiers.annotations accessor.annotations += modifiers.annotations
accessor.status = status accessor.status = status
currentDispatchReceiverType()?.lookupTag?.let { lookupTag -> accessor.initContainingClassAttr()
accessor.containingClassAttr = lookupTag
}
} }
} }
val target = FirFunctionTarget(labelName = null, isLambda = false) val target = FirFunctionTarget(labelName = null, isLambda = false)
@@ -1207,9 +1201,7 @@ class DeclarationsConverter(
context.firFunctionTargets.removeLast() context.firFunctionTargets.removeLast()
}.also { }.also {
target.bind(it) target.bind(it)
currentDispatchReceiverType()?.lookupTag?.let { lookupTag -> it.initContainingClassAttr()
it.containingClassAttr = lookupTag
}
} }
} }
@@ -357,9 +357,7 @@ open class RawFirBuilder(
this.contractDescription = it this.contractDescription = it
} }
}.also { }.also {
currentDispatchReceiverType()?.lookupTag?.let { lookupTag -> it.initContainingClassAttr()
it.containingClassAttr = lookupTag
}
accessorTarget.bind(it) accessorTarget.bind(it)
this@RawFirBuilder.context.firFunctionTargets.removeLast() this@RawFirBuilder.context.firFunctionTargets.removeLast()
} }
@@ -382,9 +380,7 @@ open class RawFirBuilder(
it.extractAnnotationsFrom(this) it.extractAnnotationsFrom(this)
} }
it.status = status it.status = status
currentDispatchReceiverType()?.lookupTag?.let { lookupTag -> it.initContainingClassAttr()
it.containingClassAttr = lookupTag
}
} }
} }
else -> { else -> {
@@ -1140,6 +1140,11 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
} }
} }
protected fun FirCallableDeclaration<*>.initContainingClassAttr() {
val currentDispatchReceiverType = currentDispatchReceiverType() ?: return
containingClassAttr = currentDispatchReceiverType.lookupTag
}
private fun FirVariable<*>.toQualifiedAccess(): FirQualifiedAccessExpression = buildQualifiedAccessExpression { private fun FirVariable<*>.toQualifiedAccess(): FirQualifiedAccessExpression = buildQualifiedAccessExpression {
calleeReference = buildResolvedNamedReference { calleeReference = buildResolvedNamedReference {
source = this@toQualifiedAccess.source source = this@toQualifiedAccess.source