package polyglot.ast; import polyglot.types.MethodInstance; import polyglot.types.Flags; import java.util.List; /** * A method declaration. */ public interface MethodDecl extends ProcedureDecl { /** The method's flags. */ Flags flags(); /** Set the method's flags. */ MethodDecl flags(Flags flags); /** The method's return type. */ TypeNode returnType(); /** Set the method's return type. */ MethodDecl returnType(TypeNode returnType); /** The method's name. */ String name(); /** Set the method's name. */ MethodDecl name(String name); /** The method's formal parameters. * @return A list of {@link polyglot.ast.Formal Formal}. */ List formals(); /** Set the method's formal parameters. * @param formals A list of {@link polyglot.ast.Formal Formal}. */ MethodDecl formals(List formals); /** The method's exception throw types. * @return A list of {@link polyglot.ast.TypeNode TypeNode}. */ List throwTypes(); /** Set the method's exception throw types. * @param throwTypes A list of {@link polyglot.ast.TypeNode TypeNode}. */ MethodDecl throwTypes(List throwTypes); /** * The method type object. This field may not be valid until * after signature disambiguation. */ MethodInstance methodInstance(); /** Set the method's type object. */ MethodDecl methodInstance(MethodInstance mi); }