Package manifold.ext

Class ExtensionTransformer


  • public class ExtensionTransformer
    extends com.sun.tools.javac.tree.TreeTranslator
    • Field Summary

      • Fields inherited from class com.sun.tools.javac.tree.TreeTranslator

        result
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void genUnary​(com.sun.tools.javac.tree.JCTree.JCUnary tree, com.sun.tools.javac.tree.TreeMaker make, com.sun.tools.javac.code.Symbol.MethodSymbol operatorMethod)  
      com.sun.tools.javac.tree.JCTree.JCClassDecl getEnclosingClass​(com.sun.source.tree.Tree tree)  
      static com.sun.tools.javac.tree.JCTree.JCClassDecl getEnclosingClass​(com.sun.source.tree.Tree tree, Function<com.sun.source.tree.Tree,​com.sun.source.tree.Tree> parentOf)  
      static com.sun.tools.javac.code.Symbol getEnclosingSymbol​(com.sun.source.tree.Tree tree, com.sun.tools.javac.util.Context ctx, Function<com.sun.source.tree.Tree,​com.sun.source.tree.Tree> parentOf)  
      manifold.internal.javac.TypeProcessor getTypeProcessor()  
      static boolean isJailbreakReceiver​(com.sun.tools.javac.tree.JCTree tree)  
      static boolean isJailbreakReceiver​(com.sun.tools.javac.tree.JCTree.JCFieldAccess fieldAccess)  
      static boolean isJailbreakSymbol​(com.sun.tools.javac.code.Symbol sym)  
      com.sun.tools.javac.tree.JCTree.JCMethodInvocation maybeReplaceWithExtensionMethod​(com.sun.tools.javac.tree.JCTree.JCMethodInvocation methodCall)  
      com.sun.tools.javac.tree.JCTree.JCMethodInvocation maybeReplaceWithStructuralCall​(com.sun.tools.javac.tree.JCTree.JCMethodInvocation methodCall)  
      static com.sun.tools.javac.tree.JCTree.JCExpression memberAccess​(com.sun.tools.javac.tree.TreeMaker make, com.sun.tools.javac.model.JavacElements javacElems, String path)  
      static com.sun.tools.javac.tree.JCTree.JCExpression memberAccess​(com.sun.tools.javac.tree.TreeMaker make, com.sun.tools.javac.model.JavacElements node, String... components)  
      static com.sun.tools.javac.code.Symbol.MethodSymbol resolveMethod​(com.sun.tools.javac.util.Context context, com.sun.source.tree.CompilationUnitTree compUnit, com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition pos, com.sun.tools.javac.util.Name name, com.sun.tools.javac.code.Type qual, com.sun.tools.javac.util.List<com.sun.tools.javac.code.Type> args)  
      com.sun.tools.javac.code.Symbol.MethodSymbol resolveMethod​(com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition pos, com.sun.tools.javac.util.Name name, com.sun.tools.javac.code.Type qual, com.sun.tools.javac.util.List<com.sun.tools.javac.code.Type> args)  
      static com.sun.tools.javac.tree.JCTree[] tempify​(boolean force, com.sun.tools.javac.tree.JCTree.JCExpression tree, com.sun.tools.javac.tree.TreeMaker make, com.sun.tools.javac.tree.JCTree.JCExpression expr, com.sun.tools.javac.util.Context ctx, com.sun.tools.javac.code.Symbol owner, String varName, int tempVarIndex)  
      static com.sun.tools.javac.tree.JCTree.JCExpression unbox​(com.sun.tools.javac.code.Types types, com.sun.tools.javac.tree.TreeMaker make, com.sun.tools.javac.util.Names names, com.sun.tools.javac.util.Context context, com.sun.source.tree.CompilationUnitTree compUnit, com.sun.tools.javac.tree.JCTree.JCExpression tree, com.sun.tools.javac.code.Type primitive)
      Unbox an object to a primitive value.
      void visitAnnotation​(com.sun.tools.javac.tree.JCTree.JCAnnotation tree)  
      void visitApply​(com.sun.tools.javac.tree.JCTree.JCMethodInvocation tree)
      Replace all extension method call-sites with static calls to extension methods
      void visitAssign​(com.sun.tools.javac.tree.JCTree.JCAssign tree)  
      void visitAssignop​(com.sun.tools.javac.tree.JCTree.JCAssignOp tree)  
      void visitBinary​(com.sun.tools.javac.tree.JCTree.JCBinary tree)  
      void visitClassDef​(com.sun.tools.javac.tree.JCTree.JCClassDecl tree)  
      void visitConditional​(com.sun.tools.javac.tree.JCTree.JCConditional tree)  
      void visitForeachLoop​(com.sun.tools.javac.tree.JCTree.JCEnhancedForLoop tree)  
      void visitIdent​(com.sun.tools.javac.tree.JCTree.JCIdent tree)
      Erase all structural interface type literals to Object
      void visitIndexed​(com.sun.tools.javac.tree.JCTree.JCArrayAccess tree)  
      void visitLambda​(com.sun.tools.javac.tree.JCTree.JCLambda tree)  
      void visitLiteral​(com.sun.tools.javac.tree.JCTree.JCLiteral tree)  
      void visitMethodDef​(com.sun.tools.javac.tree.JCTree.JCMethodDecl tree)
      Issue errors/warnings if an extension method violates extension method grammar or conflicts with an existing method
      void visitNewClass​(com.sun.tools.javac.tree.JCTree.JCNewClass tree)  
      void visitReference​(com.sun.tools.javac.tree.JCTree.JCMemberReference tree)  
      void visitSelect​(com.sun.tools.javac.tree.JCTree.JCFieldAccess tree)
      Erase all structural interface type literals to Object
      void visitTypeCast​(com.sun.tools.javac.tree.JCTree.JCTypeCast tree)  
      void visitUnary​(com.sun.tools.javac.tree.JCTree.JCUnary tree)  
      void visitVarDef​(com.sun.tools.javac.tree.JCTree.JCVariableDecl tree)  
      • Methods inherited from class com.sun.tools.javac.tree.TreeTranslator

        translate, translate, translateAnnotations, translateCases, translateCatchers, translateTypeParams, translateVarDefs, visitAnnotatedType, visitAssert, visitBlock, visitBreak, visitCase, visitCatch, visitContinue, visitDoLoop, visitErroneous, visitExec, visitForLoop, visitIf, visitImport, visitLabelled, visitLetExpr, visitModifiers, visitNewArray, visitPackageDef, visitParens, visitReturn, visitSkip, visitSwitch, visitSynchronized, visitThrow, visitTopLevel, visitTree, visitTry, visitTypeApply, visitTypeArray, visitTypeBoundKind, visitTypeIdent, visitTypeIntersection, visitTypeParameter, visitTypeTest, visitTypeUnion, visitWhileLoop, visitWildcard
      • Methods inherited from class com.sun.tools.javac.tree.JCTree.Visitor

        visitExports, visitModuleDef, visitOpens, visitProvides, visitRequires, visitUses
    • Constructor Detail

      • ExtensionTransformer

        public ExtensionTransformer​(ExtensionManifold sp,
                                    manifold.internal.javac.TypeProcessor typeProcessor)
    • Method Detail

      • getTypeProcessor

        public manifold.internal.javac.TypeProcessor getTypeProcessor()
      • visitIndexed

        public void visitIndexed​(com.sun.tools.javac.tree.JCTree.JCArrayAccess tree)
        Overrides:
        visitIndexed in class com.sun.tools.javac.tree.TreeTranslator
      • visitBinary

        public void visitBinary​(com.sun.tools.javac.tree.JCTree.JCBinary tree)
        Overrides:
        visitBinary in class com.sun.tools.javac.tree.TreeTranslator
      • tempify

        public static com.sun.tools.javac.tree.JCTree[] tempify​(boolean force,
                                                                com.sun.tools.javac.tree.JCTree.JCExpression tree,
                                                                com.sun.tools.javac.tree.TreeMaker make,
                                                                com.sun.tools.javac.tree.JCTree.JCExpression expr,
                                                                com.sun.tools.javac.util.Context ctx,
                                                                com.sun.tools.javac.code.Symbol owner,
                                                                String varName,
                                                                int tempVarIndex)
      • unbox

        public static com.sun.tools.javac.tree.JCTree.JCExpression unbox​(com.sun.tools.javac.code.Types types,
                                                                         com.sun.tools.javac.tree.TreeMaker make,
                                                                         com.sun.tools.javac.util.Names names,
                                                                         com.sun.tools.javac.util.Context context,
                                                                         com.sun.source.tree.CompilationUnitTree compUnit,
                                                                         com.sun.tools.javac.tree.JCTree.JCExpression tree,
                                                                         com.sun.tools.javac.code.Type primitive)
        Unbox an object to a primitive value.
      • visitIdent

        public void visitIdent​(com.sun.tools.javac.tree.JCTree.JCIdent tree)
        Erase all structural interface type literals to Object
        Overrides:
        visitIdent in class com.sun.tools.javac.tree.TreeTranslator
      • visitLambda

        public void visitLambda​(com.sun.tools.javac.tree.JCTree.JCLambda tree)
        Overrides:
        visitLambda in class com.sun.tools.javac.tree.TreeTranslator
      • visitSelect

        public void visitSelect​(com.sun.tools.javac.tree.JCTree.JCFieldAccess tree)
        Erase all structural interface type literals to Object
        Overrides:
        visitSelect in class com.sun.tools.javac.tree.TreeTranslator
      • visitAssign

        public void visitAssign​(com.sun.tools.javac.tree.JCTree.JCAssign tree)
        Overrides:
        visitAssign in class com.sun.tools.javac.tree.TreeTranslator
      • visitAssignop

        public void visitAssignop​(com.sun.tools.javac.tree.JCTree.JCAssignOp tree)
        Overrides:
        visitAssignop in class com.sun.tools.javac.tree.TreeTranslator
      • visitUnary

        public void visitUnary​(com.sun.tools.javac.tree.JCTree.JCUnary tree)
        Overrides:
        visitUnary in class com.sun.tools.javac.tree.TreeTranslator
      • maybeReplaceWithExtensionMethod

        public com.sun.tools.javac.tree.JCTree.JCMethodInvocation maybeReplaceWithExtensionMethod​(com.sun.tools.javac.tree.JCTree.JCMethodInvocation methodCall)
      • maybeReplaceWithStructuralCall

        public com.sun.tools.javac.tree.JCTree.JCMethodInvocation maybeReplaceWithStructuralCall​(com.sun.tools.javac.tree.JCTree.JCMethodInvocation methodCall)
      • genUnary

        public void genUnary​(com.sun.tools.javac.tree.JCTree.JCUnary tree,
                             com.sun.tools.javac.tree.TreeMaker make,
                             com.sun.tools.javac.code.Symbol.MethodSymbol operatorMethod)
      • visitNewClass

        public void visitNewClass​(com.sun.tools.javac.tree.JCTree.JCNewClass tree)
        Overrides:
        visitNewClass in class com.sun.tools.javac.tree.TreeTranslator
      • visitConditional

        public void visitConditional​(com.sun.tools.javac.tree.JCTree.JCConditional tree)
        Overrides:
        visitConditional in class com.sun.tools.javac.tree.TreeTranslator
      • visitVarDef

        public void visitVarDef​(com.sun.tools.javac.tree.JCTree.JCVariableDecl tree)
        Overrides:
        visitVarDef in class com.sun.tools.javac.tree.TreeTranslator
      • visitTypeCast

        public void visitTypeCast​(com.sun.tools.javac.tree.JCTree.JCTypeCast tree)
        Overrides:
        visitTypeCast in class com.sun.tools.javac.tree.TreeTranslator
      • visitLiteral

        public void visitLiteral​(com.sun.tools.javac.tree.JCTree.JCLiteral tree)
        Overrides:
        visitLiteral in class com.sun.tools.javac.tree.TreeTranslator
      • visitApply

        public void visitApply​(com.sun.tools.javac.tree.JCTree.JCMethodInvocation tree)
        Replace all extension method call-sites with static calls to extension methods
        Overrides:
        visitApply in class com.sun.tools.javac.tree.TreeTranslator
      • visitReference

        public void visitReference​(com.sun.tools.javac.tree.JCTree.JCMemberReference tree)
        Overrides:
        visitReference in class com.sun.tools.javac.tree.TreeTranslator
      • isJailbreakReceiver

        public static boolean isJailbreakReceiver​(com.sun.tools.javac.tree.JCTree tree)
      • isJailbreakReceiver

        public static boolean isJailbreakReceiver​(com.sun.tools.javac.tree.JCTree.JCFieldAccess fieldAccess)
      • isJailbreakSymbol

        public static boolean isJailbreakSymbol​(com.sun.tools.javac.code.Symbol sym)
      • visitForeachLoop

        public void visitForeachLoop​(com.sun.tools.javac.tree.JCTree.JCEnhancedForLoop tree)
        Overrides:
        visitForeachLoop in class com.sun.tools.javac.tree.TreeTranslator
      • visitAnnotation

        public void visitAnnotation​(com.sun.tools.javac.tree.JCTree.JCAnnotation tree)
        Overrides:
        visitAnnotation in class com.sun.tools.javac.tree.TreeTranslator
      • visitClassDef

        public void visitClassDef​(com.sun.tools.javac.tree.JCTree.JCClassDecl tree)
        Overrides:
        visitClassDef in class com.sun.tools.javac.tree.TreeTranslator
      • visitMethodDef

        public void visitMethodDef​(com.sun.tools.javac.tree.JCTree.JCMethodDecl tree)
        Issue errors/warnings if an extension method violates extension method grammar or conflicts with an existing method
        Overrides:
        visitMethodDef in class com.sun.tools.javac.tree.TreeTranslator
      • getEnclosingClass

        public com.sun.tools.javac.tree.JCTree.JCClassDecl getEnclosingClass​(com.sun.source.tree.Tree tree)
      • getEnclosingClass

        public static com.sun.tools.javac.tree.JCTree.JCClassDecl getEnclosingClass​(com.sun.source.tree.Tree tree,
                                                                                    Function<com.sun.source.tree.Tree,​com.sun.source.tree.Tree> parentOf)
      • getEnclosingSymbol

        public static com.sun.tools.javac.code.Symbol getEnclosingSymbol​(com.sun.source.tree.Tree tree,
                                                                         com.sun.tools.javac.util.Context ctx,
                                                                         Function<com.sun.source.tree.Tree,​com.sun.source.tree.Tree> parentOf)
      • memberAccess

        public static com.sun.tools.javac.tree.JCTree.JCExpression memberAccess​(com.sun.tools.javac.tree.TreeMaker make,
                                                                                com.sun.tools.javac.model.JavacElements javacElems,
                                                                                String path)
      • memberAccess

        public static com.sun.tools.javac.tree.JCTree.JCExpression memberAccess​(com.sun.tools.javac.tree.TreeMaker make,
                                                                                com.sun.tools.javac.model.JavacElements node,
                                                                                String... components)
      • resolveMethod

        public com.sun.tools.javac.code.Symbol.MethodSymbol resolveMethod​(com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition pos,
                                                                          com.sun.tools.javac.util.Name name,
                                                                          com.sun.tools.javac.code.Type qual,
                                                                          com.sun.tools.javac.util.List<com.sun.tools.javac.code.Type> args)
      • resolveMethod

        public static com.sun.tools.javac.code.Symbol.MethodSymbol resolveMethod​(com.sun.tools.javac.util.Context context,
                                                                                 com.sun.source.tree.CompilationUnitTree compUnit,
                                                                                 com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition pos,
                                                                                 com.sun.tools.javac.util.Name name,
                                                                                 com.sun.tools.javac.code.Type qual,
                                                                                 com.sun.tools.javac.util.List<com.sun.tools.javac.code.Type> args)