@Override public void visitLocalVariable(final String name, final String desc, final String signature, final Label start, final Label end, final int index) { buf.setLength(0); buf.append(tab2).append("LOCALVARIABLE ").append(name).append(' '); appendDescriptor(FIELD_DESCRIPTOR, desc); buf.append(' '); appendLabel(start); buf.append(' '); appendLabel(end); buf.append(' ').append(index).append('\n'); if (signature != null) { buf.append(tab2); appendDescriptor(FIELD_SIGNATURE, signature); TraceSignatureVisitor sv = new TraceSignatureVisitor(0); SignatureReader r = new SignatureReader(signature); r.acceptType(sv); buf.append(tab2).append("// declaration: ") .append(sv.getDeclaration()).append('\n'); } text.add(buf.toString()); }
/** * Converts a method descriptor / signature into strings like * <pre> * meth(java.lang.String, java.util.Map) * <T extends java.io.IOException>meth(T, double, java.lang.List<T>)</pre> * Notice that the result includes neither the return type nor the accessibility. */ public static String toString(String methodName, String methodDescriptor, @Nullable String methodSignature) { if (methodSignature != null) { TraceSignatureVisitor tsv = new TraceSignatureVisitor(0); new SignatureReader(methodSignature).accept(tsv); return methodName + tsv.getDeclaration(); } StringBuilder sb = new StringBuilder(methodName).append('('); Type[] ats = Type.getArgumentTypes(methodDescriptor); if (ats.length >= 1) { for (int i = 0;;) { sb.append(ats[i++].getClassName()); if (i == ats.length) break; sb.append(", "); } } return sb.append(')').toString(); } }
/** * Converts the given type signature to a human readable type string. * <p> * Example: {@code Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; -> java.util.Map<java.lang.String, java.lang.String>} */ public static String toReadableType(final String type) { final SignatureReader reader = new SignatureReader(type); final TraceSignatureVisitor visitor = new TraceSignatureVisitor(0); reader.acceptType(visitor); return visitor.getDeclaration(); }
/** * Appends the Java generic type declaration corresponding to the given signature. * * @param name a class, field or method name. * @param signature a class, field or method signature. */ private void appendJavaDeclaration(final String name, final String signature) { TraceSignatureVisitor traceSignatureVisitor = new TraceSignatureVisitor(access); new SignatureReader(signature).accept(traceSignatureVisitor); stringBuilder.append("// declaration: "); if (traceSignatureVisitor.getReturnType() != null) { stringBuilder.append(traceSignatureVisitor.getReturnType()); stringBuilder.append(' '); } stringBuilder.append(name); stringBuilder.append(traceSignatureVisitor.getDeclaration()); if (traceSignatureVisitor.getExceptions() != null) { stringBuilder.append(" throws ").append(traceSignatureVisitor.getExceptions()); } stringBuilder.append('\n'); }
r.acceptType(sv); buf.append(tab).append("// declaration: ") .append(sv.getDeclaration()).append('\n');
/** * Converts the given type signature to a human readable type string. * <p> * Example: {@code Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; -> java.util.Map<java.lang.String, java.lang.String>} */ public static String toReadableType(final String type) { final SignatureReader reader = new SignatureReader(type); final TraceSignatureVisitor visitor = new TraceSignatureVisitor(0); reader.acceptType(visitor); return visitor.getDeclaration(); }
new SignatureReader(signature).accept(v); String declaration = v.getDeclaration(), rType = v.getReturnType(); if(declaration.charAt(0)=='<') sb.append(declaration, 0, declaration.indexOf("(")).append(' '); sb.replace(sb.length()-3, sb.length(), "...)"); String genericExceptions = v.getExceptions(); if(genericExceptions!=null && !v.getDeclaration().isEmpty()) sb.append(" throws ").append(genericExceptions); else if(exceptions!=null && exceptions.length>0) {
r.accept(sv); buf.append("// declaration: ").append(name) .append(sv.getDeclaration()).append('\n');
/** * Appends the Java generic type declaration corresponding to the given signature. * * @param name a class, field or method name. * @param signature a class, field or method signature. */ private void appendJavaDeclaration(final String name, final String signature) { TraceSignatureVisitor traceSignatureVisitor = new TraceSignatureVisitor(access); new SignatureReader(signature).accept(traceSignatureVisitor); stringBuilder.append("// declaration: "); if (traceSignatureVisitor.getReturnType() != null) { stringBuilder.append(traceSignatureVisitor.getReturnType()); stringBuilder.append(' '); } stringBuilder.append(name); stringBuilder.append(traceSignatureVisitor.getDeclaration()); if (traceSignatureVisitor.getExceptions() != null) { stringBuilder.append(" throws ").append(traceSignatureVisitor.getExceptions()); } stringBuilder.append('\n'); }
SignatureReader r = new SignatureReader(signature); r.accept(v); String genericDecl = v.getDeclaration(); String genericReturn = v.getReturnType(); String genericExceptions = v.getExceptions();
String goldenSignature = v.getDeclaration();
public String declaration() { TraceSignatureVisitor visitor = new TraceSignatureVisitor(0); new SignatureReader(desc()).accept(visitor); return name() + visitor.getDeclaration(); }