[IR] Fix missing AMBIGUOUS_ACTUALS

^KT-59938 Fixed
Review: https://jetbrains.team/p/kt/reviews/13760

After this patch:

    > The /compiler/testData/diagnostics/tests/multiplatform/topLevelFun/conflictingImplDeclarations.kt test:

    Fixed

    > The /compiler/testData/diagnostics/tests/multiplatform/headerClass/expectDeclarationWithWeakIncompatibilities.kt test:

    Declarations are in the same module. `PACKAGE_OR_CLASSIFIER_REDECLARATION` is reported anyway

    > The /compiler/testData/diagnostics/tests/multiplatform/java/varPropertyAgainstJavaGetterAndNonFinalField.kt test:

    Expect-actual matcher doesn't match fields in K2 https://youtrack.jetbrains.com/issue/KT-63667 => green code

    > The /compiler/testData/diagnostics/tests/multiplatform/java/propertyAgainstJavaPrivateFieldAndPublicMethod.kt test:

    Expect-actual matcher doesn't match fields in K2 https://youtrack.jetbrains.com/issue/KT-63667 => green code

    > The /compiler/testData/diagnostics/tests/multiplatform/java/implicitJavaActualization_multipleActuals.kt test:

    K2 doesn't have implicit Java actualization. And PACKAGE_OR_CLASSIFIER_REDECLARATION is reported anyway

    > The /compiler/testData/diagnostics/tests/multiplatform/java/propertyAgainstJavaPublicFieldAndPublicGetter.kt test:

    Expect-actual matcher doesn't match fields in K2 https://youtrack.jetbrains.com/issue/KT-63667 => green code

    > The /compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/injectContextReceiverOverload.kt test:

    Context receivers are not supported in expect-actual matcher. https://youtrack.jetbrains.com/issue/KT-61447
    And K2 reports another error right now anyway
This commit is contained in:
Nikita Bobko
2023-12-05 15:10:32 +01:00
committed by Space Team
parent e6860054ea
commit 013b5e3780
25 changed files with 129 additions and 24 deletions
@@ -9,7 +9,7 @@ expect open class Foo {
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
actual open class Foo {
actual open class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>Foo<!> {
actual fun foo() {}
// Expected: NON_ACTUAL_MEMBER_DECLARED_IN_EXPECT_NON_FINAL_CLASSIFIER_ACTUALIZATION_WARNING.
@@ -0,0 +1,10 @@
// MODULE: common
// TARGET_PLATFORM: Common
<!AMBIGUOUS_ACTUALS{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect fun foo()<!>
// MODULE: intermediate()()(common)
// TARGET_PLATFORM: Common
actual fun foo() {}
// MODULE: main()()(common, intermediate)
actual fun foo() {}
@@ -0,0 +1,10 @@
// MODULE: common
// TARGET_PLATFORM: Common
expect fun <!AMBIGUOUS_ACTUALS{JVM}, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE{COMMON}!>foo<!>()
// MODULE: intermediate()()(common)
// TARGET_PLATFORM: Common
<!CONFLICTING_OVERLOADS{JVM}!>actual fun <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>foo<!>()<!> {}
// MODULE: main()()(common, intermediate)
<!CONFLICTING_OVERLOADS!>actual fun foo()<!> {}
@@ -0,0 +1,10 @@
// MODULE: common
// TARGET_PLATFORM: Common
expect fun foo()
// MODULE: intermediate()()(common)
// TARGET_PLATFORM: Common
actual fun foo() {}
// MODULE: main()()(common, intermediate)
actual fun foo() {}
@@ -12,4 +12,4 @@
import java.util.AbstractMap
public actual abstract class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>AbstractMutableMap<!><K, V>() : MutableMap<K, V>, AbstractMap<K, V>()
public actual abstract class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS, NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>AbstractMutableMap<!><K, V>() : MutableMap<K, V>, AbstractMap<K, V>()
@@ -12,4 +12,4 @@ public expect abstract class AbstractMutableMap<K, V> : MutableMap<K, V> {
import java.util.AbstractMap
public actual abstract class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>AbstractMutableMap<!><K, V>() : MutableMap<K, V>, AbstractMap<K, V>()
public actual abstract class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS, NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>AbstractMutableMap<!><K, V>() : MutableMap<K, V>, AbstractMap<K, V>()
@@ -5,6 +5,8 @@ interface I {
}
expect class Foo : I {
// AMBIGUOUS_ACTUALS in K1, green code in K2.
// Reason: expect-actual matcher doesn't match fields in K2 KT-63667
override val foo: Int
}
@@ -5,6 +5,8 @@ interface I {
}
expect class Foo : I {
// AMBIGUOUS_ACTUALS in K1, green code in K2.
// Reason: expect-actual matcher doesn't match fields in K2 KT-63667
override val <!AMBIGUOUS_ACTUALS{JVM}!>foo<!>: Int
}
@@ -1,6 +1,8 @@
// MODULE: m1-common
// FILE: common.kt
expect class Foo {
// AMBIGUOUS_ACTUALS in K1, green code in K2.
// Reason: expect-actual matcher doesn't match fields in K2 KT-63667
val foo: Int
}
@@ -1,6 +1,8 @@
// MODULE: m1-common
// FILE: common.kt
expect class Foo {
// AMBIGUOUS_ACTUALS in K1, green code in K2.
// Reason: expect-actual matcher doesn't match fields in K2 KT-63667
val <!AMBIGUOUS_ACTUALS{JVM}!>foo<!>: Int
}
@@ -1,6 +1,8 @@
// MODULE: m1-common
// FILE: common.kt
expect class Foo {
// AMBIGUOUS_ACTUALS in K1, green code in K2.
// Reason: expect-actual matcher doesn't match fields in K2 KT-63667
var foo: Int
}
@@ -1,6 +1,8 @@
// MODULE: m1-common
// FILE: common.kt
expect class Foo {
// AMBIGUOUS_ACTUALS in K1, green code in K2.
// Reason: expect-actual matcher doesn't match fields in K2 KT-63667
var <!AMBIGUOUS_ACTUALS{JVM}!>foo<!>: Int
}
@@ -1,7 +1,7 @@
// MODULE: m1-common
// FILE: common.kt
expect fun foo()
<!AMBIGUOUS_ACTUALS{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect fun foo()<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -0,0 +1,16 @@
// MODULE: m1-common
// FILE: common.kt
expect fun foo()
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
<!CONFLICTING_OVERLOADS!>actual fun foo()<!> {}
<!CONFLICTING_OVERLOADS!>actual fun foo()<!> {}
// MODULE: m3-js()()(m1-common)
// FILE: js.kt
<!CONFLICTING_OVERLOADS!>actual fun foo()<!> {}
<!CONFLICTING_OVERLOADS!>actual fun foo()<!> {}