package org.checkerframework.framework.type;

import com.sun.source.tree.Tree;
import com.sun.source.util.SimpleTreeVisitor;
import org.checkerframework.javacutil.BugInCF;

/**
 * Converts a Tree into an AnnotatedTypeMirror. This class is abstract and provides 2 important
 * properties to subclasses:
 *
 * <ol>
 *   <li>It implements SimpleTreeVisitor with the appropriate type parameters
 *   <li>It provides a defaultAction that causes all visit methods to abort if the subclass does not
 *       override them
 * </ol>
 *
 * @see org.checkerframework.framework.type.TypeFromTree
 */
abstract class TypeFromTreeVisitor
    extends SimpleTreeVisitor<AnnotatedTypeMirror, AnnotatedTypeFactory> {

  TypeFromTreeVisitor() {}

  @Override
  public AnnotatedTypeMirror defaultAction(Tree node, AnnotatedTypeFactory f) {
    if (node == null) {
      throw new BugInCF("TypeFromTree.defaultAction: null tree");
    }
    throw new BugInCF(
        "TypeFromTree.defaultAction: conversion undefined for tree type " + node.getKind());
  }
}
