[FIR] Forbid typeRef-named labels without +ContextReceivers

^KT-63068 Fixed
This commit is contained in:
Nikolay Lunyak
2023-11-16 12:23:50 +02:00
committed by Space Team
parent e7a3cd638e
commit 427c067cd8
4 changed files with 15 additions and 13 deletions
@@ -680,7 +680,7 @@ class BodyResolveContext(
}
val receiverTypeRef = function.receiverParameter?.typeRef
val type = receiverTypeRef?.coneType
val additionalLabelName = type?.labelName()
val additionalLabelName = type?.labelName(holder.session)
withLabelAndReceiverType(function.name, function, type, holder, additionalLabelName, f)
} else {
f()
@@ -688,8 +688,11 @@ class BodyResolveContext(
}
}
private fun ConeKotlinType.labelName(): Name? {
return (this as? ConeLookupTagBasedType)?.lookupTag?.name
private fun ConeKotlinType.labelName(session: FirSession): Name? {
return when {
!session.languageVersionSettings.supportsFeature(LanguageFeature.ContextReceivers) -> null
else -> (this as? ConeLookupTagBasedType)?.lookupTag?.name
}
}
@OptIn(PrivateForInline::class)
@@ -841,7 +844,7 @@ class BodyResolveContext(
}
withContainer(accessor) {
val type = receiverTypeRef?.coneType
val additionalLabelName = type?.labelName()
val additionalLabelName = type?.labelName(holder.session)
withLabelAndReceiverType(property.name, property, type, holder, additionalLabelName, f)
}
}