diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/BodyResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/BodyResolver.java index 5c68f8f2440..c2fb64a963d 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/BodyResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/BodyResolver.java @@ -525,20 +525,17 @@ public class BodyResolver { @NotNull ClassDescriptorWithResolutionScopes classDescriptor ) { LexicalScope scopeForInitializers = classDescriptor.getScopeForInitializerResolution(); - if (!classDescriptor.getConstructors().isEmpty()) { - KtExpression body = anonymousInitializer.getBody(); - if (body != null) { - PreliminaryDeclarationVisitor.Companion.createForDeclaration( - (KtDeclaration) anonymousInitializer.getParent().getParent(), trace); - expressionTypingServices.getTypeInfo( - scopeForInitializers, body, NO_EXPECTED_TYPE, outerDataFlowInfo, trace, /*isStatement = */true - ); - } - processModifiersOnInitializer(anonymousInitializer, scopeForInitializers); + KtExpression body = anonymousInitializer.getBody(); + if (body != null) { + PreliminaryDeclarationVisitor.Companion.createForDeclaration( + (KtDeclaration) anonymousInitializer.getParent().getParent(), trace); + expressionTypingServices.getTypeInfo( + scopeForInitializers, body, NO_EXPECTED_TYPE, outerDataFlowInfo, trace, /*isStatement = */true + ); } - else { + processModifiersOnInitializer(anonymousInitializer, scopeForInitializers); + if (classDescriptor.getConstructors().isEmpty()) { trace.report(ANONYMOUS_INITIALIZER_IN_INTERFACE.on(anonymousInitializer)); - processModifiersOnInitializer(anonymousInitializer, scopeForInitializers); } } diff --git a/idea/testData/checker/regression/InitializerInInterface.kt b/idea/testData/checker/regression/InitializerInInterface.kt new file mode 100644 index 00000000000..c2ad3ee9ba8 --- /dev/null +++ b/idea/testData/checker/regression/InitializerInInterface.kt @@ -0,0 +1,6 @@ +interface I { + init { + val c = 1 + val g = c + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java b/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java index f347667b1ff..8f9309efee0 100644 --- a/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java @@ -526,6 +526,12 @@ public class PsiCheckerTestGenerated extends AbstractPsiCheckerTest { doTest(fileName); } + @TestMetadata("InitializerInInterface.kt") + public void testInitializerInInterface() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/regression/InitializerInInterface.kt"); + doTest(fileName); + } + @TestMetadata("InterfaceDeclarationAsExpression.kt") public void testInterfaceDeclarationAsExpression() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/regression/InterfaceDeclarationAsExpression.kt");