Package manifold.ext
Class ExtensionTransformer
- java.lang.Object
-
- com.sun.tools.javac.tree.JCTree.Visitor
-
- com.sun.tools.javac.tree.TreeTranslator
-
- manifold.ext.ExtensionTransformer
-
public class ExtensionTransformer extends com.sun.tools.javac.tree.TreeTranslator
-
-
Constructor Summary
Constructors Constructor Description ExtensionTransformer(ExtensionManifold sp, manifold.internal.javac.TypeProcessor typeProcessor)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidgenUnary(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.JCClassDeclgetEnclosingClass(com.sun.source.tree.Tree tree)static com.sun.tools.javac.tree.JCTree.JCClassDeclgetEnclosingClass(com.sun.source.tree.Tree tree, Function<com.sun.source.tree.Tree,com.sun.source.tree.Tree> parentOf)static com.sun.tools.javac.code.SymbolgetEnclosingSymbol(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.TypeProcessorgetTypeProcessor()static booleanisJailbreakReceiver(com.sun.tools.javac.tree.JCTree tree)static booleanisJailbreakReceiver(com.sun.tools.javac.tree.JCTree.JCFieldAccess fieldAccess)static booleanisJailbreakSymbol(com.sun.tools.javac.code.Symbol sym)com.sun.tools.javac.tree.JCTree.JCMethodInvocationmaybeReplaceWithExtensionMethod(com.sun.tools.javac.tree.JCTree.JCMethodInvocation methodCall)com.sun.tools.javac.tree.JCTree.JCMethodInvocationmaybeReplaceWithStructuralCall(com.sun.tools.javac.tree.JCTree.JCMethodInvocation methodCall)static com.sun.tools.javac.tree.JCTree.JCExpressionmemberAccess(com.sun.tools.javac.tree.TreeMaker make, com.sun.tools.javac.model.JavacElements javacElems, String path)static com.sun.tools.javac.tree.JCTree.JCExpressionmemberAccess(com.sun.tools.javac.tree.TreeMaker make, com.sun.tools.javac.model.JavacElements node, String... components)static com.sun.tools.javac.code.Symbol.MethodSymbolresolveMethod(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.MethodSymbolresolveMethod(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.JCExpressionunbox(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.voidvisitAnnotation(com.sun.tools.javac.tree.JCTree.JCAnnotation tree)voidvisitApply(com.sun.tools.javac.tree.JCTree.JCMethodInvocation tree)Replace all extension method call-sites with static calls to extension methodsvoidvisitAssign(com.sun.tools.javac.tree.JCTree.JCAssign tree)voidvisitAssignop(com.sun.tools.javac.tree.JCTree.JCAssignOp tree)voidvisitBinary(com.sun.tools.javac.tree.JCTree.JCBinary tree)voidvisitClassDef(com.sun.tools.javac.tree.JCTree.JCClassDecl tree)voidvisitConditional(com.sun.tools.javac.tree.JCTree.JCConditional tree)voidvisitForeachLoop(com.sun.tools.javac.tree.JCTree.JCEnhancedForLoop tree)voidvisitIdent(com.sun.tools.javac.tree.JCTree.JCIdent tree)Erase all structural interface type literals to ObjectvoidvisitIndexed(com.sun.tools.javac.tree.JCTree.JCArrayAccess tree)voidvisitLambda(com.sun.tools.javac.tree.JCTree.JCLambda tree)voidvisitLiteral(com.sun.tools.javac.tree.JCTree.JCLiteral tree)voidvisitMethodDef(com.sun.tools.javac.tree.JCTree.JCMethodDecl tree)Issue errors/warnings if an extension method violates extension method grammar or conflicts with an existing methodvoidvisitNewClass(com.sun.tools.javac.tree.JCTree.JCNewClass tree)voidvisitReference(com.sun.tools.javac.tree.JCTree.JCMemberReference tree)voidvisitSelect(com.sun.tools.javac.tree.JCTree.JCFieldAccess tree)Erase all structural interface type literals to ObjectvoidvisitTypeCast(com.sun.tools.javac.tree.JCTree.JCTypeCast tree)voidvisitUnary(com.sun.tools.javac.tree.JCTree.JCUnary tree)voidvisitVarDef(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
-
-
-
-
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:
visitIndexedin classcom.sun.tools.javac.tree.TreeTranslator
-
visitBinary
public void visitBinary(com.sun.tools.javac.tree.JCTree.JCBinary tree)
- Overrides:
visitBinaryin classcom.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:
visitIdentin classcom.sun.tools.javac.tree.TreeTranslator
-
visitLambda
public void visitLambda(com.sun.tools.javac.tree.JCTree.JCLambda tree)
- Overrides:
visitLambdain classcom.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:
visitSelectin classcom.sun.tools.javac.tree.TreeTranslator
-
visitAssign
public void visitAssign(com.sun.tools.javac.tree.JCTree.JCAssign tree)
- Overrides:
visitAssignin classcom.sun.tools.javac.tree.TreeTranslator
-
visitAssignop
public void visitAssignop(com.sun.tools.javac.tree.JCTree.JCAssignOp tree)
- Overrides:
visitAssignopin classcom.sun.tools.javac.tree.TreeTranslator
-
visitUnary
public void visitUnary(com.sun.tools.javac.tree.JCTree.JCUnary tree)
- Overrides:
visitUnaryin classcom.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:
visitNewClassin classcom.sun.tools.javac.tree.TreeTranslator
-
visitConditional
public void visitConditional(com.sun.tools.javac.tree.JCTree.JCConditional tree)
- Overrides:
visitConditionalin classcom.sun.tools.javac.tree.TreeTranslator
-
visitVarDef
public void visitVarDef(com.sun.tools.javac.tree.JCTree.JCVariableDecl tree)
- Overrides:
visitVarDefin classcom.sun.tools.javac.tree.TreeTranslator
-
visitTypeCast
public void visitTypeCast(com.sun.tools.javac.tree.JCTree.JCTypeCast tree)
- Overrides:
visitTypeCastin classcom.sun.tools.javac.tree.TreeTranslator
-
visitLiteral
public void visitLiteral(com.sun.tools.javac.tree.JCTree.JCLiteral tree)
- Overrides:
visitLiteralin classcom.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:
visitApplyin classcom.sun.tools.javac.tree.TreeTranslator
-
visitReference
public void visitReference(com.sun.tools.javac.tree.JCTree.JCMemberReference tree)
- Overrides:
visitReferencein classcom.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:
visitForeachLoopin classcom.sun.tools.javac.tree.TreeTranslator
-
visitAnnotation
public void visitAnnotation(com.sun.tools.javac.tree.JCTree.JCAnnotation tree)
- Overrides:
visitAnnotationin classcom.sun.tools.javac.tree.TreeTranslator
-
visitClassDef
public void visitClassDef(com.sun.tools.javac.tree.JCTree.JCClassDecl tree)
- Overrides:
visitClassDefin classcom.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:
visitMethodDefin classcom.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)
-
-