package polyglot.ast;
import polyglot.types.ProcedureInstance;
import polyglot.types.Flags;
import java.util.List;
/**
* A procedure declaration. A procedure is the supertype of methods and
* constructors.
*/
public interface ProcedureDecl extends CodeDecl
{
/** The procedure's flags. */
Flags flags();
/** The procedure's name. */
String name();
/** The procedure's formal parameters.
* @return A list of {@link polyglot.ast.Formal Formal}.
*/
List formals();
/** The procedure's exception throw types.
* @return A list of {@link polyglot.ast.TypeNode TypeNode}.
*/
List throwTypes();
/**
* The procedure type object. This field may not be valid until
* after signature disambiguation.
*/
ProcedureInstance procedureInstance();
}