diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index e972e04f848..e735b3bf6ec 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -17498,6 +17498,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt52373.kt"); } + @Test + @TestMetadata("kt53846.kt") + public void testKt53846() throws Exception { + runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt53846.kt"); + } + @Test @TestMetadata("overload.kt") public void testOverload() throws Exception { diff --git a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index e7015528b52..f7331e20d10 100644 --- a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -1605,6 +1605,7 @@ open class RawFirBuilder( isFromEnumClass = owner.hasModifier(ENUM_KEYWORD) } dispatchReceiverType = owner.obtainDispatchReceiverForConstructor() + contextReceivers.addAll(convertContextReceivers(owner.contextReceivers)) symbol = FirConstructorSymbol(callableIdForClassConstructor()) delegatedConstructor = buildOrLazyDelegatedConstructorCall( isThis = isDelegatedCallToThis(), diff --git a/compiler/testData/codegen/box/extensionClasses/constructors.kt b/compiler/testData/codegen/box/extensionClasses/constructors.kt index cefbd68f0fa..306a04671a6 100644 --- a/compiler/testData/codegen/box/extensionClasses/constructors.kt +++ b/compiler/testData/codegen/box/extensionClasses/constructors.kt @@ -1,7 +1,6 @@ // !LANGUAGE: +ContextReceivers // TARGET_BACKEND: JVM_IR -// IGNORE_BACKEND_K2: JVM_IR, JS_IR -// FIR status: context receivers aren't yet supported +// IGNORE_BACKEND_K2: JS_IR // WITH_STDLIB class A(val ok: String) diff --git a/compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt53846.kt b/compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt53846.kt new file mode 100644 index 00000000000..0e4894d9c58 --- /dev/null +++ b/compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt53846.kt @@ -0,0 +1,17 @@ +// !LANGUAGE: +ContextReceivers +// TARGET_BACKEND: JVM_IR + +fun box(): String { + with(Ctx()) { + Foo() + } + return "OK" +} + + +context(Ctx) +class Foo private constructor(i: Int) { + constructor() : this(1) +} + +class Ctx \ No newline at end of file diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 73b01c859ae..78d2b9294da 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -17498,6 +17498,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt52373.kt"); } + @Test + @TestMetadata("kt53846.kt") + public void testKt53846() throws Exception { + runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/kt53846.kt"); + } + @Test @TestMetadata("overload.kt") public void testOverload() throws Exception {