diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt index 8b9c696e865..e5a7d2e49d4 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt @@ -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) } } diff --git a/compiler/testData/diagnostics/tests/extensions/contextReceivers/labelsFromClassNameForbidden.fir.kt b/compiler/testData/diagnostics/tests/extensions/contextReceivers/labelsFromClassNameForbidden.fir.kt index 04e29e5a20d..53d29240e91 100644 --- a/compiler/testData/diagnostics/tests/extensions/contextReceivers/labelsFromClassNameForbidden.fir.kt +++ b/compiler/testData/diagnostics/tests/extensions/contextReceivers/labelsFromClassNameForbidden.fir.kt @@ -1,12 +1,12 @@ // ISSUE: KT-63068 fun List.f() { - this@List.size + this@List.size } context(String) fun Int.f() { this@String.length - this@Int.toDouble() + this@Int.toDouble() } context(String) diff --git a/compiler/testData/diagnostics/tests/extensions/contextReceivers/noLabelsByClassName.fir.kt b/compiler/testData/diagnostics/tests/extensions/contextReceivers/noLabelsByClassName.fir.kt index 70e47813822..0fa5f9c61b9 100644 --- a/compiler/testData/diagnostics/tests/extensions/contextReceivers/noLabelsByClassName.fir.kt +++ b/compiler/testData/diagnostics/tests/extensions/contextReceivers/noLabelsByClassName.fir.kt @@ -1,28 +1,28 @@ // ISSUE: KT-63068 fun Int.f() { - this@Int + this@Int } var Int.p: Int get() { - this@Int + this@Int return@p 42 } set(value) { - this@Int + this@Int } class X { var Int.p: Int get() { - this@Int + this@Int return@p 42 } set(value) { - this@Int + this@Int } fun Int.f() { - this@Int + this@Int } } diff --git a/js/js.translator/testData/box/closure/closureThisAndReceiver.kt b/js/js.translator/testData/box/closure/closureThisAndReceiver.kt index f107f406b74..0a0b5c90169 100644 --- a/js/js.translator/testData/box/closure/closureThisAndReceiver.kt +++ b/js/js.translator/testData/box/closure/closureThisAndReceiver.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_K2: JS_IR, JS_IR_ES6 // EXPECTED_REACHABLE_NODES: 1292 package foo