diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt index 610178c5f6c..aaff4c2783b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2015 JetBrains s.r.o. + * Copyright 2010-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -338,11 +338,8 @@ open class LazyClassMemberScope( val hasPrimaryConstructor = classOrObject.hasExplicitPrimaryConstructor() if (!hasPrimaryConstructor) { - when (thisDescriptor.kind) { - ClassKind.INTERFACE -> return null - ClassKind.OBJECT, ClassKind.ENUM_CLASS -> if (thisDescriptor.isExpect) return null - else -> {} - } + if (thisDescriptor.isExpect && !DescriptorUtils.isEnumEntry(thisDescriptor)) return null + if (DescriptorUtils.isInterface(thisDescriptor)) return null } if (DescriptorUtils.canHaveDeclaredConstructors(thisDescriptor) || hasPrimaryConstructor) { diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/tower/ErrorCandidateFactory.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/tower/ErrorCandidateFactory.kt index cd6b2bc81a1..d8a219be215 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/tower/ErrorCandidateFactory.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/tower/ErrorCandidateFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. + * Copyright 2010-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,6 +30,7 @@ enum class WrongResolutionToClassifier(val message: (Name) -> String) { TYPE_PARAMETER_AS_FUNCTION({ "Type parameter $it cannot be called as function" }), INTERFACE_AS_VALUE({ "Interface $it does not have companion object" }), INTERFACE_AS_FUNCTION({ "Interface $it does not have constructors" }), + EXPECT_CLASS_AS_FUNCTION({ "Expected class $it does not have default constructor" }), CLASS_AS_VALUE({ "Class $it does not have companion object" }), INNER_CLASS_CONSTRUCTOR_NO_RECEIVER({ "Constructor of inner class $it can be called only with receiver of containing class" }), OBJECT_AS_FUNCTION({ "Function 'invoke()' is not found in object $it" }) @@ -105,6 +106,7 @@ private fun ErrorCandidateContext.getWrongResolutionToClassifier(classifier: Cla ClassKind.CLASS -> when { asFunction && explicitReceiver is QualifierReceiver? && classifier.isInner -> INNER_CLASS_CONSTRUCTOR_NO_RECEIVER + asFunction && classifier.isExpect -> EXPECT_CLASS_AS_FUNCTION !asFunction -> CLASS_AS_VALUE else -> null } diff --git a/compiler/testData/diagnostics/tests/multiplatform/deprecated/header.txt b/compiler/testData/diagnostics/tests/multiplatform/deprecated/header.txt index 79df028807f..6e9fad39a03 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/deprecated/header.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/deprecated/header.txt @@ -21,7 +21,6 @@ public final expect enum class E : kotlin.Enum { } public final expect class My { - public constructor My() 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 diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDefaultValuesInAnnotationViaTypealias.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDefaultValuesInAnnotationViaTypealias.kt index 5d861a8e0fa..935e63f83ef 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDefaultValuesInAnnotationViaTypealias.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDefaultValuesInAnnotationViaTypealias.kt @@ -6,6 +6,13 @@ expect annotation class Foo1 expect annotation class Foo2 expect annotation class Foo3 expect annotation class Foo4 +expect annotation class Foo5() + +@Foo1 +fun foo() {} + +@Foo5 +fun bar() {} // MODULE: m2-jvm(m1-common) @@ -26,8 +33,10 @@ public @interface Bar2 { actual typealias Foo1 = Bar1 -actual typealias Foo4 = Bar2 +actual typealias Foo4 = Bar2 actual annotation class Foo2(val p: String = "default") -actual annotation class Foo3(val a: String = "a", val b: String = "b") \ No newline at end of file +actual annotation class Foo3(val a: String = "a", val b: String = "b") + +actual annotation class Foo5 \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDefaultValuesInAnnotationViaTypealias.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDefaultValuesInAnnotationViaTypealias.txt index 048ecc935f6..b34caf6e9c5 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDefaultValuesInAnnotationViaTypealias.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDefaultValuesInAnnotationViaTypealias.txt @@ -1,29 +1,35 @@ // -- Module: -- package +@Foo5 public fun bar(): kotlin.Unit +@Foo1 public fun foo(): kotlin.Unit + public final expect annotation class Foo1 : kotlin.Annotation { - public constructor Foo1() 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 } public final expect annotation class Foo2 : kotlin.Annotation { - public constructor Foo2() 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 } public final expect annotation class Foo3 : kotlin.Annotation { - public constructor Foo3() 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 } public final expect annotation class Foo4 : kotlin.Annotation { - public constructor Foo4() + 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 +} + +public final expect annotation class Foo5 : kotlin.Annotation { + public constructor Foo5() 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 @@ -33,6 +39,9 @@ public final expect annotation class Foo4 : kotlin.Annotation { // -- Module: -- package +@Foo5 public fun bar(): kotlin.Unit +@Foo1 /* = Bar1 */ public fun foo(): kotlin.Unit + public final annotation class Bar1 : kotlin.Annotation { public constructor Bar1(/*0*/ value: kotlin.String = ...) public final val value: kotlin.String @@ -66,5 +75,12 @@ public final actual annotation class Foo3 : kotlin.Annotation { public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } + +public final actual annotation class Foo5 : kotlin.Annotation { + public constructor Foo5() + 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 +} public typealias Foo1 = Bar1 public typealias Foo4 = Bar2 diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualMissing.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualMissing.txt index 8325a9782fb..fad757f907b 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualMissing.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualMissing.txt @@ -2,7 +2,6 @@ package public final expect class A { - public constructor A() public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public final expect fun foo(): kotlin.Unit public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/classKinds.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/classKinds.txt index f0cd22d8ac6..7901920cacb 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/classKinds.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/classKinds.txt @@ -10,7 +10,6 @@ public final expect annotation class Anno : kotlin.Annotation { } public final expect class Class { - public constructor Class() 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 diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/expectClassWithoutConstructor.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/expectClassWithoutConstructor.kt new file mode 100644 index 00000000000..96b17584c39 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/expectClassWithoutConstructor.kt @@ -0,0 +1,25 @@ +// !LANGUAGE: +MultiPlatformProjects +// MODULE: m1-common +// FILE: common.kt + +expect class Foo +expect class Bar() +expect class Baz constructor() +expect class FooBar { + constructor() +} + +fun test() { + Foo() + Bar() + Baz() + FooBar() +} + +// MODULE: m2-jvm(m1-common) +// FILE: jvm.kt + +actual class Foo +actual class Bar +actual class Baz +actual class FooBar \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/expectClassWithoutConstructor.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/expectClassWithoutConstructor.txt new file mode 100644 index 00000000000..c47a99b50a8 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/expectClassWithoutConstructor.txt @@ -0,0 +1,65 @@ +// -- Module: -- +package + +public fun test(): kotlin.Unit + +public final expect class Bar { + public constructor Bar() + 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 +} + +public final expect class Baz { + public constructor Baz() + 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 +} + +public final expect class Foo { + 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 +} + +public final expect class FooBar { + public constructor FooBar() + 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 +} + + +// -- Module: -- +package + +public fun test(): kotlin.Unit + +public final actual class Bar { + public constructor Bar() + 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 +} + +public final actual class Baz { + public constructor Baz() + 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 +} + +public final actual class Foo { + public constructor Foo() + 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 +} + +public final actual class FooBar { + public constructor FooBar() + 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 +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/extraHeaderOnMembers.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/extraHeaderOnMembers.txt index 4769b0d0417..eec55cf2bab 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/extraHeaderOnMembers.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/extraHeaderOnMembers.txt @@ -2,7 +2,6 @@ package public final expect class H { - public constructor H() public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public final expect fun foo(): kotlin.Unit public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/genericClassImplTypeAlias.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/genericClassImplTypeAlias.txt index 7027c967f17..9de137b8c19 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/genericClassImplTypeAlias.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/genericClassImplTypeAlias.txt @@ -2,7 +2,6 @@ package public final expect class C1 { - public constructor C1() 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 diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/headerClassMember.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/headerClassMember.txt index c4905b14e98..a49a2fa1ebd 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/headerClassMember.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/headerClassMember.txt @@ -2,7 +2,6 @@ package public final expect class Foo { - public constructor Foo() public expect final val foo: kotlin.String public final expect fun bar(/*0*/ x: kotlin.Int): kotlin.Int public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/implOpenClass.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/implOpenClass.txt index fc1ef86aa6b..d3e6ab1ee58 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/implOpenClass.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/implOpenClass.txt @@ -4,7 +4,6 @@ package public expect fun getFoo(): Foo public final expect class Foo { - public constructor Foo() 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 diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/memberPropertyKinds.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/memberPropertyKinds.txt index e0c37021e86..3bd5b00203e 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/memberPropertyKinds.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/memberPropertyKinds.txt @@ -9,7 +9,6 @@ public object Delegate { } public final expect class Foo { - public constructor Foo() public expect final val backingFieldVal: kotlin.String = "no" public expect final var backingFieldVar: kotlin.String public expect final val customAccessorVal: kotlin.String diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/nestedClasses.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/nestedClasses.txt index be81567ef9c..6563d7cac2b 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/nestedClasses.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/nestedClasses.txt @@ -2,7 +2,6 @@ package public final expect class OuterClass { - public constructor OuterClass() 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 @@ -14,7 +13,6 @@ public final expect class OuterClass { } public final expect inner class InnerClass { - public constructor InnerClass() public expect final val p: kotlin.String public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public final expect fun f(/*0*/ x: kotlin.Int): kotlin.Unit @@ -23,19 +21,16 @@ public final expect class OuterClass { } public final expect class NestedClass { - public constructor NestedClass() 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 public final expect class DeepNested { - public constructor DeepNested() 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 public final expect class Another { - public constructor Another() public expect final val p: kotlin.Int public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public final expect fun f(/*0*/ s: kotlin.String): kotlin.Unit @@ -47,7 +42,6 @@ public final expect class OuterClass { } public final expect class OuterClassWithNamedCompanion { - public constructor OuterClassWithNamedCompanion() 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 diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/nestedClassesWithErrors.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/nestedClassesWithErrors.txt index 58b5bb5f34d..ea60dabe8ca 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/nestedClassesWithErrors.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/nestedClassesWithErrors.txt @@ -2,13 +2,11 @@ package public final expect class B { - public constructor B() 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 public final expect class N { - public constructor N() public final expect fun body(): kotlin.Unit public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public final expect fun extraHeader(): kotlin.Unit @@ -18,7 +16,6 @@ public final expect class B { } public final expect class C { - public constructor C() 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 @@ -38,14 +35,12 @@ public final expect class C { } public final expect inner class I { - public constructor I() 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 } public final expect class N { - public constructor N() 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 @@ -53,13 +48,11 @@ public final expect class C { } public final expect class D { - public constructor D() 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 public final expect class N { - public constructor N() 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 @@ -67,13 +60,11 @@ public final expect class D { } public final expect class E { - public constructor E() 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 public final expect class N { - public constructor N() 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 diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/noImplKeywordOnMember.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/noImplKeywordOnMember.txt index 36d9992220b..dfd485c4a13 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/noImplKeywordOnMember.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/noImplKeywordOnMember.txt @@ -2,7 +2,6 @@ package public final expect class Foo { - public constructor Foo() public final expect fun bar(): kotlin.String public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/simpleHeaderClass.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/simpleHeaderClass.txt index 8ce30f1bfff..19464093d2e 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/simpleHeaderClass.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/simpleHeaderClass.txt @@ -2,7 +2,6 @@ package public final expect class Foo { - public constructor Foo() 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 diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/superClass.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/superClass.kt index a43351ba9b3..61548794f20 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/superClass.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/superClass.kt @@ -8,7 +8,7 @@ interface J expect class Foo : I, C, J -expect class Bar : C() +expect class Bar : C() // MODULE: m2-jvm(m1-common) // FILE: jvm.kt diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/superClass.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/superClass.txt index dabb0b756ca..fe0379fe4f1 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/superClass.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/superClass.txt @@ -2,7 +2,6 @@ package public final expect class Bar : C { - public constructor Bar() 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 @@ -16,7 +15,6 @@ public open class C { } public final expect class Foo : I, C, J { - public constructor Foo() public open override /*3*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*3*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*3*/ /*fake_override*/ fun toString(): kotlin.String diff --git a/compiler/testData/diagnostics/tests/multiplatform/implDelegatedMember.txt b/compiler/testData/diagnostics/tests/multiplatform/implDelegatedMember.txt index 6b5400eb41a..5bd03202138 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/implDelegatedMember.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/implDelegatedMember.txt @@ -2,7 +2,6 @@ package public open expect class Foo { - public constructor Foo() public open expect fun bar(): kotlin.String public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int diff --git a/compiler/testData/diagnostics/tests/multiplatform/implFakeOverride.txt b/compiler/testData/diagnostics/tests/multiplatform/implFakeOverride.txt index 48f8386c981..2a9c2ad4988 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/implFakeOverride.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/implFakeOverride.txt @@ -2,7 +2,6 @@ package public final expect class Foo { - public constructor Foo() public final expect fun bar(): kotlin.String public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int diff --git a/compiler/testData/diagnostics/tests/multiplatform/java/parameterNames.txt b/compiler/testData/diagnostics/tests/multiplatform/java/parameterNames.txt index 84ea9f1b764..d83c6f06e8e 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/java/parameterNames.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/java/parameterNames.txt @@ -2,7 +2,6 @@ package public final expect class Foo { - public constructor Foo() public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public final expect fun foo(/*0*/ i: kotlin.Int, /*1*/ d: kotlin.Double, /*2*/ f: kotlin.Float): kotlin.Unit public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int diff --git a/compiler/testData/diagnostics/tests/multiplatform/modifierApplicability.txt b/compiler/testData/diagnostics/tests/multiplatform/modifierApplicability.txt index c63e7e9da18..fb15dfe87ad 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/modifierApplicability.txt +++ b/compiler/testData/diagnostics/tests/multiplatform/modifierApplicability.txt @@ -12,7 +12,6 @@ public final class Outer { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public final expect class Nested { - public constructor Nested() 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 diff --git a/compiler/testData/multiplatform/createImplClassInPlatformModule/jvm.kt b/compiler/testData/multiplatform/createImplClassInPlatformModule/jvm.kt index 9bf9610d9cd..e5fbba858d9 100644 --- a/compiler/testData/multiplatform/createImplClassInPlatformModule/jvm.kt +++ b/compiler/testData/multiplatform/createImplClassInPlatformModule/jvm.kt @@ -1,5 +1,5 @@ actual class Foo(x: Int) { - actual constructor() : this(0) + constructor() : this(0) val x: Int = x } diff --git a/compiler/testData/multiplatform/incorrectImplInClass/output.txt b/compiler/testData/multiplatform/incorrectImplInClass/output.txt index 787fcba93a8..d0626b9aea5 100644 --- a/compiler/testData/multiplatform/incorrectImplInClass/output.txt +++ b/compiler/testData/multiplatform/incorrectImplInClass/output.txt @@ -5,10 +5,10 @@ Output: -- JVM -- Exit code: COMPILATION_ERROR Output: +compiler/testData/multiplatform/incorrectImplInClass/jvm.kt:1:25: error: actual constructor of 'Foo' has no corresponding expected declaration +actual class Foo actual constructor() { + ^ compiler/testData/multiplatform/incorrectImplInClass/jvm.kt:2:12: error: actual constructor of 'Foo' has no corresponding expected declaration -The following declaration is incompatible because number of value parameters is different: - public constructor Foo() - actual constructor(s: String) : this() ^ compiler/testData/multiplatform/incorrectImplInClass/jvm.kt:4:5: error: actual function 'nonPlatformFun' has no corresponding expected declaration diff --git a/compiler/testData/multiplatform/simple/common.kt b/compiler/testData/multiplatform/simple/common.kt index 414e58ab2e3..e844ba29e69 100644 --- a/compiler/testData/multiplatform/simple/common.kt +++ b/compiler/testData/multiplatform/simple/common.kt @@ -1,4 +1,4 @@ -expect class Printer { +expect class Printer() { fun print(message: String) } diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index d6c90d80df9..a6e9aee37d0 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -13974,6 +13974,12 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { doTest(fileName); } + @TestMetadata("expectClassWithoutConstructor.kt") + public void testExpectClassWithoutConstructor() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/multiplatform/headerClass/expectClassWithoutConstructor.kt"); + doTest(fileName); + } + @TestMetadata("explicitConstructorDelegation.kt") public void testExplicitConstructorDelegation() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/multiplatform/headerClass/explicitConstructorDelegation.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java index b270b0718dd..0c124fa9d4c 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java @@ -13974,6 +13974,12 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing doTest(fileName); } + @TestMetadata("expectClassWithoutConstructor.kt") + public void testExpectClassWithoutConstructor() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/multiplatform/headerClass/expectClassWithoutConstructor.kt"); + doTest(fileName); + } + @TestMetadata("explicitConstructorDelegation.kt") public void testExplicitConstructorDelegation() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/multiplatform/headerClass/explicitConstructorDelegation.kt");