diff options
author | Sychic <47618543+Sychic@users.noreply.github.com> | 2024-05-06 10:13:52 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-06 16:13:52 +0200 |
commit | 5134612493d43da328a2567e8425981094d67c50 (patch) | |
tree | 08270a7c1504f6a951bd515bcae7d3d65e594571 /src | |
parent | 78d264552f201c388ab833617d4d3ff7ed67eee8 (diff) | |
download | Remap-5134612493d43da328a2567e8425981094d67c50.tar.gz Remap-5134612493d43da328a2567e8425981094d67c50.tar.bz2 Remap-5134612493d43da328a2567e8425981094d67c50.zip |
Override `createInnerClassMapping` for `LegacyMappingSetModelFactory` (#22)
Co-authored-by: DJtheRedstoner <52044242+DJtheRedstoner@users.noreply.github.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/main/kotlin/com/replaymod/gradle/remap/legacy/LegacyMappingSetModelFactory.kt | 28 |
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 + } + } + } } |