--- old/src/share/classes/com/sun/tools/classfile/Type.java 2009-12-27 19:02:15.000000000 +0100 +++ new/src/share/classes/com/sun/tools/classfile/Type.java 2009-12-27 19:02:15.000000000 +0100 @@ -63,6 +63,7 @@ R visitSimpleType(SimpleType type, P p); R visitArrayType(ArrayType type, P p); R visitMethodType(MethodType type, P p); + R visitFunctionType(FunctionType type, P p); R visitClassSigType(ClassSigType type, P p); R visitClassType(ClassType type, P p); R visitTypeParamType(TypeParamType type, P p); @@ -179,6 +180,37 @@ } /** + * Represents a method type signature. + * + * See; + * JVMS ??? + * FunctionTypeSignature: + * {@code #} ReturnType {@code (} TypeSignature* {@code)} + */ + public static class FunctionType extends Type { + public FunctionType(Type returnType, + List parameterTypes) { + this.returnType = returnType; + this.parameterTypes = parameterTypes; + } + + public R accept(Visitor visitor, D data) { + return visitor.visitFunctionType(this, data); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append('#').append(returnType); + append(sb, "(", parameterTypes, ")"); + return sb.toString(); + } + + public final List parameterTypes; + public final Type returnType; + } + + /** * Represents a class signature. These describe the signature of * a class that has type arguments. *