diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java index a761c14fff3..d7db9248ce2 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java @@ -648,9 +648,9 @@ public interface Errors { DiagnosticFactory2>> ACTUAL_WITHOUT_EXPECT = DiagnosticFactory2.create(ERROR, INCOMPATIBLE_DECLARATION); - DiagnosticFactory2> AMBIGUOUS_ACTUALS = + DiagnosticFactory2> AMBIGUOUS_ACTUALS = DiagnosticFactory2.create(ERROR, INCOMPATIBLE_DECLARATION); - DiagnosticFactory2> AMBIGUOUS_EXPECTS = + DiagnosticFactory2> AMBIGUOUS_EXPECTS = DiagnosticFactory2.create(ERROR, INCOMPATIBLE_DECLARATION); DiagnosticFactory2 { module -> val platform = module.platform - val moduleName = module.moduleInfo?.unwrapPlatform()?.displayedName ?: "" + val moduleName = MODULE.render(module) val platformNameIfAny = if (platform == null || platform.isCommon()) "" else " for " + platform.single().platformName moduleName + platformNameIfAny } + + @JvmField + val MODULE = Renderer { module -> + module.moduleInfo?.unwrapPlatform()?.displayedName ?: module.name.asString() + } @JvmField val VISIBILITY = Renderer { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt index 5f7f5e7938f..a19621689c0 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt @@ -144,8 +144,8 @@ class ExpectedActualDeclarationChecker( reportOn, descriptor, atLeastWeaklyCompatibleActuals - .map { DescriptorUtils.getContainingSourceFile(it).let { it.name ?: it.toString() } } - .sorted() + .map { it.module } + .sortedBy { it.name.asString() } )) } } @@ -305,8 +305,8 @@ class ExpectedActualDeclarationChecker( } .map { (_, members) -> members } .flatten() - .map { DescriptorUtils.getContainingSourceFile(it).let { it.name ?: it.toString() } } - .sorted() + .map { it.module } + .sortedBy { it.name.asString() } .toList() if (filesWithAtLeastWeaklyCompatibleExpects.size > 1) { diff --git a/compiler/testData/multiplatform/incompatibleCallables/output.txt b/compiler/testData/multiplatform/incompatibleCallables/output.txt index 59beb40b009..e3a6f2305b4 100644 --- a/compiler/testData/multiplatform/incompatibleCallables/output.txt +++ b/compiler/testData/multiplatform/incompatibleCallables/output.txt @@ -5,73 +5,73 @@ Output: -- JVM -- Exit code: COMPILATION_ERROR Output: -compiler/testData/multiplatform/incompatibleCallables/common.kt:1:12: error: expected function 'f1' has no actual declaration in module +compiler/testData/multiplatform/incompatibleCallables/common.kt:1:12: error: expected function 'f1' has no actual declaration in module
The following declaration is incompatible because return type is different: public actual fun f1(): String expect fun f1() ^ -compiler/testData/multiplatform/incompatibleCallables/common.kt:5:14: error: expected function 'f3' has no actual declaration in module +compiler/testData/multiplatform/incompatibleCallables/common.kt:5:14: error: expected function 'f3' has no actual declaration in module
The following declaration is incompatible because parameter types are different: public actual fun f3(name: Double): Unit expect fun f3(name: String) ^ -compiler/testData/multiplatform/incompatibleCallables/common.kt:6:24: error: expected function 'f3ext' has no actual declaration in module +compiler/testData/multiplatform/incompatibleCallables/common.kt:6:24: error: expected function 'f3ext' has no actual declaration in module
The following declaration is incompatible because parameter types are different: public actual fun Double.f3ext(): Unit expect fun String.f3ext() ^ -compiler/testData/multiplatform/incompatibleCallables/common.kt:8:14: error: expected function 'f4' has no actual declaration in module +compiler/testData/multiplatform/incompatibleCallables/common.kt:8:14: error: expected function 'f4' has no actual declaration in module
The following declaration is incompatible because parameter shapes are different (extension vs non-extension): public actual fun String.f4(): Unit expect fun f4(name: String) ^ -compiler/testData/multiplatform/incompatibleCallables/common.kt:10:12: error: expected function 'f5' has no actual declaration in module +compiler/testData/multiplatform/incompatibleCallables/common.kt:10:12: error: expected function 'f5' has no actual declaration in module
The following declaration is incompatible because parameter shapes are different (extension vs non-extension): public actual fun f5(name: String): Unit expect fun String.f5() ^ -compiler/testData/multiplatform/incompatibleCallables/common.kt:12:14: error: expected function 'f6' has no actual declaration in module +compiler/testData/multiplatform/incompatibleCallables/common.kt:12:14: error: expected function 'f6' has no actual declaration in module
The following declaration is incompatible because number of value parameters is different: public actual fun f6(p2: Int): Unit expect fun f6(p1: String, p2: Int) ^ -compiler/testData/multiplatform/incompatibleCallables/common.kt:14:12: error: expected function 'f7' has no actual declaration in module +compiler/testData/multiplatform/incompatibleCallables/common.kt:14:12: error: expected function 'f7' has no actual declaration in module
The following declaration is incompatible because number of type parameters is different: public actual fun f7(): Unit expect fun f7() ^ -compiler/testData/multiplatform/incompatibleCallables/common.kt:19:12: error: expected function 'f11' has no actual declaration in module +compiler/testData/multiplatform/incompatibleCallables/common.kt:19:12: error: expected function 'f11' has no actual declaration in module
The following declaration is incompatible because upper bounds of type parameters are different: public actual fun f11(): Unit expect fun f11() ^ -compiler/testData/multiplatform/incompatibleCallables/common.kt:20:12: error: expected function 'f12' has no actual declaration in module +compiler/testData/multiplatform/incompatibleCallables/common.kt:20:12: error: expected function 'f12' has no actual declaration in module
The following declaration is incompatible because upper bounds of type parameters are different: public actual fun > f12(): Unit expect fun > f12() ^ -compiler/testData/multiplatform/incompatibleCallables/common.kt:21:12: error: expected function 'f13' has no actual declaration in module +compiler/testData/multiplatform/incompatibleCallables/common.kt:21:12: error: expected function 'f13' has no actual declaration in module
The following declaration is incompatible because upper bounds of type parameters are different: public actual fun > f13(): Unit expect fun > f13() ^ -compiler/testData/multiplatform/incompatibleCallables/common.kt:32:15: error: expected function 'f21' has no actual declaration in module +compiler/testData/multiplatform/incompatibleCallables/common.kt:32:15: error: expected function 'f21' has no actual declaration in module
The following declaration is incompatible because parameter types are different: public actual fun f21(c: Unit.() -> Unit): Unit expect fun f21(c: suspend Unit.() -> Unit) ^ -compiler/testData/multiplatform/incompatibleCallables/common.kt:33:15: error: expected function 'f22' has no actual declaration in module +compiler/testData/multiplatform/incompatibleCallables/common.kt:33:15: error: expected function 'f22' has no actual declaration in module
The following declaration is incompatible because parameter types are different: public actual fun f22(c: suspend Unit.() -> Unit): Unit diff --git a/compiler/testData/multiplatform/incompatibleClasses/output.txt b/compiler/testData/multiplatform/incompatibleClasses/output.txt index ddc84732ccd..4e7690428d6 100644 --- a/compiler/testData/multiplatform/incompatibleClasses/output.txt +++ b/compiler/testData/multiplatform/incompatibleClasses/output.txt @@ -5,19 +5,19 @@ Output: -- JVM -- Exit code: COMPILATION_ERROR Output: -compiler/testData/multiplatform/incompatibleClasses/common.kt:14:16: error: expected class 'C1' has no actual declaration in module +compiler/testData/multiplatform/incompatibleClasses/common.kt:14:16: error: expected class 'C1' has no actual declaration in module
The following declaration is incompatible because number of type parameters is different: public final actual class C1 expect class C1 ^ -compiler/testData/multiplatform/incompatibleClasses/common.kt:16:16: error: expected class 'C3' has no actual declaration in module +compiler/testData/multiplatform/incompatibleClasses/common.kt:16:16: error: expected class 'C3' has no actual declaration in module
The following declaration is incompatible because upper bounds of type parameters are different: public final actual class C3 expect class C3 ^ -compiler/testData/multiplatform/incompatibleClasses/common.kt:18:16: error: expected class 'C4' has no actual declaration in module +compiler/testData/multiplatform/incompatibleClasses/common.kt:18:16: error: expected class 'C4' has no actual declaration in module
The following declaration is incompatible because upper bounds of type parameters are different: public actual typealias C4 = C4Impl diff --git a/compiler/testData/multiplatform/missingOverload/output.txt b/compiler/testData/multiplatform/missingOverload/output.txt index d645a28807b..77a5fe18462 100644 --- a/compiler/testData/multiplatform/missingOverload/output.txt +++ b/compiler/testData/multiplatform/missingOverload/output.txt @@ -5,7 +5,7 @@ Output: -- JVM -- Exit code: COMPILATION_ERROR Output: -compiler/testData/multiplatform/missingOverload/common.kt:7:13: error: expected function 'g' has no actual declaration in module +compiler/testData/multiplatform/missingOverload/common.kt:7:13: error: expected function 'g' has no actual declaration in module
The following declaration is incompatible because parameter types are different: public actual fun g(a: Any): Unit diff --git a/compiler/testData/multiplatform/optionalExpectationIncorrectUse/output.txt b/compiler/testData/multiplatform/optionalExpectationIncorrectUse/output.txt index ae14699df26..31294e4e405 100644 --- a/compiler/testData/multiplatform/optionalExpectationIncorrectUse/output.txt +++ b/compiler/testData/multiplatform/optionalExpectationIncorrectUse/output.txt @@ -26,7 +26,7 @@ fun useInSignature(a: A) = a.toString() compiler/testData/multiplatform/optionalExpectationIncorrectUse/common.kt:9:1: error: this annotation is not applicable to target 'class' @OptionalExpectation ^ -compiler/testData/multiplatform/optionalExpectationIncorrectUse/common.kt:10:14: error: expected class 'NotAnAnnotationClass' has no actual declaration in module +compiler/testData/multiplatform/optionalExpectationIncorrectUse/common.kt:10:14: error: expected class 'NotAnAnnotationClass' has no actual declaration in module
expect class NotAnAnnotationClass ^ compiler/testData/multiplatform/optionalExpectationIncorrectUse/common.kt:12:1: error: '@OptionalExpectation' can only be used on an expected annotation class diff --git a/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/diamondDuplicateActuals/top/top.kt b/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/diamondDuplicateActuals/top/top.kt index 86b95aaf804..221b2f07557 100644 --- a/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/diamondDuplicateActuals/top/top.kt +++ b/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/diamondDuplicateActuals/top/top.kt @@ -1,5 +1,5 @@ package sample -expect class A { - fun foo(): Int +expect class A { + fun foo(): Int } \ No newline at end of file diff --git a/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateActualsExplicit/top/top.kt b/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateActualsExplicit/top/top.kt index 1bc425490ae..b6529b5b63b 100644 --- a/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateActualsExplicit/top/top.kt +++ b/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateActualsExplicit/top/top.kt @@ -1,3 +1,3 @@ package foo -expect class A \ No newline at end of file +expect class A \ No newline at end of file diff --git a/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateActualsImplicit/top/top.kt b/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateActualsImplicit/top/top.kt index 01bdb4dc0f8..e4fecfc1a1e 100644 --- a/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateActualsImplicit/top/top.kt +++ b/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateActualsImplicit/top/top.kt @@ -1,6 +1,6 @@ package foo -expect class ActualInMiddleCompatibleInBottom -expect class CompatibleInMiddleActualInBottom +expect class ActualInMiddleCompatibleInBottom +expect class CompatibleInMiddleActualInBottom -expect class CompatibleInMiddleAndBottom \ No newline at end of file +expect class CompatibleInMiddleAndBottom \ No newline at end of file diff --git a/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateActualsOneWeaklyIncompatible/top/top.kt b/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateActualsOneWeaklyIncompatible/top/top.kt index 1bc425490ae..b6529b5b63b 100644 --- a/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateActualsOneWeaklyIncompatible/top/top.kt +++ b/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateActualsOneWeaklyIncompatible/top/top.kt @@ -1,3 +1,3 @@ package foo -expect class A \ No newline at end of file +expect class A \ No newline at end of file diff --git a/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateExpectsExplicit/bottom/bottom.kt b/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateExpectsExplicit/bottom/bottom.kt index 14e2680967d..c73c470e0d0 100644 --- a/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateExpectsExplicit/bottom/bottom.kt +++ b/idea/testData/multiModuleHighlighting/hierarchicalExpectActualMatching/duplicateExpectsExplicit/bottom/bottom.kt @@ -1 +1 @@ -actual class A \ No newline at end of file +actual class A \ No newline at end of file