aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt')
-rw-r--r--src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt b/src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt
index 412b6bf..a71c4d1 100644
--- a/src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt
+++ b/src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt
@@ -481,10 +481,8 @@ internal class PsiMapper(
?: method.getAnnotation(CLASS_REDIRECT)
?: return
- for (attribute in annotation.parameterList.attributes) {
- if ("method" != attribute.name) continue
- // Note: mixin supports multiple targets, we do not (yet)
- val (literalExpr, literalValue) = attribute.resolvedLiteralValue ?: continue
+ val methodAttrib = annotation.findDeclaredAttributeValue("method")
+ for ((literalExpr, literalValue) in methodAttrib?.resolvedLiteralValues ?: emptyList()) {
val (targetName, targetDesc) = if ('(' in literalValue) {
MethodSignature.of(literalValue).let { it.name to it.descriptor.toString() }
} else {
@@ -497,7 +495,7 @@ internal class PsiMapper(
}
} else {
if (targetMethods.size > 1) {
- error(attribute, "Ambiguous mixin method \"$targetName\" may refer to any of: ${targetMethods.joinToString {
+ error(literalExpr, "Ambiguous mixin method \"$targetName\" may refer to any of: ${targetMethods.joinToString {
"\"${it.name}${ClassUtil.getAsmMethodSignature(it)}\""
}}")
}