package polyglot.ast; import polyglot.types.ConstructorInstance; import java.util.List; import polyglot.types.Flags; /** * A <code>ConstructorDecl</code> is an immutable representation of a * constructor declaration as part of a class body. */ public interface ConstructorDecl extends ProcedureDecl { /** The constructor's flags. */ Flags flags(); /** Set the constructor's flags. */ ConstructorDecl flags(Flags flags); /** * The constructor's name. This should be the short name of the * containing class. */ String name(); /** Set the constructor's name. */ ConstructorDecl name(String name); /** The constructor's formal parameters. * @return A list of {@link polyglot.ast.Formal Formal}. */ List formals(); /** Set the constructor's formal parameters. * @param formals A list of {@link polyglot.ast.Formal Formal}. */ ConstructorDecl formals(List formals); /** The constructor's exception throw types. * @return A list of {@link polyglot.ast.TypeNode TypeNode}. */ List throwTypes(); /** Set the constructor's exception throw types. * @param throwTypes A list of {@link polyglot.ast.TypeNode TypeNode}. */ ConstructorDecl throwTypes(List throwTypes); /** * The constructor type object. This field may not be valid until * after signature disambiguation. */ ConstructorInstance constructorInstance(); /** Set the constructor's type object. */ ConstructorDecl constructorInstance(ConstructorInstance ci); }