KT-11765 Analyze code in anonymous initializer of inteface
#KT-11765 Fixed
This commit is contained in:
@@ -525,20 +525,17 @@ public class BodyResolver {
|
|||||||
@NotNull ClassDescriptorWithResolutionScopes classDescriptor
|
@NotNull ClassDescriptorWithResolutionScopes classDescriptor
|
||||||
) {
|
) {
|
||||||
LexicalScope scopeForInitializers = classDescriptor.getScopeForInitializerResolution();
|
LexicalScope scopeForInitializers = classDescriptor.getScopeForInitializerResolution();
|
||||||
if (!classDescriptor.getConstructors().isEmpty()) {
|
KtExpression body = anonymousInitializer.getBody();
|
||||||
KtExpression body = anonymousInitializer.getBody();
|
if (body != null) {
|
||||||
if (body != null) {
|
PreliminaryDeclarationVisitor.Companion.createForDeclaration(
|
||||||
PreliminaryDeclarationVisitor.Companion.createForDeclaration(
|
(KtDeclaration) anonymousInitializer.getParent().getParent(), trace);
|
||||||
(KtDeclaration) anonymousInitializer.getParent().getParent(), trace);
|
expressionTypingServices.getTypeInfo(
|
||||||
expressionTypingServices.getTypeInfo(
|
scopeForInitializers, body, NO_EXPECTED_TYPE, outerDataFlowInfo, trace, /*isStatement = */true
|
||||||
scopeForInitializers, body, NO_EXPECTED_TYPE, outerDataFlowInfo, trace, /*isStatement = */true
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
processModifiersOnInitializer(anonymousInitializer, scopeForInitializers);
|
|
||||||
}
|
}
|
||||||
else {
|
processModifiersOnInitializer(anonymousInitializer, scopeForInitializers);
|
||||||
|
if (classDescriptor.getConstructors().isEmpty()) {
|
||||||
trace.report(ANONYMOUS_INITIALIZER_IN_INTERFACE.on(anonymousInitializer));
|
trace.report(ANONYMOUS_INITIALIZER_IN_INTERFACE.on(anonymousInitializer));
|
||||||
processModifiersOnInitializer(anonymousInitializer, scopeForInitializers);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
interface I {
|
||||||
|
<error>init {
|
||||||
|
val c = 1
|
||||||
|
val g = c
|
||||||
|
}</error>
|
||||||
|
}
|
||||||
@@ -526,6 +526,12 @@ public class PsiCheckerTestGenerated extends AbstractPsiCheckerTest {
|
|||||||
doTest(fileName);
|
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")
|
@TestMetadata("InterfaceDeclarationAsExpression.kt")
|
||||||
public void testInterfaceDeclarationAsExpression() throws Exception {
|
public void testInterfaceDeclarationAsExpression() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/regression/InterfaceDeclarationAsExpression.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/regression/InterfaceDeclarationAsExpression.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user