package org.checkerframework.dataflow.cfg.block;

/**
 * Represents a special basic block; i.e., one of the following:
 *
 * <ul>
 *   <li>Entry block of a method.
 *   <li>Regular exit block of a method.
 *   <li>Exceptional exit block of a method.
 * </ul>
 */
public interface SpecialBlock extends SingleSuccessorBlock {

  /** The types of special basic blocks. */
  public static enum SpecialBlockType {

    /** The entry block of a method. */
    ENTRY,

    /** The exit block of a method. */
    EXIT,

    /** A special exit block of a method for exceptional termination. */
    EXCEPTIONAL_EXIT,
  }

  /**
   * Returns the type of this special basic block.
   *
   * @return the type of this special basic block
   */
  SpecialBlockType getSpecialType();
}
