提交 ba1524dc 编写于 作者: S Skylot

Fix arrays parsing in signature

上级 0ee499c5
......@@ -53,7 +53,7 @@ public final class ClassInfo {
this.type = type;
String fullObjectName = type.getObject();
assert fullObjectName.indexOf('/') == -1;
assert fullObjectName.indexOf('/') == -1 : "Raw type: " + type;
boolean notObfuscated = dex.root().getJadxArgs().isNotObfuscated();
String name;
......
......@@ -399,13 +399,16 @@ public abstract class ArgType {
if (b == -1)
return parse(sign);
String obj = sign.substring(0, b);
if (sign.charAt(0) == '[')
return array(parseSignature(sign.substring(1)));
String obj = sign.substring(0, b) + ";";
String genericsStr = sign.substring(b + 1, sign.length() - 2);
List<ArgType> generics = parseSignatureList(genericsStr);
if (generics != null)
return generic(obj + ";", generics.toArray(new ArgType[generics.size()]));
return generic(obj, generics.toArray(new ArgType[generics.size()]));
else
return object(obj + ";");
return object(obj);
}
public static List<ArgType> parseSignatureList(String str) {
......@@ -418,12 +421,11 @@ public abstract class ArgType {
}
private static List<ArgType> parseSignatureListInner(String str, boolean parsePrimitives) {
List<ArgType> signs = new ArrayList<ArgType>(3);
if (str.equals("*")) {
signs.add(UNKNOWN);
return signs;
return Arrays.asList(UNKNOWN);
}
List<ArgType> signs = new ArrayList<ArgType>(3);
int obj = 0;
int objStart = 0;
int gen = 0;
......
......@@ -9,6 +9,8 @@ public class TestGenerics extends AbstractTest {
public List<String> strings;
public Class<?>[] classes;
public static class GenericClass implements Comparable<String> {
@Override
public int compareTo(String o) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册