Allow class initializer without primary constructor

This commit is contained in:
Denis Zharkov
2015-02-11 10:48:36 +03:00
parent 87193aec2f
commit 80e13d3f70
4 changed files with 19 additions and 1 deletions
@@ -364,7 +364,7 @@ public class BodyResolver {
@NotNull ClassDescriptorWithResolutionScopes classDescriptor
) {
JetScope scopeForInitializers = classDescriptor.getScopeForInitializerResolution();
if (classDescriptor.getUnsubstitutedPrimaryConstructor() != null) {
if (!classDescriptor.getConstructors().isEmpty()) {
expressionTypingServices.getType(scopeForInitializers, anonymousInitializer.getBody(), NO_EXPECTED_TYPE, c.getOuterDataFlowInfo(), trace);
processModifiersOnInitializer(anonymousInitializer, scopeForInitializers);
}
@@ -0,0 +1,4 @@
class A {
constructor() {}
init {}
}
@@ -0,0 +1,8 @@
package
internal final class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -10403,6 +10403,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest(fileName);
}
@TestMetadata("classInitializersWithoutPrimary.kt")
public void testClassInitializersWithoutPrimary() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/classInitializersWithoutPrimary.kt");
doTest(fileName);
}
@TestMetadata("constructorCallType.kt")
public void testConstructorCallType() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/constructorCallType.kt");