1
0
mirror of https://github.com/mamoe/mirai.git synced 2025-04-25 04:50:26 +08:00

Fix build

This commit is contained in:
Him188 2020-01-12 00:24:17 +08:00
parent 62a21c3afe
commit 186fa5d88d
2 changed files with 15 additions and 2 deletions
mirai-core/src
androidMain/kotlin/net/mamoe/mirai/utils/cryptor
jvmMain/kotlin/net/mamoe/mirai/utils/cryptor

View File

@ -1,10 +1,15 @@
package net.mamoe.mirai.utils.cryptor
import java.lang.reflect.Field
import kotlin.reflect.full.allSuperclasses
actual fun Any.contentToStringReflectively(prefix: String): String {
val newPrefix = prefix + ProtoMap.indent
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(
prefix = newPrefix
) {
@ -15,4 +20,12 @@ actual fun Any.contentToStringReflectively(prefix: String): String {
else value.contentToString(newPrefix)
}.getOrElse { "<!>" }
} + "\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() }
}

View File

@ -7,7 +7,7 @@ import kotlin.reflect.full.allSuperclasses
actual fun Any.contentToStringReflectively(prefix: String): String {
val newPrefix = prefix + ProtoMap.indent
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 }
.filterNot { it.name.contains("$") || it.name == "Companion" || it.isSynthetic || it.name == "serialVersionUID" }
.joinToStringPrefixed(