aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/com/replaymod/gradle/remap
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/com/replaymod/gradle/remap')
-rw-r--r--src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt b/src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt
index 3adc4f1..07d7d1d 100644
--- a/src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt
+++ b/src/main/kotlin/com/replaymod/gradle/remap/PsiMapper.kt
@@ -399,10 +399,24 @@ internal class PsiMapper(
val name = signature.substring(ownerEnd + 1, argsBegin)
val returnType = signature.substring(argsEnd + 1)
+ val ownerPsi = JavaPsiFacade.getInstance(file.project).findClass(
+ owner.drop(1).dropLast(1).replace('/', '.').replace('$', '.'),
+ GlobalSearchScope.allScope(file.project),
+ )
+ val methodPsi = if (method) {
+ val desc = signature.substring(argsBegin)
+ ownerPsi?.findMethodsByName(name, true)?.find { ClassUtil.getAsmMethodSignature(it) == desc }
+ } else {
+ null
+ }
+
val builder = StringBuilder(signature.length + 32)
val mapping = remapInternalType(owner, builder)
var mapped: String? = null
- if (mapping != null) {
+ if (methodPsi != null) {
+ mapped = findMapping(methodPsi)?.deobfuscatedName
+ }
+ if (mapped == null && mapping != null) {
mapped = (if (method) {
mapping.findMethodMapping(MethodSignature.of(signature.substring(ownerEnd + 1)))
} else {