Skip to content

Commit 69b21c9

Browse files
committed
Fix desensitizer
1 parent 6ce34e8 commit 69b21c9

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

mirai-core/src/commonTest/kotlin/testFramework/desensitizer/Desensitizer.kt

+12-6
Original file line numberDiff line numberDiff line change
@@ -178,15 +178,18 @@ private class DesensitizationVisitor(
178178
}
179179

180180
override fun visitObjectArray(desc: ObjectArrayValueDesc, data: Nothing?): ValueDesc {
181-
return if (desc.arrayType.arguments.first().type?.classifier == Byte::class) { // variance is ignored
181+
return if (
182+
desc.arrayType.arguments.firstOrNull()?.type?.classifier == Byte::class
183+
|| (desc.value as? Array<*>)?.getOrNull(0) is Byte
184+
) {
182185
@Suppress("UNCHECKED_CAST")
183-
(ObjectArrayValueDesc(
186+
ObjectArrayValueDesc(
184187
desc.parent,
185188
desensitizer.desensitize(desc.value as Array<Byte>),
186189
desc.origin,
187190
desc.arrayType,
188191
desc.elementType
189-
))
192+
)
190193
} else {
191194
super.visitObjectArray(desc, data)
192195
}
@@ -205,7 +208,7 @@ private class DesensitizationVisitor(
205208
}
206209

207210
override fun <T : Any> visitClass(desc: ClassValueDesc<T>, data: Nothing?): ValueDesc {
208-
return ClassValueDesc(desc.parent, desc.origin, desc.properties.toMutableMap().apply {
211+
ClassValueDesc(desc.parent, desc.origin, desc.properties.toMutableMap().apply {
209212
replaceAll() { key, value ->
210213
val annotation = key.findAnnotation<NestedStructure>()
211214
if (annotation != null && value.origin is ByteArray) {
@@ -217,14 +220,17 @@ private class DesensitizationVisitor(
217220

218221
val generate = ValueDescAnalyzer.analyze(result)
219222
.transform(OptimizeByteArrayAsHexStringTransformer())
220-
?.transform(DesensitizationVisitor(desensitizer))
223+
.transform(DesensitizationVisitor(desensitizer))
224+
.renderToString()
221225
PlainValueDesc(
222226
desc,
223227
"$generate.toByteArray(${result::class.qualifiedName}.serializer())",
224228
value.origin
225229
)
226230
} else value
227231
}
228-
})
232+
}).let {
233+
return super.visitClass(it, data)
234+
}
229235
}
230236
}

0 commit comments

Comments
 (0)