Class JavacUtils


  • public final class JavacUtils
    extends Object
    • Constructor Summary

      Constructors 
      Constructor Description
      JavacUtils​(com.sun.tools.javac.api.BasicJavacTask task)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      com.sun.tools.javac.code.Type booleanType()  
      com.sun.tools.javac.code.Type botType()  
      com.sun.tools.javac.code.Type deriveMostGeneralExceptionTypeThrown​(com.sun.tools.javac.util.List<com.sun.tools.javac.tree.JCTree.JCExpression> throwsList)
      Given a list of exception types from a method throws declarations, derives the most general exception type thrown that can be safely rethrown according to Java's improved type checking analysis of rethrown exceptions.
      com.sun.tools.javac.tree.JCTree.JCExpression Erroneous()  
      com.sun.tools.javac.code.Type exceptionType()  
      com.sun.tools.javac.tree.JCTree.JCExpression Expression​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol, String classQualifiedName)  
      com.sun.tools.javac.tree.JCTree.JCExpression Expression​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol, String classQualifiedName, String methodName)  
      com.sun.tools.javac.tree.JCTree.JCExpression falseLiteral()  
      com.sun.tools.javac.util.List<com.sun.tools.javac.code.Symbol.MethodSymbol> findInvariants​(com.sun.tools.javac.tree.JCTree.JCClassDecl classDecl)  
      com.sun.tools.javac.util.List<com.sun.tools.javac.code.Symbol> findOverriddenMethods​(com.sun.tools.javac.tree.JCTree.JCClassDecl classDecl, com.sun.tools.javac.tree.JCTree.JCMethodDecl methodDecl)  
      com.sun.tools.javac.code.Type.TypeVar freshObjectTypeVar​(com.sun.tools.javac.code.Symbol owner)  
      com.sun.tools.javac.tree.TreeMaker getFactory()  
      com.sun.tools.javac.code.Symbol getJavaUtilCollectionIteratorMethodSymbol()  
      boolean hasVoidReturnType​(com.sun.tools.javac.tree.JCTree.JCMethodDecl methodDecl)  
      boolean isSuperOrThisConstructorCall​(com.sun.tools.javac.tree.JCTree.JCStatement head)  
      boolean isTypeAssignable​(com.sun.tools.javac.code.Symbol.VarSymbol a, com.sun.tools.javac.code.Symbol.VarSymbol b)  
      boolean isTypeAssignable​(com.sun.tools.javac.code.Type t, com.sun.tools.javac.code.Type s)  
      com.sun.tools.javac.code.Symbol.ModuleSymbol javaBaseModule()  
      void logError​(JavaFileObject fileObject, com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition pos, JSickoDiagnostic.JSickoError jsickoError)  
      void logNote​(JavaFileObject fileObject, com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition pos, JSickoDiagnostic.JSickoNote note)  
      void logWarning​(com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition pos, JSickoDiagnostic.JSickoWarning warning)  
      com.sun.tools.javac.tree.JCTree.JCStatement MethodCall​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol, com.sun.tools.javac.tree.JCTree.JCExpression baseExpression, com.sun.tools.javac.util.Name methodName)  
      com.sun.tools.javac.tree.JCTree.JCStatement MethodCall​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol, com.sun.tools.javac.tree.JCTree.JCExpression baseExpression, com.sun.tools.javac.util.Name methodName, com.sun.tools.javac.util.List<com.sun.tools.javac.tree.JCTree.JCExpression> args)  
      com.sun.tools.javac.tree.JCTree.JCMethodInvocation MethodInvocation​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol, com.sun.tools.javac.tree.JCTree.JCExpression baseExpression, com.sun.tools.javac.util.Name methodName)  
      com.sun.tools.javac.tree.JCTree.JCMethodInvocation MethodInvocation​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol, com.sun.tools.javac.tree.JCTree.JCExpression baseExpression, com.sun.tools.javac.util.Name methodName, com.sun.tools.javac.util.List<com.sun.tools.javac.tree.JCTree.JCExpression> args)  
      com.sun.tools.javac.util.Name Name​(String name)  
      com.sun.tools.javac.tree.JCTree.JCLiteral nullLiteral()  
      com.sun.tools.javac.code.Type objectType()  
      com.sun.tools.javac.code.Type oldValuesTableClassType()  
      com.sun.tools.javac.tree.JCTree.JCExpression oldValuesTableTypeExpression()  
      com.sun.tools.javac.code.Type preconditionCheckerType()  
      com.sun.tools.javac.code.Symbol retrieveConstructor​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol, String canonicalName)  
      com.sun.tools.javac.code.Symbol retrieveConstructor​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol, String canonicalName, com.sun.tools.javac.code.Type... argTypes)  
      com.sun.tools.javac.code.Symbol retrieveEmptyConstructor​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol, String canonicalName)  
      Optional<com.sun.tools.javac.code.Symbol> retrieveMemberFromClassByName​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol, String qualifiedClassName, String methodName)  
      com.sun.tools.javac.code.Type retrieveType​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol, String canonicalName)  
      com.sun.tools.javac.code.Type runtimeExceptionType()  
      void setOperator​(com.sun.tools.javac.tree.JCTree.JCBinary binary)  
      void setOperator​(com.sun.tools.javac.tree.JCTree.JCUnary unaryOp)  
      com.sun.tools.javac.code.Type stringType()  
      com.sun.tools.javac.code.Type throwableType()  
      com.sun.tools.javac.tree.JCTree.JCExpression Type​(com.sun.tools.javac.code.Type tpe)  
      com.sun.tools.javac.util.List<com.sun.tools.javac.code.Type> typeClosure​(com.sun.tools.javac.code.Type t)  
      com.sun.tools.javac.code.Type typeErasure​(com.sun.tools.javac.code.Type t)  
      com.sun.tools.javac.code.Symbol.ModuleSymbol unnamedModule()  
      void visitLambda​(com.sun.tools.javac.tree.JCTree.JCLambda lambda)  
      com.sun.tools.javac.code.Type voidType()  
      com.sun.tools.javac.code.Type zeroType​(com.sun.tools.javac.code.Type t)  
      com.sun.tools.javac.tree.JCTree.JCLiteral zeroValue​(com.sun.tools.javac.code.Type t)  
    • Constructor Detail

      • JavacUtils

        public JavacUtils​(com.sun.tools.javac.api.BasicJavacTask task)
    • Method Detail

      • getFactory

        public com.sun.tools.javac.tree.TreeMaker getFactory()
      • Expression

        public com.sun.tools.javac.tree.JCTree.JCExpression Expression​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol,
                                                                       String classQualifiedName)
      • Expression

        public com.sun.tools.javac.tree.JCTree.JCExpression Expression​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol,
                                                                       String classQualifiedName,
                                                                       String methodName)
      • Erroneous

        public com.sun.tools.javac.tree.JCTree.JCExpression Erroneous()
      • typeClosure

        public com.sun.tools.javac.util.List<com.sun.tools.javac.code.Type> typeClosure​(com.sun.tools.javac.code.Type t)
      • typeErasure

        public com.sun.tools.javac.code.Type typeErasure​(com.sun.tools.javac.code.Type t)
      • Name

        public com.sun.tools.javac.util.Name Name​(String name)
      • unnamedModule

        public com.sun.tools.javac.code.Symbol.ModuleSymbol unnamedModule()
      • javaBaseModule

        public com.sun.tools.javac.code.Symbol.ModuleSymbol javaBaseModule()
      • MethodCall

        public com.sun.tools.javac.tree.JCTree.JCStatement MethodCall​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol,
                                                                      com.sun.tools.javac.tree.JCTree.JCExpression baseExpression,
                                                                      com.sun.tools.javac.util.Name methodName,
                                                                      com.sun.tools.javac.util.List<com.sun.tools.javac.tree.JCTree.JCExpression> args)
      • MethodCall

        public com.sun.tools.javac.tree.JCTree.JCStatement MethodCall​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol,
                                                                      com.sun.tools.javac.tree.JCTree.JCExpression baseExpression,
                                                                      com.sun.tools.javac.util.Name methodName)
      • MethodInvocation

        public com.sun.tools.javac.tree.JCTree.JCMethodInvocation MethodInvocation​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol,
                                                                                   com.sun.tools.javac.tree.JCTree.JCExpression baseExpression,
                                                                                   com.sun.tools.javac.util.Name methodName,
                                                                                   com.sun.tools.javac.util.List<com.sun.tools.javac.tree.JCTree.JCExpression> args)
      • MethodInvocation

        public com.sun.tools.javac.tree.JCTree.JCMethodInvocation MethodInvocation​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol,
                                                                                   com.sun.tools.javac.tree.JCTree.JCExpression baseExpression,
                                                                                   com.sun.tools.javac.util.Name methodName)
      • isTypeAssignable

        public boolean isTypeAssignable​(com.sun.tools.javac.code.Type t,
                                        com.sun.tools.javac.code.Type s)
      • findOverriddenMethods

        public com.sun.tools.javac.util.List<com.sun.tools.javac.code.Symbol> findOverriddenMethods​(com.sun.tools.javac.tree.JCTree.JCClassDecl classDecl,
                                                                                                    com.sun.tools.javac.tree.JCTree.JCMethodDecl methodDecl)
      • hasVoidReturnType

        public boolean hasVoidReturnType​(com.sun.tools.javac.tree.JCTree.JCMethodDecl methodDecl)
      • zeroValue

        public com.sun.tools.javac.tree.JCTree.JCLiteral zeroValue​(com.sun.tools.javac.code.Type t)
      • nullLiteral

        public com.sun.tools.javac.tree.JCTree.JCLiteral nullLiteral()
      • findInvariants

        public com.sun.tools.javac.util.List<com.sun.tools.javac.code.Symbol.MethodSymbol> findInvariants​(com.sun.tools.javac.tree.JCTree.JCClassDecl classDecl)
      • isSuperOrThisConstructorCall

        public boolean isSuperOrThisConstructorCall​(com.sun.tools.javac.tree.JCTree.JCStatement head)
      • oldValuesTableClassType

        public com.sun.tools.javac.code.Type oldValuesTableClassType()
      • preconditionCheckerType

        public com.sun.tools.javac.code.Type preconditionCheckerType()
      • freshObjectTypeVar

        public com.sun.tools.javac.code.Type.TypeVar freshObjectTypeVar​(com.sun.tools.javac.code.Symbol owner)
      • oldValuesTableTypeExpression

        public com.sun.tools.javac.tree.JCTree.JCExpression oldValuesTableTypeExpression()
      • Type

        public com.sun.tools.javac.tree.JCTree.JCExpression Type​(com.sun.tools.javac.code.Type tpe)
      • stringType

        public com.sun.tools.javac.code.Type stringType()
      • throwableType

        public com.sun.tools.javac.code.Type throwableType()
      • exceptionType

        public com.sun.tools.javac.code.Type exceptionType()
      • objectType

        public com.sun.tools.javac.code.Type objectType()
      • runtimeExceptionType

        public com.sun.tools.javac.code.Type runtimeExceptionType()
      • retrieveMemberFromClassByName

        public Optional<com.sun.tools.javac.code.Symbol> retrieveMemberFromClassByName​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol,
                                                                                       String qualifiedClassName,
                                                                                       String methodName)
      • getJavaUtilCollectionIteratorMethodSymbol

        public com.sun.tools.javac.code.Symbol getJavaUtilCollectionIteratorMethodSymbol()
      • deriveMostGeneralExceptionTypeThrown

        public com.sun.tools.javac.code.Type deriveMostGeneralExceptionTypeThrown​(com.sun.tools.javac.util.List<com.sun.tools.javac.tree.JCTree.JCExpression> throwsList)
        Given a list of exception types from a method throws declarations, derives the most general exception type thrown that can be safely rethrown according to Java's improved type checking analysis of rethrown exceptions.
        Parameters:
        throwsList - a list of expressions corresponding to a throws clause in a method declaration.
        Returns:
        one type among Throwable, Exception, and RuntimeException.
        See Also:
        Official Oracle documentation.
      • retrieveType

        public com.sun.tools.javac.code.Type retrieveType​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol,
                                                          String canonicalName)
      • retrieveConstructor

        public com.sun.tools.javac.code.Symbol retrieveConstructor​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol,
                                                                   String canonicalName)
      • retrieveConstructor

        public com.sun.tools.javac.code.Symbol retrieveConstructor​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol,
                                                                   String canonicalName,
                                                                   com.sun.tools.javac.code.Type... argTypes)
      • retrieveEmptyConstructor

        public com.sun.tools.javac.code.Symbol retrieveEmptyConstructor​(com.sun.tools.javac.code.Symbol.ModuleSymbol moduleSymbol,
                                                                        String canonicalName)
      • setOperator

        public void setOperator​(com.sun.tools.javac.tree.JCTree.JCUnary unaryOp)
      • booleanType

        public com.sun.tools.javac.code.Type booleanType()
      • voidType

        public com.sun.tools.javac.code.Type voidType()
      • botType

        public com.sun.tools.javac.code.Type botType()
      • setOperator

        public void setOperator​(com.sun.tools.javac.tree.JCTree.JCBinary binary)
      • visitLambda

        public void visitLambda​(com.sun.tools.javac.tree.JCTree.JCLambda lambda)
      • zeroType

        public com.sun.tools.javac.code.Type zeroType​(com.sun.tools.javac.code.Type t)
      • falseLiteral

        public com.sun.tools.javac.tree.JCTree.JCExpression falseLiteral()
      • isTypeAssignable

        public boolean isTypeAssignable​(com.sun.tools.javac.code.Symbol.VarSymbol a,
                                        com.sun.tools.javac.code.Symbol.VarSymbol b)