aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/kotlin/com/replaymod/gradle/remap/legacy/LegacyMappingSetModelFactory.kt28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/main/kotlin/com/replaymod/gradle/remap/legacy/LegacyMappingSetModelFactory.kt b/src/main/kotlin/com/replaymod/gradle/remap/legacy/LegacyMappingSetModelFactory.kt
index ec21546..6d463f0 100644
--- a/src/main/kotlin/com/replaymod/gradle/remap/legacy/LegacyMappingSetModelFactory.kt
+++ b/src/main/kotlin/com/replaymod/gradle/remap/legacy/LegacyMappingSetModelFactory.kt
@@ -3,7 +3,10 @@ package com.replaymod.gradle.remap.legacy
import org.cadixdev.bombe.type.signature.MethodSignature
import org.cadixdev.lorenz.MappingSet
import org.cadixdev.lorenz.impl.MappingSetModelFactoryImpl
+import org.cadixdev.lorenz.impl.model.InnerClassMappingImpl
import org.cadixdev.lorenz.impl.model.TopLevelClassMappingImpl
+import org.cadixdev.lorenz.model.ClassMapping
+import org.cadixdev.lorenz.model.InnerClassMapping
import org.cadixdev.lorenz.model.MethodMapping
import org.cadixdev.lorenz.model.TopLevelClassMapping
import java.util.*
@@ -29,4 +32,29 @@ class LegacyMappingSetModelFactory : MappingSetModelFactoryImpl() {
}
}
}
+
+ override fun createInnerClassMapping(
+ parent: ClassMapping<out ClassMapping<*, *>, *>?,
+ obfuscatedName: String?,
+ deobfuscatedName: String?
+ ): InnerClassMapping {
+ return object : InnerClassMappingImpl(parent, obfuscatedName, deobfuscatedName) {
+ private fun stripDesc(signature: MethodSignature): MethodSignature {
+ // actual descriptor isn't included in legacy format
+ return MethodSignature.of(signature.name, "()V")
+ }
+
+ override fun hasMethodMapping(signature: MethodSignature): Boolean {
+ return super.hasMethodMapping(signature) || super.hasMethodMapping(stripDesc(signature))
+ }
+
+ override fun getMethodMapping(signature: MethodSignature): Optional<MethodMapping> {
+ var maybeMapping = super.getMethodMapping(signature)
+ if (!maybeMapping.isPresent || maybeMapping.get().let { it.signature == it.deobfuscatedSignature }) {
+ maybeMapping = super.getMethodMapping(stripDesc(signature))
+ }
+ return maybeMapping
+ }
+ }
+ }
}