Commit 186fa5d8 authored by Him188's avatar Him188

Fix build

parent 62a21c3a
package net.mamoe.mirai.utils.cryptor package net.mamoe.mirai.utils.cryptor
import java.lang.reflect.Field
import kotlin.reflect.full.allSuperclasses
actual fun Any.contentToStringReflectively(prefix: String): String { actual fun Any.contentToStringReflectively(prefix: String): String {
val newPrefix = prefix + ProtoMap.indent val newPrefix = prefix + ProtoMap.indent
return (this::class.simpleName ?: "<UnnamedClass>") + "#" + this::class.hashCode() + " {\n" + return (this::class.simpleName ?: "<UnnamedClass>") + "#" + this::class.hashCode() + " {\n" +
this::class.java.fields.toMutableSet().apply { addAll(this::class.java.declaredFields) }.asSequence().filterNot { it.name.contains("$") || it.name == "Companion" || it.isSynthetic } this.allFieldsFromSuperClassesMatching { it.name.startsWith("net.mamoe.mirai") }
.distinctBy { it.name }
.filterNot { it.name.contains("$") || it.name == "Companion" || it.isSynthetic || it.name == "serialVersionUID" }
.joinToStringPrefixed( .joinToStringPrefixed(
prefix = newPrefix prefix = newPrefix
) { ) {
...@@ -15,4 +20,12 @@ actual fun Any.contentToStringReflectively(prefix: String): String { ...@@ -15,4 +20,12 @@ actual fun Any.contentToStringReflectively(prefix: String): String {
else value.contentToString(newPrefix) else value.contentToString(newPrefix)
}.getOrElse { "<!>" } }.getOrElse { "<!>" }
} + "\n$prefix}" } + "\n$prefix}"
}
internal fun Any.allFieldsFromSuperClassesMatching(classFilter: (Class<out Any>) -> Boolean): Sequence<Field> {
return (this::class.java.takeIf(classFilter)?.declaredFields?.asSequence() ?: sequenceOf<Field>()) + this::class.allSuperclasses
.asSequence()
.map { it.java }
.filter(classFilter)
.flatMap { it.declaredFields.asSequence() }
} }
\ No newline at end of file
...@@ -7,7 +7,7 @@ import kotlin.reflect.full.allSuperclasses ...@@ -7,7 +7,7 @@ import kotlin.reflect.full.allSuperclasses
actual fun Any.contentToStringReflectively(prefix: String): String { actual fun Any.contentToStringReflectively(prefix: String): String {
val newPrefix = prefix + ProtoMap.indent val newPrefix = prefix + ProtoMap.indent
return (this::class.simpleName ?: "<UnnamedClass>") + "#" + this::class.hashCode() + " {\n" + return (this::class.simpleName ?: "<UnnamedClass>") + "#" + this::class.hashCode() + " {\n" +
this.allFieldsFromSuperClassesMatching { it.packageName.startsWith("net.mamoe.mirai") } this.allFieldsFromSuperClassesMatching { it.name.startsWith("net.mamoe.mirai") }
.distinctBy { it.name } .distinctBy { it.name }
.filterNot { it.name.contains("$") || it.name == "Companion" || it.isSynthetic || it.name == "serialVersionUID" } .filterNot { it.name.contains("$") || it.name == "Companion" || it.isSynthetic || it.name == "serialVersionUID" }
.joinToStringPrefixed( .joinToStringPrefixed(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment