Don't report incompatibility expect/actual errors on usual overloads
Divide incompatibility on two groups: strong and weak. Strong incompatibility means that if declaration with such incompatibility has no `actual` modifier then it's considered as usual overload and we'll not report any error on it. #KT-20540 Fixed #KT-20680 Fixed
This commit is contained in:
+16
@@ -42,6 +42,13 @@ public final expect annotation class Foo6 : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final expect annotation class Foo7 : kotlin.Annotation {
|
||||
public constructor Foo7()
|
||||
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: <m2-jvm> --
|
||||
package
|
||||
@@ -89,5 +96,14 @@ public final actual annotation class Foo5 : 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 Foo6 : kotlin.Annotation {
|
||||
public constructor Foo6(/*0*/ s: kotlin.String = ...)
|
||||
public final val s: 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
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
public typealias Foo1 = Bar1
|
||||
public typealias Foo4 = Bar2
|
||||
public typealias Foo7 = Bar2
|
||||
|
||||
+13
-3
@@ -9,6 +9,8 @@ expect class Foo3
|
||||
expect class Bar1()
|
||||
expect class Bar2()
|
||||
expect class Bar3()
|
||||
expect class Bar4()
|
||||
expect class Bar5()
|
||||
|
||||
// MODULE: m2-jvm(m1-common)
|
||||
|
||||
@@ -30,6 +32,14 @@ actual class Foo1(val s: String)
|
||||
actual class Foo2(val p: String = "value", <!UNUSED_PARAMETER!>i<!>: Int)
|
||||
actual typealias Foo3 = JavaFoo
|
||||
|
||||
actual class Bar1<!ACTUAL_WITHOUT_EXPECT!>(val s: String)<!>
|
||||
actual class Bar2<!ACTUAL_WITHOUT_EXPECT!>(val p: String = "value", <!UNUSED_PARAMETER!>i<!>: Int)<!>
|
||||
<!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>actual typealias Bar3 = JavaBar<!>
|
||||
actual class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>Bar1<!>(val s: String)
|
||||
actual class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>Bar2<!>(val p: String = "value", <!UNUSED_PARAMETER!>i<!>: Int)
|
||||
actual typealias <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>Bar3<!> = JavaBar
|
||||
actual class Bar4(val s: String) {
|
||||
<!ACTUAL_MISSING!>constructor() : this("")<!>
|
||||
}
|
||||
|
||||
actual class Bar5 {
|
||||
actual constructor()
|
||||
constructor(s: String)
|
||||
}
|
||||
+31
@@ -22,6 +22,20 @@ public final expect class Bar3 {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final expect class Bar4 {
|
||||
public constructor Bar4()
|
||||
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 Bar5 {
|
||||
public constructor Bar5()
|
||||
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 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
|
||||
@@ -60,6 +74,23 @@ public final actual class Bar2 {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final actual class Bar4 {
|
||||
public constructor Bar4()
|
||||
public constructor Bar4(/*0*/ s: kotlin.String)
|
||||
public final val s: 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
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final actual class Bar5 {
|
||||
public constructor Bar5()
|
||||
public constructor Bar5(/*0*/ s: 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
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final actual class Foo1 {
|
||||
public constructor Foo1(/*0*/ s: kotlin.String)
|
||||
public final val s: kotlin.String
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
// !LANGUAGE: +MultiPlatformProjects
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
expect fun foo1(x: Int)
|
||||
expect fun foo2<!JVM:NO_ACTUAL_FOR_EXPECT!>(x: Int)<!>
|
||||
|
||||
expect class NoArgConstructor()
|
||||
|
||||
// MODULE: m2-jvm(m1-common)
|
||||
|
||||
// FILE: jvm.kt
|
||||
|
||||
actual fun foo1(x: Int) {}
|
||||
|
||||
fun foo1(x: Int, y: Int) {}
|
||||
fun foo1(x: String) {}
|
||||
|
||||
fun foo2(x: Int, y: Int) {}
|
||||
fun foo2(x: String) {}
|
||||
|
||||
actual class NoArgConstructor {
|
||||
actual constructor()
|
||||
actual constructor<!ACTUAL_WITHOUT_EXPECT!>(x: Int)<!>
|
||||
constructor(x: String)
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
// -- Module: <m1-common> --
|
||||
package
|
||||
|
||||
public expect fun foo1(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
public expect fun foo2(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
|
||||
public final expect class NoArgConstructor {
|
||||
public constructor NoArgConstructor()
|
||||
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: <m2-jvm> --
|
||||
package
|
||||
|
||||
public actual fun foo1(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
public fun foo1(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.Int): kotlin.Unit
|
||||
public fun foo1(/*0*/ x: kotlin.String): kotlin.Unit
|
||||
public fun foo2(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.Int): kotlin.Unit
|
||||
public fun foo2(/*0*/ x: kotlin.String): kotlin.Unit
|
||||
|
||||
public final actual class NoArgConstructor {
|
||||
public constructor NoArgConstructor()
|
||||
public constructor NoArgConstructor(/*0*/ x: kotlin.Int)
|
||||
public constructor NoArgConstructor(/*0*/ x: 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
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
// !LANGUAGE: +MultiPlatformProjects
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
expect class Foo1
|
||||
expect class Foo2
|
||||
|
||||
expect fun foo1(): Int
|
||||
expect fun foo2(): Int
|
||||
expect fun foo3<!JVM:NO_ACTUAL_FOR_EXPECT!>()<!>: Int
|
||||
|
||||
// MODULE: m2-jvm(m1-common)
|
||||
|
||||
// FILE: jvm.kt
|
||||
|
||||
<!ACTUAL_WITHOUT_EXPECT!>interface<!> Foo1
|
||||
actual <!ACTUAL_WITHOUT_EXPECT!>interface<!> Foo2
|
||||
|
||||
actual fun foo1(): <!ACTUAL_WITHOUT_EXPECT!>String<!> = ""
|
||||
|
||||
fun <!ACTUAL_MISSING!>foo2<!>(): Int = 0
|
||||
fun foo3(x: Int): String = ""
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
// -- Module: <m1-common> --
|
||||
package
|
||||
|
||||
public expect fun foo1(): kotlin.Int
|
||||
public expect fun foo2(): kotlin.Int
|
||||
public expect fun foo3(): kotlin.Int
|
||||
|
||||
public final expect class 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 class 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
|
||||
}
|
||||
|
||||
|
||||
// -- Module: <m2-jvm> --
|
||||
package
|
||||
|
||||
public actual fun foo1(): kotlin.String
|
||||
public fun foo2(): kotlin.Int
|
||||
public fun foo3(/*0*/ x: kotlin.Int): kotlin.String
|
||||
|
||||
public interface 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 actual interface 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
|
||||
}
|
||||
+2
-2
@@ -11,8 +11,8 @@ expect fun f4(s: () -> String)
|
||||
expect inline fun f5(s: () -> String)
|
||||
expect inline fun f6(crossinline s: () -> String)
|
||||
|
||||
expect fun f7(x: Any)
|
||||
expect fun f8(vararg x: Any)
|
||||
expect fun f7<!JVM:NO_ACTUAL_FOR_EXPECT!>(x: Any)<!>
|
||||
expect fun f8<!JVM:NO_ACTUAL_FOR_EXPECT!>(vararg x: Any)<!>
|
||||
|
||||
// MODULE: m2-jvm(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
Reference in New Issue
Block a user