diff options
author | Jonas Herzig <me@johni0702.de> | 2019-05-25 18:47:19 +0200 |
---|---|---|
committer | Jonas Herzig <me@johni0702.de> | 2019-05-25 18:47:19 +0200 |
commit | 5db2235f83ae0087c0f0a8ba0e6c3792d68e6bea (patch) | |
tree | b13766c9daad6f089d5480ce4915800f884d82c5 | |
parent | 0da1aaeb4ff35a96648fe93b1a250392ced615eb (diff) | |
download | Remap-5db2235f83ae0087c0f0a8ba0e6c3792d68e6bea.tar.gz Remap-5db2235f83ae0087c0f0a8ba0e6c3792d68e6bea.tar.bz2 Remap-5db2235f83ae0087c0f0a8ba0e6c3792d68e6bea.zip |
Fix overridden super-super-class methods with no mappings for super class
E.g. A extends B extends C where only C has declared mappings will
prematurely stop searching for C-methods overridden in A because
there are no mappings for B
-rw-r--r-- | src/main/java/com/replaymod/gradle/remap/Transformer.java | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/main/java/com/replaymod/gradle/remap/Transformer.java b/src/main/java/com/replaymod/gradle/remap/Transformer.java index de81501..e41867f 100644 --- a/src/main/java/com/replaymod/gradle/remap/Transformer.java +++ b/src/main/java/com/replaymod/gradle/remap/Transformer.java @@ -520,17 +520,18 @@ class Transformer { } mapping = null; } - - ITypeBinding superClass = declaringClass.getSuperclass(); - if (superClass != null) { - parentQueue.offer(superClass); - } - for (ITypeBinding anInterface : declaringClass.getInterfaces()) { - parentQueue.offer(anInterface); - } while (mapping == null) { declaringClass = parentQueue.poll(); if (declaringClass == null) return true; + + ITypeBinding superClass = declaringClass.getSuperclass(); + if (superClass != null) { + parentQueue.offer(superClass); + } + for (ITypeBinding anInterface : declaringClass.getInterfaces()) { + parentQueue.offer(anInterface); + } + name = stripGenerics(declaringClass.getQualifiedName()); if (name.isEmpty()) continue; mapping = map.get(name); |