Class TypeOutputtingChecker

  • All Implemented Interfaces:
    javax.annotation.processing.Processor, OptionConfiguration

    public class TypeOutputtingChecker
    extends BaseTypeChecker
    A testing class that can be used to test TypeElement. In particular it tests that the types read from classfiles are the same to the ones from Java files.

    For testing, you need to do the following:

    1. Run the Checker on the source file like any checker:
      
       java -processor org.checkerframework.common.util.debug.TypeOutputtingChecker [source-file]
      
       
    2. Run the Checker on the bytecode, by simply running the main and passing the qualified name, e.g.
      
       java org.checkerframework.common.util.debug.TypeOutputtingChecker [qualified-name]
      
       
    3. Apply a simple diff on the two outputs
    • Constructor Detail

      • TypeOutputtingChecker

        public TypeOutputtingChecker()
    • Method Detail

      • createSourceVisitor

        protected BaseTypeVisitor<?> createSourceVisitor()
        Description copied from class: BaseTypeChecker
        Returns the appropriate visitor that type-checks the compilation unit according to the type system rules.

        This implementation uses the checker naming convention to create the appropriate visitor. If no visitor is found, it returns an instance of BaseTypeVisitor. It reflectively invokes the constructor that accepts this checker and the compilation unit tree (in that order) as arguments.

        Subclasses have to override this method to create the appropriate visitor if they do not follow the checker naming convention.

        Overrides:
        createSourceVisitor in class BaseTypeChecker
        Returns:
        the type-checking visitor
      • main

        public static void main​(java.lang.String[] args)
        Main entry point.
        Parameters:
        args - command-line arguments
      • run

        public void run​(@CanonicalName java.lang.String[] args)
        Run the test.
        Parameters:
        args - command-line arguments
      • printClassType

        protected static void printClassType​(javax.lang.model.element.TypeElement typeElt,
                                             AnnotatedTypeFactory atypeFactory)
        Prints the types of the class and all of its enclosing fields, methods, and inner classes.