From ecfda21f3db9e62e3acf074e9842e92ace4cb3ab Mon Sep 17 00:00:00 2001 From: jeff Date: Tue, 17 Mar 2015 20:01:55 -0400 Subject: parsing generic signatures is tricky. don't write custom code to do it. switching to library instead --- src/cuchaz/enigma/bytecode/ClassRenamer.java | 9 ++-- src/cuchaz/enigma/mapping/ParameterizedType.java | 54 --------------------- src/cuchaz/enigma/mapping/Type.java | 61 +++--------------------- 3 files changed, 12 insertions(+), 112 deletions(-) delete mode 100644 src/cuchaz/enigma/mapping/ParameterizedType.java (limited to 'src/cuchaz') diff --git a/src/cuchaz/enigma/bytecode/ClassRenamer.java b/src/cuchaz/enigma/bytecode/ClassRenamer.java index d88daa5..d7acd30 100644 --- a/src/cuchaz/enigma/bytecode/ClassRenamer.java +++ b/src/cuchaz/enigma/bytecode/ClassRenamer.java @@ -34,7 +34,6 @@ import javassist.bytecode.SignatureAttribute.MethodSignature; import javassist.bytecode.SignatureAttribute.ObjectType; import cuchaz.enigma.mapping.ClassEntry; import cuchaz.enigma.mapping.ClassNameReplacer; -import cuchaz.enigma.mapping.ParameterizedType; import cuchaz.enigma.mapping.Translator; import cuchaz.enigma.mapping.Type; @@ -103,8 +102,8 @@ public class ClassRenamer { } public String getFramed(String typeName) { - ParameterizedType type = new ParameterizedType(new Type(typeName)); - ParameterizedType renamedType = new ParameterizedType(type, m_replacer); + Type type = new Type(typeName); + Type renamedType = new Type(type, m_replacer); if (!type.equals(renamedType)) { return renamedType.toString(); } @@ -115,6 +114,7 @@ public class ClassRenamer { // we can deal with the ones that start with a class String signature = type.encode(); + /* if (signature.startsWith("L") || signature.startsWith("[")) { // TEMP: skip special characters for now @@ -134,10 +134,11 @@ public class ClassRenamer { // don't need to care about template names return null; } else { + */ // TEMP System.out.println("Skipping translating: " + signature); return null; - } + //} } } diff --git a/src/cuchaz/enigma/mapping/ParameterizedType.java b/src/cuchaz/enigma/mapping/ParameterizedType.java deleted file mode 100644 index af24ef4..0000000 --- a/src/cuchaz/enigma/mapping/ParameterizedType.java +++ /dev/null @@ -1,54 +0,0 @@ -package cuchaz.enigma.mapping; - -import cuchaz.enigma.Util; - - - -public class ParameterizedType extends Type { - - private static final long serialVersionUID = 1758975507937309011L; - - public ParameterizedType(Type other) { - super(other); - for (int i=0; i;"); - return buf.toString(); - } else { - return m_name; - } - } - - @Override - public boolean equals(Object other) { - if (other instanceof ParameterizedType) { - return equals((ParameterizedType)other); - } - return false; - } - - public boolean equals(ParameterizedType other) { - return m_name.equals(other.m_name) && m_parameters.equals(other.m_parameters); - } - - public int hashCode() { - return Util.combineHashesOrdered(m_name.hashCode(), m_parameters.hashCode()); - } - -} diff --git a/src/cuchaz/enigma/mapping/Type.java b/src/cuchaz/enigma/mapping/Type.java index d530083..3f441e2 100644 --- a/src/cuchaz/enigma/mapping/Type.java +++ b/src/cuchaz/enigma/mapping/Type.java @@ -1,10 +1,8 @@ package cuchaz.enigma.mapping; import java.io.Serializable; -import java.util.List; import java.util.Map; -import com.beust.jcommander.internal.Lists; import com.google.common.collect.Maps; public class Type implements Serializable { @@ -85,43 +83,22 @@ public class Type implements Serializable { throw new IllegalArgumentException("don't know how to parse: " + in); } - + protected String m_name; - protected List m_parameters; public Type(String name) { - m_name = null; - m_parameters = Lists.newArrayList(); - int start = name.indexOf('<'); - int stop = name.lastIndexOf('>'); - if (start > 0 && stop > start) { - - // deal with generic parameters - m_name = name.substring(0, start) + name.substring(stop + 1); - - String parameters = name.substring(start + 1, stop); - int i=0; - while (i= 0 || name.indexOf('>') >= 0) { + throw new IllegalArgumentException("don't use with generic types or templates: " + name); } + + m_name = name; } public Type(Type other) { m_name = other.m_name; - m_parameters = Lists.newArrayList(); - for (Type parameter : other.m_parameters) { - m_parameters.add(new Type(parameter)); - } } public Type(ClassEntry classEntry) { @@ -141,11 +118,6 @@ public class Type implements Serializable { m_name = Type.getArrayPrefix(other.getArrayDimension()) + "L" + replacedName + ";"; } } - - m_parameters = Lists.newArrayList(); - for (Type parameter : other.m_parameters) { - m_parameters.add(new Type(parameter, replacer)); - } } @Override @@ -191,17 +163,6 @@ public class Type implements Serializable { } } - public boolean isTemplate() { - return m_name.charAt(0) == 'T' && m_name.charAt(m_name.length() - 1) == ';'; - } - - public String getTemplate() { - if (!isTemplate()) { - throw new IllegalStateException("not an template"); - } - return m_name.substring(1, m_name.length() - 1); - } - public boolean isArray() { return m_name.charAt(0) == '['; } @@ -232,14 +193,6 @@ public class Type implements Serializable { return isClass() || (isArray() && getArrayType().hasClass()); } - public boolean hasParameters() { - return !m_parameters.isEmpty(); - } - - public Iterable parameters() { - return m_parameters; - } - @Override public boolean equals(Object other) { if (other instanceof Type) { -- cgit v1.2.3