package org.checkerframework.dataflow.cfg.block;

import org.checkerframework.checker.nullness.qual.Nullable;
import org.checkerframework.dataflow.analysis.Store.FlowRule;
import org.checkerframework.dataflow.qual.Pure;

/** A basic block that has at exactly one non-exceptional successor. */
public interface SingleSuccessorBlock extends Block {

  /**
   * Returns the non-exceptional successor block, or {@code null} if there is no non-exceptional
   * successor.
   *
   * @return the non-exceptional successor block, or {@code null} if there is no non-exceptional
   *     successor
   */
  @Pure
  @Nullable Block getSuccessor();

  /**
   * Returns the flow rule for information flowing from this block to its successor.
   *
   * @return the flow rule for information flowing from this block to its successor
   */
  @Pure
  FlowRule getFlowRule();

  /**
   * Set the flow rule for information flowing from this block to its successor.
   *
   * @param rule the new flow rule for information flowing from this block to its successor
   */
  void setFlowRule(FlowRule rule);
}
