blob: 0ce0575f478b96e573a947273d0946e5940238f7 [file] [log] [blame]
package org.checkerframework.framework.type.visitor;
import org.checkerframework.framework.type.AnnotatedTypeMirror;
import org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedArrayType;
import org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedDeclaredType;
import org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedExecutableType;
import org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedIntersectionType;
import org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedNoType;
import org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedNullType;
import org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedPrimitiveType;
import org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedTypeVariable;
import org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedUnionType;
import org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedWildcardType;
import org.checkerframework.framework.util.AtmCombo;
import org.checkerframework.javacutil.BugInCF;
/**
* Implements all methods from AtmComboVisitor. By default all methods throw an exception. Implement
* only those methods you expect to be called on your subclass.
*
* <p>This class does no traversal.
*/
public abstract class AbstractAtmComboVisitor<RETURN_TYPE, PARAM>
implements AtmComboVisitor<RETURN_TYPE, PARAM> {
/**
* Formats type1, type2 and param into an error message used by all methods of
* AbstractAtmComboVisitor that are not overridden. Normally, this method should indicate that the
* given method (and therefore the given pair of type mirror classes) is not supported by this
* class.
*
* @param type1 the first AnnotatedTypeMirror parameter to the visit method called
* @param type2 the second AnnotatedTypeMirror parameter to the visit method called
* @param param subtype specific parameter passed to every visit method
* @return an error message
*/
protected abstract String defaultErrorMessage(
AnnotatedTypeMirror type1, AnnotatedTypeMirror type2, PARAM param);
/**
* Called by the default implementation of every AbstractAtmComboVisitor visit method. This
* methodnS issues a runtime exception by default. In general, it should handle the case where a
* visit method has been called with a pair of type mirrors that should never be passed to this
* particular visitor.
*
* @param type1 the first AnnotatedTypeMirror parameter to the visit method called
* @param type2 the second AnnotatedTypeMirror parameter to the visit method called
* @param param subtype specific parameter passed to every visit method
*/
protected RETURN_TYPE defaultAction(
AnnotatedTypeMirror type1, AnnotatedTypeMirror type2, PARAM param) {
throw new BugInCF(defaultErrorMessage(type1, type2, param));
}
/**
* Dispatches to a more specific {@code visit*} method.
*
* @param type1 the first type to visit
* @param type2 the second type to visit
* @param param a value passed to every visit method
* @return the result of calling the more specific {@code visit*} method
*/
public RETURN_TYPE visit(
final AnnotatedTypeMirror type1, final AnnotatedTypeMirror type2, PARAM param) {
return AtmCombo.accept(type1, type2, param, this);
}
@Override
public RETURN_TYPE visitArray_Array(
AnnotatedArrayType type1, AnnotatedArrayType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitArray_Declared(
AnnotatedArrayType type1, AnnotatedDeclaredType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitArray_Executable(
AnnotatedArrayType type1, AnnotatedExecutableType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitArray_Intersection(
AnnotatedArrayType type1, AnnotatedIntersectionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitArray_None(AnnotatedArrayType type1, AnnotatedNoType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitArray_Null(
AnnotatedArrayType type1, AnnotatedNullType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitArray_Primitive(
AnnotatedArrayType type1, AnnotatedPrimitiveType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitArray_Typevar(
AnnotatedArrayType type1, AnnotatedTypeVariable type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitArray_Union(
AnnotatedArrayType type1, AnnotatedUnionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitArray_Wildcard(
AnnotatedArrayType type1, AnnotatedWildcardType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitDeclared_Array(
AnnotatedDeclaredType type1, AnnotatedArrayType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitDeclared_Declared(
AnnotatedDeclaredType type1, AnnotatedDeclaredType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitDeclared_Executable(
AnnotatedDeclaredType type1, AnnotatedExecutableType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitDeclared_Intersection(
AnnotatedDeclaredType type1, AnnotatedIntersectionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitDeclared_None(
AnnotatedDeclaredType type1, AnnotatedNoType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitDeclared_Null(
AnnotatedDeclaredType type1, AnnotatedNullType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitDeclared_Primitive(
AnnotatedDeclaredType type1, AnnotatedPrimitiveType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitDeclared_Typevar(
AnnotatedDeclaredType type1, AnnotatedTypeVariable type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitDeclared_Union(
AnnotatedDeclaredType type1, AnnotatedUnionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitDeclared_Wildcard(
AnnotatedDeclaredType type1, AnnotatedWildcardType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitExecutable_Array(
AnnotatedExecutableType type1, AnnotatedArrayType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitExecutable_Declared(
AnnotatedExecutableType type1, AnnotatedDeclaredType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitExecutable_Executable(
AnnotatedExecutableType type1, AnnotatedExecutableType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitExecutable_Intersection(
AnnotatedExecutableType type1, AnnotatedIntersectionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitExecutable_None(
AnnotatedExecutableType type1, AnnotatedNoType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitExecutable_Null(
AnnotatedExecutableType type1, AnnotatedNullType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitExecutable_Primitive(
AnnotatedExecutableType type1, AnnotatedPrimitiveType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitExecutable_Typevar(
AnnotatedExecutableType type1, AnnotatedTypeVariable type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitExecutable_Union(
AnnotatedExecutableType type1, AnnotatedUnionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitExecutable_Wildcard(
AnnotatedExecutableType type1, AnnotatedWildcardType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitIntersection_Array(
AnnotatedIntersectionType type1, AnnotatedArrayType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitIntersection_Declared(
AnnotatedIntersectionType type1, AnnotatedDeclaredType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitIntersection_Executable(
AnnotatedIntersectionType type1, AnnotatedExecutableType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitIntersection_Intersection(
AnnotatedIntersectionType type1, AnnotatedIntersectionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitIntersection_None(
AnnotatedIntersectionType type1, AnnotatedNoType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitIntersection_Null(
AnnotatedIntersectionType type1, AnnotatedNullType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitIntersection_Primitive(
AnnotatedIntersectionType type1, AnnotatedPrimitiveType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitIntersection_Typevar(
AnnotatedIntersectionType type1, AnnotatedTypeVariable type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitIntersection_Union(
AnnotatedIntersectionType type1, AnnotatedUnionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitIntersection_Wildcard(
AnnotatedIntersectionType type1, AnnotatedWildcardType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNone_Array(AnnotatedNoType type1, AnnotatedArrayType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNone_Declared(
AnnotatedNoType type1, AnnotatedDeclaredType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNone_Executable(
AnnotatedNoType type1, AnnotatedExecutableType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNone_Intersection(
AnnotatedNoType type1, AnnotatedIntersectionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNone_None(AnnotatedNoType type1, AnnotatedNoType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNone_Null(AnnotatedNoType type1, AnnotatedNullType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNone_Primitive(
AnnotatedNoType type1, AnnotatedPrimitiveType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNone_Union(AnnotatedNoType type1, AnnotatedUnionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNone_Wildcard(
AnnotatedNoType type1, AnnotatedWildcardType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNull_Array(
AnnotatedNullType type1, AnnotatedArrayType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNull_Declared(
AnnotatedNullType type1, AnnotatedDeclaredType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNull_Executable(
AnnotatedNullType type1, AnnotatedExecutableType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNull_Intersection(
AnnotatedNullType type1, AnnotatedIntersectionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNull_None(AnnotatedNullType type1, AnnotatedNoType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNull_Null(AnnotatedNullType type1, AnnotatedNullType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNull_Primitive(
AnnotatedNullType type1, AnnotatedPrimitiveType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNull_Typevar(
AnnotatedNullType type1, AnnotatedTypeVariable type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNull_Union(
AnnotatedNullType type1, AnnotatedUnionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitNull_Wildcard(
AnnotatedNullType type1, AnnotatedWildcardType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitPrimitive_Array(
AnnotatedPrimitiveType type1, AnnotatedArrayType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitPrimitive_Declared(
AnnotatedPrimitiveType type1, AnnotatedDeclaredType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitPrimitive_Executable(
AnnotatedPrimitiveType type1, AnnotatedExecutableType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitPrimitive_Intersection(
AnnotatedPrimitiveType type1, AnnotatedIntersectionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitPrimitive_None(
AnnotatedPrimitiveType type1, AnnotatedNoType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitPrimitive_Null(
AnnotatedPrimitiveType type1, AnnotatedNullType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitPrimitive_Primitive(
AnnotatedPrimitiveType type1, AnnotatedPrimitiveType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitPrimitive_Typevar(
AnnotatedPrimitiveType type1, AnnotatedTypeVariable type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitPrimitive_Union(
AnnotatedPrimitiveType type1, AnnotatedUnionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitPrimitive_Wildcard(
AnnotatedPrimitiveType type1, AnnotatedWildcardType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitUnion_Array(
AnnotatedUnionType type1, AnnotatedArrayType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitUnion_Declared(
AnnotatedUnionType type1, AnnotatedDeclaredType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitUnion_Executable(
AnnotatedUnionType type1, AnnotatedExecutableType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitUnion_Intersection(
AnnotatedUnionType type1, AnnotatedIntersectionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitUnion_None(AnnotatedUnionType type1, AnnotatedNoType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitUnion_Null(
AnnotatedUnionType type1, AnnotatedNullType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitUnion_Primitive(
AnnotatedUnionType type1, AnnotatedPrimitiveType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitUnion_Typevar(
AnnotatedUnionType type1, AnnotatedTypeVariable type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitUnion_Union(
AnnotatedUnionType type1, AnnotatedUnionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitUnion_Wildcard(
AnnotatedUnionType type1, AnnotatedWildcardType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitTypevar_Array(
AnnotatedTypeVariable type1, AnnotatedArrayType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitTypevar_Declared(
AnnotatedTypeVariable type1, AnnotatedDeclaredType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitTypevar_Executable(
AnnotatedTypeVariable type1, AnnotatedExecutableType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitTypevar_Intersection(
AnnotatedTypeVariable type1, AnnotatedIntersectionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitTypevar_None(
AnnotatedTypeVariable type1, AnnotatedNoType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitTypevar_Null(
AnnotatedTypeVariable type1, AnnotatedNullType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitTypevar_Primitive(
AnnotatedTypeVariable type1, AnnotatedPrimitiveType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitTypevar_Typevar(
AnnotatedTypeVariable type1, AnnotatedTypeVariable type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitTypevar_Union(
AnnotatedTypeVariable type1, AnnotatedUnionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitTypevar_Wildcard(
AnnotatedTypeVariable type1, AnnotatedWildcardType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitWildcard_Array(
AnnotatedWildcardType type1, AnnotatedArrayType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitWildcard_Declared(
AnnotatedWildcardType type1, AnnotatedDeclaredType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitWildcard_Executable(
AnnotatedWildcardType type1, AnnotatedExecutableType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitWildcard_Intersection(
AnnotatedWildcardType type1, AnnotatedIntersectionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitWildcard_None(
AnnotatedWildcardType type1, AnnotatedNoType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitWildcard_Null(
AnnotatedWildcardType type1, AnnotatedNullType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitWildcard_Primitive(
AnnotatedWildcardType type1, AnnotatedPrimitiveType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitWildcard_Typevar(
AnnotatedWildcardType type1, AnnotatedTypeVariable type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitWildcard_Union(
AnnotatedWildcardType type1, AnnotatedUnionType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
@Override
public RETURN_TYPE visitWildcard_Wildcard(
AnnotatedWildcardType type1, AnnotatedWildcardType type2, PARAM param) {
return defaultAction(type1, type2, param);
}
}