public class SandboxCpsTransformer extends CpsTransformer
CpsTransformer + SandboxTransformerCpsTransformer.ParentClosureclassNode, config, iota, parent| Constructor and Description |
|---|
SandboxCpsTransformer() |
| Modifier and Type | Method and Description |
|---|---|
void |
call(org.codehaus.groovy.control.SourceUnit source,
org.codehaus.groovy.classgen.GeneratorContext context,
org.codehaus.groovy.ast.ClassNode classNode) |
protected void |
getMultipleAssignmentValueOrCast(org.codehaus.groovy.ast.expr.VariableExpression varExp,
org.codehaus.groovy.ast.expr.Expression rhs,
org.codehaus.groovy.ast.expr.Expression index) |
protected Class |
getTrustTag()
|
protected void |
processConstructors(org.codehaus.groovy.ast.ClassNode classNode)
Constructors can't be transformed - if we throw a
CpsCallableInvocation from inside a constructor, there's
no way to get back to the continuation. |
protected void |
visitAssignmentOrCast(org.codehaus.groovy.ast.expr.VariableExpression varExp,
org.codehaus.groovy.ast.expr.Expression rhs) |
void |
visitCastExpression(org.codehaus.groovy.ast.expr.CastExpression exp) |
void |
visitMethod(org.codehaus.groovy.ast.MethodNode m)
Overriding to allow for rejecting
finalize methods when sandboxed. |
protected void |
visitNontransformedField(org.codehaus.groovy.ast.FieldNode f)
Field initializers are never transformed, but we still need to run the sandbox transformer on them.
|
protected void |
visitNontransformedMethod(org.codehaus.groovy.ast.MethodNode m)
If the method is not CPS transformed, we need to sandbox-transform that
method to intercept calls that happen in these methods.
|
protected void |
visitNontransformedStatement(org.codehaus.groovy.ast.stmt.Statement s)
Miscellaneous statements like object initializers are never transformed, but we still need to run the sandbox transformer on them.
|
literal, literal, literal, literal, loc, makeBuilder, makeChildren, makeChildren, makeNode, makeNode, makeNode, makeNode, prepostfixOperatorSuffix, setConfiguration, shouldBeTransformed, visit, visit, visitArgumentlistExpression, visitArrayExpression, visitAssertStatement, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBlockStatement, visitBooleanExpression, visitBreakStatement, visitBytecodeExpression, visitCaseStatement, visitCatchStatement, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitExpressionStatement, visitFieldExpression, visitForLoop, visitGStringExpression, visitIfElse, visitListExpression, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitReturnStatement, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitSwitch, visitSynchronizedStatement, visitTernaryExpression, visitThrowStatement, visitTryCatchFinally, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpression, visitWhileLoop, visitWithSafepointpublic void call(org.codehaus.groovy.control.SourceUnit source,
org.codehaus.groovy.classgen.GeneratorContext context,
org.codehaus.groovy.ast.ClassNode classNode)
call in class CpsTransformerprotected void processConstructors(org.codehaus.groovy.ast.ClassNode classNode)
CpsTransformerCpsCallableInvocation from inside a constructor, there's
no way to get back to the continuation. The object does not get created and so we're unable to proceed with it.
The same thing applies for object initializers.processConstructors in class CpsTransformerprotected void visitNontransformedMethod(org.codehaus.groovy.ast.MethodNode m)
visitNontransformedMethod in class CpsTransformerSandboxTransformer.call(org.codehaus.groovy.control.SourceUnit, org.codehaus.groovy.classgen.GeneratorContext, org.codehaus.groovy.ast.ClassNode)protected void visitNontransformedField(org.codehaus.groovy.ast.FieldNode f)
visitNontransformedField in class CpsTransformerSandboxTransformer.call(org.codehaus.groovy.control.SourceUnit, org.codehaus.groovy.classgen.GeneratorContext, org.codehaus.groovy.ast.ClassNode)protected void visitNontransformedStatement(org.codehaus.groovy.ast.stmt.Statement s)
visitNontransformedStatement in class CpsTransformerSandboxTransformer.call(org.codehaus.groovy.control.SourceUnit, org.codehaus.groovy.classgen.GeneratorContext, org.codehaus.groovy.ast.ClassNode)public void visitMethod(org.codehaus.groovy.ast.MethodNode m)
finalize methods when sandboxed.visitMethod in class CpsTransformerpublic void visitCastExpression(org.codehaus.groovy.ast.expr.CastExpression exp)
visitCastExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitorvisitCastExpression in class CpsTransformerprotected void visitAssignmentOrCast(org.codehaus.groovy.ast.expr.VariableExpression varExp,
org.codehaus.groovy.ast.expr.Expression rhs)
visitAssignmentOrCast in class CpsTransformerprotected void getMultipleAssignmentValueOrCast(org.codehaus.groovy.ast.expr.VariableExpression varExp,
org.codehaus.groovy.ast.expr.Expression rhs,
org.codehaus.groovy.ast.expr.Expression index)
getMultipleAssignmentValueOrCast in class CpsTransformerprotected Class getTrustTag()
CpsTransformergetTrustTag in class CpsTransformerCopyright © 2011–2019. All rights reserved.