Class LambdaRewriter
java.lang.Object
org.benf.cfr.reader.bytecode.analysis.opgraph.op4rewriters.LambdaRewriter
- All Implemented Interfaces:
Op04Rewriter
,ExpressionRewriter
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class
static class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Method
private final LinkedList<Expression>
private final DCCommonState
private final ClassFile
private final JavaTypeInstance
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
couldBeAmbiguous
(Expression fn, Expression arg, LambdaExpression res) private List<JavaTypeInstance>
getExplicitLambdaTypes
(JavaTypeInstance functionArgType) private static Expression
void
handleStatement
(StatementContainer statementContainer) private static boolean
isNewArrayLambda
(Expression e, List<Expression> curriedArgs, List<LValue> anonymousLambdaArgs) void
private Expression
rewriteDynamicExpression
(DynamicInvokation dynamicExpression) private Expression
rewriteDynamicExpression
(DynamicInvokation dynamicExpression, StaticFunctionInvokation functionInvokation, List<Expression> curriedArgs) rewriteExpression
(ConditionalExpression expression, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) rewriteExpression
(Expression expression, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) rewriteExpression
(StackSSALabel lValue, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) rewriteExpression
(LValue lValue, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
-
Field Details
-
state
-
thisClassFile
-
typeInstance
-
method
-
processingStack
-
-
Constructor Details
-
LambdaRewriter
-
-
Method Details
-
rewrite
- Specified by:
rewrite
in interfaceOp04Rewriter
-
handleStatement
- Specified by:
handleStatement
in interfaceExpressionRewriter
-
rewriteExpression
public Expression rewriteExpression(Expression expression, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) - Specified by:
rewriteExpression
in interfaceExpressionRewriter
-
rewriteExpression
public ConditionalExpression rewriteExpression(ConditionalExpression expression, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) - Specified by:
rewriteExpression
in interfaceExpressionRewriter
-
rewriteExpression
public LValue rewriteExpression(LValue lValue, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) - Specified by:
rewriteExpression
in interfaceExpressionRewriter
-
rewriteExpression
public StackSSALabel rewriteExpression(StackSSALabel lValue, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) - Specified by:
rewriteExpression
in interfaceExpressionRewriter
-
rewriteDynamicExpression
-
couldBeAmbiguous
-
getExplicitLambdaTypes
-
getLambdaVariable
-
rewriteDynamicExpression
private Expression rewriteDynamicExpression(DynamicInvokation dynamicExpression, StaticFunctionInvokation functionInvokation, List<Expression> curriedArgs) -
isNewArrayLambda
private static boolean isNewArrayLambda(Expression e, List<Expression> curriedArgs, List<LValue> anonymousLambdaArgs)
-