From 69e27a049d903ad63f7d973726cff4dd9208d0b2 Mon Sep 17 00:00:00 2001 From: Runemoro Date: Wed, 20 Jun 2018 17:06:11 -0400 Subject: [PATCH] Automatically fix inheritance problems and log errors --- .../dimdev/javaremapper/SimpleRemapper.java | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/dimdev/javaremapper/SimpleRemapper.java b/src/main/java/org/dimdev/javaremapper/SimpleRemapper.java index 065fa5c..523b811 100644 --- a/src/main/java/org/dimdev/javaremapper/SimpleRemapper.java +++ b/src/main/java/org/dimdev/javaremapper/SimpleRemapper.java @@ -19,28 +19,42 @@ public String map(String typeName) { @Override public String mapFieldName(String owner, String name, String desc) { String newName = mapping.getField(owner, name, desc); - if (newName != null) return newName; for (String superclass : inheritanceProvider.getAllSuperclasses(owner)) { if (inheritanceProvider.getInheritableFields(superclass).contains(new MemberRef(name, desc))) { - newName = mapping.getField(superclass, name, desc); - if (newName != null) return newName; + String inheritedNewName = mapping.getField(superclass, name, desc); + if (inheritedNewName != null) { + if (newName != null && !inheritedNewName.equals(newName)) { + System.err.println("Field inheritance problem: " + owner + "." + name + " " + desc + + " inherits " + superclass + "." + name + " " + desc + + " but " + newName + " != " + inheritedNewName); + } + return inheritedNewName; + } } } + if (newName != null) return newName; return name; } @Override public String mapMethodName(String owner, String name, String desc) { String newName = mapping.getMethod(owner, name, desc); - if (newName != null) return newName; for (String superclass : inheritanceProvider.getAllSuperclasses(owner)) { if (inheritanceProvider.getInheritableMethods(superclass).contains(new MemberRef(name, desc))) { - newName = mapping.getMethod(superclass, name, desc); - if (newName != null) return newName; + String inheritedNewName = mapping.getMethod(superclass, name, desc); + if (inheritedNewName != null) { + if (newName != null && !inheritedNewName.equals(newName)) { + System.err.println("Method inheritance problem: " + owner + "." + name + desc + + " inherits " + superclass + "." + name + desc + + " but " + newName + " != " + inheritedNewName); + } + return inheritedNewName; + } } } + if (newName != null) return newName; return name; } }