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
).also {
it.status = defaultAccessorStatus()
currentDispatchReceiverType()?.lookupTag?.let { lookupTag ->
it.containingClassAttr = lookupTag
}
it.initContainingClassAttr()
}
// 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 }
@@ -1030,9 +1028,7 @@ class DeclarationsConverter(
null, session, FirDeclarationOrigin.Source, returnType, propertyVisibility
).also {
it.status = defaultAccessorStatus()
currentDispatchReceiverType()?.lookupTag?.let { lookupTag ->
it.containingClassAttr = lookupTag
}
it.initContainingClassAttr()
}
} else null
@@ -1176,9 +1172,7 @@ class DeclarationsConverter(
.also { accessor ->
accessor.annotations += modifiers.annotations
accessor.status = status
currentDispatchReceiverType()?.lookupTag?.let { lookupTag ->
accessor.containingClassAttr = lookupTag
}
accessor.initContainingClassAttr()
}
}
val target = FirFunctionTarget(labelName = null, isLambda = false)
@@ -1207,9 +1201,7 @@ class DeclarationsConverter(
context.firFunctionTargets.removeLast()
}.also {
target.bind(it)
currentDispatchReceiverType()?.lookupTag?.let { lookupTag ->
it.containingClassAttr = lookupTag
}
it.initContainingClassAttr()
}
}
@@ -357,9 +357,7 @@ open class RawFirBuilder(
this.contractDescription = it
}
}.also {
currentDispatchReceiverType()?.lookupTag?.let { lookupTag ->
it.containingClassAttr = lookupTag
}
it.initContainingClassAttr()
accessorTarget.bind(it)
this@RawFirBuilder.context.firFunctionTargets.removeLast()
}
@@ -382,9 +380,7 @@ open class RawFirBuilder(
it.extractAnnotationsFrom(this)
}
it.status = status
currentDispatchReceiverType()?.lookupTag?.let { lookupTag ->
it.containingClassAttr = lookupTag
}
it.initContainingClassAttr()
}
}
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 {
calleeReference = buildResolvedNamedReference {
source = this@toQualifiedAccess.source