make SignatureUtil format closer to JVM

This commit is contained in:
Stepan Koltsov
2011-12-14 01:19:05 +04:00
parent b86625a437
commit 1d4e12abb7
2 changed files with 17 additions and 5 deletions
@@ -68,6 +68,10 @@ public class SignatureUtil {
private static void genTypeParams(JetClass type, StringBuilder sb) {
List<JetTypeParameter> parameters = type.getTypeParameterList().getParameters();
if (parameters.isEmpty()) {
return;
}
sb.append('<');
for(JetTypeParameter param : parameters) {
sb.append("T");
Variance variance = param.getVariance();
@@ -78,5 +82,6 @@ public class SignatureUtil {
sb.append(param.getName());
sb.append(";");
}
sb.append('>');
}
}
+12 -5
View File
@@ -536,13 +536,20 @@ public abstract class TypeInfo<T> implements JetObject {
}
public void parseVars(Signature signature) {
while(cur < string.length && string[cur] == 'T') {
if(signature.variables == null) {
signature.variables = new LinkedList<TypeInfoProjection>();
signature.varNames = new HashMap<String, Integer>();
if (cur < string.length && string[cur] == '<') {
cur++;
while(cur < string.length && string[cur] != '>') {
if(signature.variables == null) {
signature.variables = new LinkedList<TypeInfoProjection>();
signature.varNames = new HashMap<String, Integer>();
}
if (string[cur] != 'T') {
throw new IllegalStateException(new String(string));
}
cur++;
signature.variables.add(parseVar(signature));
}
cur++;
signature.variables.add(parseVar(signature));
}
signature.variables = signature.variables == null ? Collections.<TypeInfoProjection>emptyList() : signature.variables;
signature.varNames = signature.varNames == null ? Collections.<String,Integer>emptyMap() : signature.varNames;