JVM IR: do not use JvmDeclarationOrigin in duplicate signatures
Apparently the client code which reports errors only meaningfully uses the `descriptor` field of `JvmDeclarationOrigin` in case of JVM IR.
This commit is contained in:
+7
-4
@@ -16,9 +16,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve.jvm.diagnostics
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
|
||||
class ConflictingJvmDeclarationsData(
|
||||
val classInternalName: String,
|
||||
val classOrigin: JvmDeclarationOrigin,
|
||||
val signature: RawSignature,
|
||||
val signatureOrigins: Collection<JvmDeclarationOrigin>
|
||||
val classInternalName: String,
|
||||
val classOrigin: JvmDeclarationOrigin?,
|
||||
val signature: RawSignature,
|
||||
val signatureOrigins: Collection<JvmDeclarationOrigin>?,
|
||||
val signatureDescriptors: Collection<DeclarationDescriptor>,
|
||||
)
|
||||
|
||||
+4
-5
@@ -12,8 +12,9 @@ import org.jetbrains.kotlin.resolve.MemberComparator;
|
||||
import org.jetbrains.kotlin.utils.StringsKt;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static kotlin.collections.CollectionsKt.*;
|
||||
import static kotlin.collections.CollectionsKt.map;
|
||||
import static org.jetbrains.kotlin.diagnostics.rendering.CommonRenderers.STRING;
|
||||
import static org.jetbrains.kotlin.diagnostics.rendering.Renderers.*;
|
||||
import static org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.*;
|
||||
@@ -22,10 +23,8 @@ public class DefaultErrorMessagesJvm implements DefaultErrorMessages.Extension {
|
||||
|
||||
private static final DiagnosticParameterRenderer<ConflictingJvmDeclarationsData> CONFLICTING_JVM_DECLARATIONS_DATA =
|
||||
(data, context) -> {
|
||||
List<DeclarationDescriptor> renderedDescriptors = sortedWith(
|
||||
mapNotNull(data.getSignatureOrigins(), JvmDeclarationOrigin::getDescriptor),
|
||||
MemberComparator.INSTANCE
|
||||
);
|
||||
List<DeclarationDescriptor> renderedDescriptors =
|
||||
data.getSignatureDescriptors().stream().sorted(MemberComparator.INSTANCE).collect(Collectors.toList());
|
||||
RenderingContext renderingContext = new RenderingContext.Impl(renderedDescriptors);
|
||||
return "The following declarations have the same JVM signature " +
|
||||
"(" + data.getSignature().getName() + data.getSignature().getDesc() + "):\n" +
|
||||
|
||||
+4
-10
@@ -43,20 +43,14 @@ object KtDefaultJvmErrorMessages : BaseDiagnosticRendererFactory() {
|
||||
|
||||
@JvmField
|
||||
val CONFLICTING_JVM_DECLARATIONS_DATA = Renderer<ConflictingJvmDeclarationsData> {
|
||||
val renderedDescriptors: List<DeclarationDescriptor?> =
|
||||
it.signatureOrigins.mapNotNull(
|
||||
JvmDeclarationOrigin::descriptor
|
||||
).sortedWith(MemberComparator.INSTANCE)
|
||||
val renderingContext: RenderingContext =
|
||||
RenderingContext.Impl(renderedDescriptors)
|
||||
val renderedDescriptors = it.signatureDescriptors.sortedWith(MemberComparator.INSTANCE)
|
||||
val renderingContext = RenderingContext.Impl(renderedDescriptors)
|
||||
"""
|
||||
The following declarations have the same JVM signature (${it.signature.name}${it.signature.desc}):
|
||||
|
||||
""".trimIndent() +
|
||||
join(renderedDescriptors.map { descriptor: DeclarationDescriptor? ->
|
||||
" " + Renderers.WITHOUT_MODIFIERS.render(
|
||||
descriptor!!, renderingContext
|
||||
)
|
||||
join(renderedDescriptors.map { descriptor ->
|
||||
" " + Renderers.WITHOUT_MODIFIERS.render(descriptor, renderingContext)
|
||||
}, "\n")
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user