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:
+2
-1
@@ -78,7 +78,8 @@ abstract class SignatureCollectingClassBuilderFactory(
|
||||
classInternalName,
|
||||
classCreatedFor,
|
||||
signature,
|
||||
elementsAndDescriptors
|
||||
elementsAndDescriptors,
|
||||
elementsAndDescriptors.mapNotNull(JvmDeclarationOrigin::descriptor),
|
||||
))
|
||||
}
|
||||
onClassDone(classCreatedFor, classInternalName, signatures)
|
||||
|
||||
+7
-5
@@ -71,17 +71,17 @@ class BuilderFactoryForDuplicateSignatureDiagnostics(
|
||||
}
|
||||
|
||||
private fun reportConflictingJvmSignatures(data: ConflictingJvmDeclarationsData) {
|
||||
val noOwnImplementations = data.signatureOrigins.all { it.originKind in EXTERNAL_SOURCES_KINDS }
|
||||
val noOwnImplementations = data.signatureOrigins!!.all { it.originKind in EXTERNAL_SOURCES_KINDS }
|
||||
|
||||
val elements = LinkedHashSet<PsiElement>()
|
||||
if (noOwnImplementations) {
|
||||
elements.addIfNotNull(data.classOrigin.element)
|
||||
elements.addIfNotNull(data.classOrigin!!.element)
|
||||
} else {
|
||||
for (origin in data.signatureOrigins) {
|
||||
for (origin in data.signatureOrigins!!) {
|
||||
var element = origin.element
|
||||
|
||||
if (element == null || origin.originKind in EXTERNAL_SOURCES_KINDS) {
|
||||
element = data.classOrigin.element
|
||||
element = data.classOrigin!!.element
|
||||
}
|
||||
|
||||
elements.addIfNotNull(element)
|
||||
@@ -186,7 +186,9 @@ class BuilderFactoryForDuplicateSignatureDiagnostics(
|
||||
}
|
||||
}
|
||||
|
||||
val data = ConflictingJvmDeclarationsData(classInternalName, classOrigin, rawSignature, origins)
|
||||
val data = ConflictingJvmDeclarationsData(
|
||||
classInternalName, classOrigin, rawSignature, origins, origins.mapNotNull(JvmDeclarationOrigin::descriptor),
|
||||
)
|
||||
if (memberElement != null) {
|
||||
return ConflictingDeclarationError.AccidentalOverride(memberElement, data)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user