All Downloads are FREE. Search and download functionalities are using the official Maven repository.

framework.src.org.checkerframework.framework.type.visitor.SimpleAnnotatedTypeVisitor Maven / Gradle / Ivy

Go to download

The Checker Framework enhances Java’s type system to make it more powerful and useful. This lets software developers detect and prevent errors in their Java programs. The Checker Framework includes compiler plug-ins ("checkers") that find bugs or verify their absence. It also permits you to write your own compiler plug-ins.

There is a newer version: 3.42.0
Show newest version
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;

/**
 * A simple visitor for {@link AnnotatedTypeMirror}s.
 *
 * @param    The return type of this visitor's methods.
 *              Use {@link Void} for visitors that do not need to return results.
 * @param 

the type of the additional parameter to this visitor's methods. * Use {@link Void} for visitors that do not need an additional parameter. */ public class SimpleAnnotatedTypeVisitor implements AnnotatedTypeVisitor { /** The default value to return as a default action */ protected final R DEFAULT_VALUE; /** * Creates an instance of {@link SimpleAnnotatedTypeVisitor} with * default value being {@code null} */ public SimpleAnnotatedTypeVisitor() { this(null); } /** * Creates an instance of {@link SimpleAnnotatedTypeVisitor} with * the default value being the passed defaultValue * * @param defaultValue the default value this class should return */ public SimpleAnnotatedTypeVisitor(R defaultValue) { this.DEFAULT_VALUE = defaultValue; } /** * Performs the default action for visiting trees, if subclasses do not * override the visitFOO node. * * This implementation merely returns the default value (as specified by the * protected field {@code DEFAULT_VALUE}). */ protected R defaultAction(AnnotatedTypeMirror type, P p) { return DEFAULT_VALUE; } @Override public R visit(AnnotatedTypeMirror type) { return visit(type, null); } @Override public R visit(AnnotatedTypeMirror type, P p) { return (type == null) ? null : type.accept(this, p); } @Override public R visitDeclared(AnnotatedDeclaredType type, P p) { return defaultAction(type, p); } @Override public R visitIntersection(AnnotatedIntersectionType type, P p) { return defaultAction(type, p); } @Override public R visitUnion(AnnotatedUnionType type, P p) { return defaultAction(type, p); } @Override public R visitArray(AnnotatedArrayType type, P p) { return defaultAction(type, p); } @Override public R visitExecutable(AnnotatedExecutableType type, P p) { return defaultAction(type, p); } @Override public R visitTypeVariable(AnnotatedTypeVariable type, P p) { return defaultAction(type, p); } @Override public R visitWildcard(AnnotatedWildcardType type, P p) { return defaultAction(type, p); } @Override public R visitPrimitive(AnnotatedPrimitiveType type, P p) { return defaultAction(type, p); } @Override public R visitNull(AnnotatedNullType type, P p) { return defaultAction(type, p); } @Override public R visitNoType(AnnotatedNoType type, P p) { return defaultAction(type, p); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy