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.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.AnnotatedWildcardType; public class SimpleAnnotatedTypeScanner<R, P> extends AnnotatedTypeScanner<R, P> { /** * Called by default for any visit method that is not overridden. * * @param type the type to visit * @param p a visitor-specified parameter * @return a visitor-specified result */ protected R defaultAction(AnnotatedTypeMirror type, P p) { // Do nothing return null; } /** * Visits a declared type. * * @param type the type to visit * @param p a visitor-specified parameter * @return a visitor-specified result */ @Override public final R visitDeclared(AnnotatedDeclaredType type, P p) { R r = defaultAction(type, p); return reduce(super.visitDeclared(type, p), r); } /** * Visits an executable type. * * @param type the type to visit * @param p a visitor-specified parameter * @return a visitor-specified result */ @Override public final R visitExecutable(AnnotatedExecutableType type, P p) { R r = defaultAction(type, p); return reduce(super.visitExecutable(type, p), r); } /** * Visits an array type. * * @param type the type to visit * @param p a visitor-specified parameter * @return a visitor-specified result */ @Override public final R visitArray(AnnotatedArrayType type, P p) { R r = defaultAction(type, p); return reduce(super.visitArray(type, p), r); } /** * Visits a type variable. * * @param type the type to visit * @param p a visitor-specified parameter * @return a visitor-specified result */ @Override public final R visitTypeVariable(AnnotatedTypeVariable type, P p) { R r = defaultAction(type, p); return reduce(super.visitTypeVariable(type, p), r); } /** * Visits a primitive type. * * @param type the type to visit * @param p a visitor-specified parameter * @return a visitor-specified result */ @Override public final R visitPrimitive(AnnotatedPrimitiveType type, P p) { return defaultAction(type, p); } /** * Visits NoType type. * * @param type the type to visit * @param p a visitor-specified parameter * @return a visitor-specified result */ @Override public final R visitNoType(AnnotatedNoType type, P p) { return defaultAction(type, p); } /** * Visits a {@code null} type. * * @param type the type to visit * @param p a visitor-specified parameter * @return a visitor-specified result */ @Override public final R visitNull(AnnotatedNullType type, P p) { return defaultAction(type, p); } /** * Visits a wildcard type. * * @param type the type to visit * @param p a visitor-specified parameter * @return a visitor-specified result */ @Override public final R visitWildcard(AnnotatedWildcardType type, P p) { R r = defaultAction(type, p); return reduce(super.visitWildcard(type, p), r); } }