diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java index 1af83675532..90ad6512fed 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java @@ -510,9 +510,9 @@ public interface Errors { DiagnosticFactory0 IMPL_TYPE_ALIAS_WITH_USE_SITE_VARIANCE = DiagnosticFactory0.create(ERROR, DECLARATION_SIGNATURE); DiagnosticFactory0 IMPL_TYPE_ALIAS_WITH_COMPLEX_SUBSTITUTION = DiagnosticFactory0.create(ERROR, DECLARATION_SIGNATURE); - DiagnosticFactory2>> HEADER_WITHOUT_IMPLEMENTATION = - DiagnosticFactory2.create(ERROR, DECLARATION_SIGNATURE); + DiagnosticFactory3.create(ERROR, DECLARATION_SIGNATURE); DiagnosticFactory0 IMPLEMENTATION_WITHOUT_HEADER = DiagnosticFactory0.create(ERROR); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java index bf7b37d3392..6889c7fbd01 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java @@ -270,7 +270,8 @@ public class DefaultErrorMessages { MAP.put(IMPL_TYPE_ALIAS_WITH_USE_SITE_VARIANCE, "Right-hand side of 'impl' type alias cannot contain use-site variance or star projections"); MAP.put(IMPL_TYPE_ALIAS_WITH_COMPLEX_SUBSTITUTION, "Type arguments in the right-hand side of 'impl' type alias should be its type parameters in the same order, e.g. 'impl typealias Foo = Bar'"); - MAP.put(HEADER_WITHOUT_IMPLEMENTATION, "No implementation is found for header declaration ''{0}''{1}", NAME, PlatformIncompatibilityDiagnosticRenderer.INSTANCE); + MAP.put(HEADER_WITHOUT_IMPLEMENTATION, "Header declaration ''{0}'' has no implementation in module {1}{2}", NAME, + PLATFORM, PlatformIncompatibilityDiagnosticRenderer.INSTANCE); MAP.put(IMPLEMENTATION_WITHOUT_HEADER, "Modifier 'impl' is only applicable to members that are initially declared in platform-independent code"); MAP.put(PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT, "Projections are not allowed on type arguments of functions and properties"); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt index e13b0418f63..cb5a86fc909 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt @@ -75,6 +75,10 @@ object Renderers { @JvmField val NAME = Renderer { it.name.asString() } + @JvmField val PLATFORM = Renderer { + if (it.platformKind == PlatformKind.DEFAULT) "" else "for " + it.platformKind.name + } + @JvmField val VISIBILITY = Renderer { if (it == Visibilities.INVISIBLE_FAKE) "invisible (private in a supertype)" diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/HeaderImplDeclarationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/HeaderImplDeclarationChecker.kt index 2b7ad14f192..0b69fc19116 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/HeaderImplDeclarationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/HeaderImplDeclarationChecker.kt @@ -92,7 +92,8 @@ class HeaderImplDeclarationChecker(val moduleToCheck: ModuleDescriptor? = null) assert(compatibility.keys.all { it is Incompatible }) @Suppress("UNCHECKED_CAST") val incompatibility = compatibility as Map> - diagnosticHolder.report(Errors.HEADER_WITHOUT_IMPLEMENTATION.on(reportOn, descriptor, incompatibility)) + diagnosticHolder.report(Errors.HEADER_WITHOUT_IMPLEMENTATION.on( + reportOn, descriptor, moduleToCheck ?: descriptor.module, incompatibility)) } } diff --git a/idea/testData/multiModuleHighlighting/platform1/header/header.kt b/idea/testData/multiModuleHighlighting/platform1/header/header.kt index 050ddeeabb3..c3279a66d12 100644 --- a/idea/testData/multiModuleHighlighting/platform1/header/header.kt +++ b/idea/testData/multiModuleHighlighting/platform1/header/header.kt @@ -1,3 +1,3 @@ -header class My { +header class My { } \ No newline at end of file diff --git a/idea/testData/multiModuleHighlighting/platform1/jvm/jvm.kt b/idea/testData/multiModuleHighlighting/platform1/jvm/jvm.kt index f4a151f659f..aa1d41e800e 100644 --- a/idea/testData/multiModuleHighlighting/platform1/jvm/jvm.kt +++ b/idea/testData/multiModuleHighlighting/platform1/jvm/jvm.kt @@ -2,7 +2,7 @@ } -header class His { +header class His { } diff --git a/idea/testData/multiModuleHighlighting/platform3/header/header.kt b/idea/testData/multiModuleHighlighting/platform3/header/header.kt index 6a9b7624046..8bef43497fc 100644 --- a/idea/testData/multiModuleHighlighting/platform3/header/header.kt +++ b/idea/testData/multiModuleHighlighting/platform3/header/header.kt @@ -1,3 +1,3 @@ -header class My { +header class My { } \ No newline at end of file