diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ClassGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ClassGenerator.kt index f215a5272b6..855c7d96a78 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ClassGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ClassGenerator.kt @@ -204,7 +204,9 @@ internal class ClassGenerator( val delegateType = if (context.configuration.generateBodies) { getTypeInferredByFrontendOrFail(ktDelegateExpression) } else { - getTypeInferredByFrontend(ktDelegateExpression) ?: createErrorType(ErrorTypeKind.UNRESOLVED_TYPE, ktDelegateExpression.text) + getTypeInferredByFrontend(ktDelegateExpression).takeUnless { + it?.constructor?.declarationDescriptor?.let(DescriptorUtils::isLocal) == true + } ?: createErrorType(ErrorTypeKind.UNRESOLVED_TYPE, ktDelegateExpression.text) } val superType = getOrFail(BindingContext.TYPE, ktEntry.typeReference!!) diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/delegationToAnonymousObject.kt b/plugins/kapt3/kapt3-compiler/testData/converter/delegationToAnonymousObject.kt new file mode 100644 index 00000000000..5f349495853 --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/delegationToAnonymousObject.kt @@ -0,0 +1,3 @@ +interface I + +class C : I by (object : I {}) diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/delegationToAnonymousObject.txt b/plugins/kapt3/kapt3-compiler/testData/converter/delegationToAnonymousObject.txt new file mode 100644 index 00000000000..55480f9ebb9 --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/delegationToAnonymousObject.txt @@ -0,0 +1,14 @@ +@kotlin.Metadata() +public final class C implements I { + + public C() { + super(); + } +} + +//////////////////// + + +@kotlin.Metadata() +public abstract interface I { +} diff --git a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/ClassFileToSourceStubConverterTestGenerated.java b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/ClassFileToSourceStubConverterTestGenerated.java index 8a83b04b400..52855bb194b 100644 --- a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/ClassFileToSourceStubConverterTestGenerated.java +++ b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/ClassFileToSourceStubConverterTestGenerated.java @@ -175,6 +175,12 @@ public class ClassFileToSourceStubConverterTestGenerated extends AbstractClassFi runTest("plugins/kapt3/kapt3-compiler/testData/converter/delegationAndCompanionObject.kt"); } + @Test + @TestMetadata("delegationToAnonymousObject.kt") + public void testDelegationToAnonymousObject() throws Exception { + runTest("plugins/kapt3/kapt3-compiler/testData/converter/delegationToAnonymousObject.kt"); + } + @Test @TestMetadata("deprecated.kt") public void testDeprecated() throws Exception { diff --git a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrClassFileToSourceStubConverterTestGenerated.java b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrClassFileToSourceStubConverterTestGenerated.java index 2ea3229bd85..72262727629 100644 --- a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrClassFileToSourceStubConverterTestGenerated.java +++ b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrClassFileToSourceStubConverterTestGenerated.java @@ -175,6 +175,12 @@ public class IrClassFileToSourceStubConverterTestGenerated extends AbstractIrCla runTest("plugins/kapt3/kapt3-compiler/testData/converter/delegationAndCompanionObject.kt"); } + @Test + @TestMetadata("delegationToAnonymousObject.kt") + public void testDelegationToAnonymousObject() throws Exception { + runTest("plugins/kapt3/kapt3-compiler/testData/converter/delegationToAnonymousObject.kt"); + } + @Test @TestMetadata("deprecated.kt") public void testDeprecated() throws Exception {