diff options
| author | 2023-06-17 11:58:02 +0200 | |
|---|---|---|
| committer | 2023-10-09 11:55:18 +0200 | |
| commit | 58b67c0e8e8fa802b98f9ed43f2f38d9d4a35e2b (patch) | |
| tree | 055066e1a06bca8e882dcb7aea6670cdb029465a /enigma | |
| parent | Update to latest Mapping IO commit (diff) | |
| download | enigma-fork-58b67c0e8e8fa802b98f9ed43f2f38d9d4a35e2b.tar.gz enigma-fork-58b67c0e8e8fa802b98f9ed43f2f38d9d4a35e2b.tar.xz enigma-fork-58b67c0e8e8fa802b98f9ed43f2f38d9d4a35e2b.zip | |
Add support for method vars and arg/var comments
Diffstat (limited to 'enigma')
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingIoConverter.java | 76 |
1 files changed, 56 insertions, 20 deletions
diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingIoConverter.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingIoConverter.java index 171f252..05d862a 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingIoConverter.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingIoConverter.java | |||
| @@ -11,6 +11,7 @@ import net.fabricmc.mappingio.tree.MappingTree.ClassMapping; | |||
| 11 | import net.fabricmc.mappingio.tree.MappingTree.FieldMapping; | 11 | import net.fabricmc.mappingio.tree.MappingTree.FieldMapping; |
| 12 | import net.fabricmc.mappingio.tree.MappingTree.MethodArgMapping; | 12 | import net.fabricmc.mappingio.tree.MappingTree.MethodArgMapping; |
| 13 | import net.fabricmc.mappingio.tree.MappingTree.MethodMapping; | 13 | import net.fabricmc.mappingio.tree.MappingTree.MethodMapping; |
| 14 | import net.fabricmc.mappingio.tree.MappingTree.MethodVarMapping; | ||
| 14 | 15 | ||
| 15 | import cuchaz.enigma.ProgressListener; | 16 | import cuchaz.enigma.ProgressListener; |
| 16 | import cuchaz.enigma.translation.mapping.EntryMap; | 17 | import cuchaz.enigma.translation.mapping.EntryMap; |
| @@ -116,28 +117,50 @@ public class MappingIoConverter { | |||
| 116 | for (EntryTreeNode<EntryMapping> child : methodNode.getChildNodes()) { | 117 | for (EntryTreeNode<EntryMapping> child : methodNode.getChildNodes()) { |
| 117 | Entry<?> entry = child.getEntry(); | 118 | Entry<?> entry = child.getEntry(); |
| 118 | 119 | ||
| 119 | if (entry instanceof LocalVariableEntry) { | 120 | if (entry instanceof LocalVariableEntry local) { |
| 120 | writeMethodArg(child, mappingTree); | 121 | if (local.isArgument()) { |
| 122 | writeMethodArg(child, mappingTree); | ||
| 123 | } else { | ||
| 124 | writeMethodVar(child, mappingTree); | ||
| 125 | } | ||
| 121 | } | 126 | } |
| 122 | } | 127 | } |
| 123 | } | 128 | } |
| 124 | 129 | ||
| 125 | private static void writeMethodArg(EntryTreeNode<EntryMapping> methodArgNode, MemoryMappingTree mappingTree) { | 130 | private static void writeMethodArg(EntryTreeNode<EntryMapping> argNode, MemoryMappingTree mappingTree) { |
| 126 | if (methodArgNode.getValue() == null || methodArgNode.getValue().equals(EntryMapping.DEFAULT)) { | 131 | if (argNode.getValue() == null || argNode.getValue().equals(EntryMapping.DEFAULT)) { |
| 127 | return; // Shortcut | 132 | return; // Shortcut |
| 128 | } | 133 | } |
| 129 | 134 | ||
| 130 | LocalVariableEntry methodArgEntry = ((LocalVariableEntry) methodArgNode.getEntry()); | 135 | LocalVariableEntry argEntry = ((LocalVariableEntry) argNode.getEntry()); |
| 131 | mappingTree.visitMethodArg(-1, methodArgEntry.getIndex(), methodArgEntry.getName()); | 136 | mappingTree.visitMethodArg(-1, argEntry.getIndex(), argEntry.getName()); |
| 132 | 137 | ||
| 133 | EntryMapping methodArgMapping = methodArgNode.getValue(); | 138 | EntryMapping argMapping = argNode.getValue(); |
| 134 | 139 | ||
| 135 | if (methodArgMapping == null) { | 140 | if (argMapping == null) { |
| 136 | methodArgMapping = EntryMapping.DEFAULT; | 141 | argMapping = EntryMapping.DEFAULT; |
| 137 | } | 142 | } |
| 138 | 143 | ||
| 139 | mappingTree.visitDstName(MappedElementKind.METHOD_ARG, 0, methodArgMapping.targetName()); | 144 | mappingTree.visitDstName(MappedElementKind.METHOD_ARG, 0, argMapping.targetName()); |
| 140 | mappingTree.visitComment(MappedElementKind.METHOD_ARG, methodArgMapping.javadoc()); | 145 | mappingTree.visitComment(MappedElementKind.METHOD_ARG, argMapping.javadoc()); |
| 146 | } | ||
| 147 | |||
| 148 | private static void writeMethodVar(EntryTreeNode<EntryMapping> varNode, MemoryMappingTree mappingTree) { | ||
| 149 | if (varNode.getValue() == null || varNode.getValue().equals(EntryMapping.DEFAULT)) { | ||
| 150 | return; // Shortcut | ||
| 151 | } | ||
| 152 | |||
| 153 | LocalVariableEntry varEntry = ((LocalVariableEntry) varNode.getEntry()); | ||
| 154 | mappingTree.visitMethodVar(-1, varEntry.getIndex(), -1, -1, varEntry.getName()); | ||
| 155 | |||
| 156 | EntryMapping varMapping = varNode.getValue(); | ||
| 157 | |||
| 158 | if (varMapping == null) { | ||
| 159 | varMapping = EntryMapping.DEFAULT; | ||
| 160 | } | ||
| 161 | |||
| 162 | mappingTree.visitDstName(MappedElementKind.METHOD_VAR, 0, varMapping.targetName()); | ||
| 163 | mappingTree.visitComment(MappedElementKind.METHOD_VAR, varMapping.javadoc()); | ||
| 141 | } | 164 | } |
| 142 | 165 | ||
| 143 | public static EntryTree<EntryMapping> fromMappingIo(MemoryMappingTree mappingTree, ProgressListener progress) { | 166 | public static EntryTree<EntryMapping> fromMappingIo(MemoryMappingTree mappingTree, ProgressListener progress) { |
| @@ -161,7 +184,7 @@ public class MappingIoConverter { | |||
| 161 | dstName = dstName.substring(dstName.lastIndexOf('$') + 1); | 184 | dstName = dstName.substring(dstName.lastIndexOf('$') + 1); |
| 162 | } | 185 | } |
| 163 | 186 | ||
| 164 | mappingTree.insert(currentClass, new EntryMapping(dstName)); | 187 | mappingTree.insert(currentClass, new EntryMapping(dstName, classMapping.getComment())); |
| 165 | 188 | ||
| 166 | for (FieldMapping fieldMapping : classMapping.getFields()) { | 189 | for (FieldMapping fieldMapping : classMapping.getFields()) { |
| 167 | readField(fieldMapping, currentClass, mappingTree); | 190 | readField(fieldMapping, currentClass, mappingTree); |
| @@ -174,23 +197,36 @@ public class MappingIoConverter { | |||
| 174 | 197 | ||
| 175 | private static void readField(FieldMapping fieldMapping, ClassEntry parent, EntryTree<EntryMapping> mappingTree) { | 198 | private static void readField(FieldMapping fieldMapping, ClassEntry parent, EntryTree<EntryMapping> mappingTree) { |
| 176 | mappingTree.insert(new FieldEntry(parent, fieldMapping.getSrcName(), new TypeDescriptor(fieldMapping.getSrcDesc())), | 199 | mappingTree.insert(new FieldEntry(parent, fieldMapping.getSrcName(), new TypeDescriptor(fieldMapping.getSrcDesc())), |
| 177 | new EntryMapping(fieldMapping.getDstName(0))); | 200 | new EntryMapping(fieldMapping.getDstName(0), fieldMapping.getComment())); |
| 178 | } | 201 | } |
| 179 | 202 | ||
| 180 | private static void readMethod(MethodMapping methodMapping, ClassEntry parent, EntryTree<EntryMapping> mappingTree) { | 203 | private static void readMethod(MethodMapping methodMapping, ClassEntry parent, EntryTree<EntryMapping> mappingTree) { |
| 181 | MethodEntry currentMethod; | 204 | MethodEntry currentMethod; |
| 182 | mappingTree.insert(currentMethod = new MethodEntry(parent, methodMapping.getSrcName(), new MethodDescriptor(methodMapping.getSrcDesc())), | 205 | mappingTree.insert(currentMethod = new MethodEntry(parent, methodMapping.getSrcName(), new MethodDescriptor(methodMapping.getSrcDesc())), |
| 183 | new EntryMapping(methodMapping.getDstName(0))); | 206 | new EntryMapping(methodMapping.getDstName(0), methodMapping.getComment())); |
| 207 | |||
| 208 | for (MethodArgMapping argMapping : methodMapping.getArgs()) { | ||
| 209 | readMethodArg(argMapping, currentMethod, mappingTree); | ||
| 210 | } | ||
| 184 | 211 | ||
| 185 | for (MethodArgMapping methodArgMapping : methodMapping.getArgs()) { | 212 | for (MethodVarMapping varMapping : methodMapping.getVars()) { |
| 186 | readMethodArg(methodArgMapping, currentMethod, mappingTree); | 213 | readMethodVar(varMapping, currentMethod, mappingTree); |
| 187 | } | 214 | } |
| 188 | } | 215 | } |
| 189 | 216 | ||
| 190 | private static void readMethodArg(MethodArgMapping methodArgMapping, MethodEntry parent, EntryTree<EntryMapping> mappingTree) { | 217 | private static void readMethodArg(MethodArgMapping argMapping, MethodEntry parent, EntryTree<EntryMapping> mappingTree) { |
| 191 | String methodArgSrcName = methodArgMapping.getSrcName() != null ? methodArgMapping.getSrcName() : ""; | 218 | String srcName = argMapping.getSrcName() != null ? argMapping.getSrcName() : ""; |
| 219 | |||
| 220 | mappingTree.insert( | ||
| 221 | new LocalVariableEntry(parent, argMapping.getLvIndex(), srcName, true, null), | ||
| 222 | new EntryMapping(argMapping.getDstName(0), argMapping.getComment())); | ||
| 223 | } | ||
| 224 | |||
| 225 | private static void readMethodVar(MethodVarMapping varMapping, MethodEntry parent, EntryTree<EntryMapping> mappingTree) { | ||
| 226 | String srcName = varMapping.getSrcName() != null ? varMapping.getSrcName() : ""; | ||
| 192 | 227 | ||
| 193 | mappingTree.insert(new LocalVariableEntry(parent, methodArgMapping.getLvIndex(), methodArgSrcName, true, null), | 228 | mappingTree.insert( |
| 194 | new EntryMapping(methodArgMapping.getDstName(0))); | 229 | new LocalVariableEntry(parent, varMapping.getLvIndex(), srcName, false, null), |
| 230 | new EntryMapping(varMapping.getDstName(0), varMapping.getComment())); | ||
| 195 | } | 231 | } |
| 196 | } | 232 | } |