blob: a9a6608e9f2da649d79d0c45ee5555fbdb1a79bb [file] [log] [blame]
package org.checkerframework.framework.type.typeannotator;
import javax.lang.model.element.Element;
import org.checkerframework.framework.type.AnnotatedTypeFactory;
import org.checkerframework.framework.type.AnnotatedTypeMirror;
import org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedExecutableType;
import org.checkerframework.framework.type.visitor.AnnotatedTypeScanner;
/**
* {@link TypeAnnotator} is an abstract AnnotatedTypeScanner to be used with {@link
* ListTypeAnnotator}.
*
* @see org.checkerframework.framework.type.typeannotator.ListTypeAnnotator
* @see org.checkerframework.framework.type.typeannotator.PropagationTypeAnnotator
* @see DefaultForTypeAnnotator
*/
public abstract class TypeAnnotator extends AnnotatedTypeScanner<Void, Void> {
protected final AnnotatedTypeFactory typeFactory;
protected TypeAnnotator(AnnotatedTypeFactory typeFactory) {
this.typeFactory = typeFactory;
}
/**
* {@inheritDoc}
*
* <p>If this method adds annotations to the type of method parameters, then {@link
* org.checkerframework.framework.type.GenericAnnotatedTypeFactory#addComputedTypeAnnotations(Element,
* AnnotatedTypeMirror)} should be overriden and the same annotations added to the type of
* elements with kind {@link javax.lang.model.element.ElementKind#PARAMETER}. Likewise for return
* types.
*/
@Override
public Void visitExecutable(AnnotatedExecutableType method, Void aVoid) {
return super.visitExecutable(method, aVoid);
}
}