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

framework.src.org.checkerframework.framework.type.typeannotator.TypeAnnotator Maven / Gradle / Ivy

package org.checkerframework.framework.type.typeannotator;

import org.checkerframework.framework.type.AnnotatedTypeFactory;
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 org.checkerframework.framework.type.typeannotator.ImplicitsTypeAnnotator
 */
public abstract class TypeAnnotator extends AnnotatedTypeScanner {

    protected final AnnotatedTypeFactory typeFactory;

    public TypeAnnotator(AnnotatedTypeFactory typeFactory) {
        this.typeFactory = typeFactory;
    }

    @Override
    public Void visitExecutable(AnnotatedExecutableType t, Void p) {
        // skip the receiver
        scan(t.getReturnType(), p);
        scanAndReduce(t.getParameterTypes(), p, null);
        scanAndReduce(t.getThrownTypes(), p, null);
        scanAndReduce(t.getTypeVariables(), p, null);
        return null;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy