Class ObjectTypeUsageRewriter
- java.lang.Object
-
- org.benf.cfr.reader.bytecode.analysis.parse.rewriters.AbstractExpressionRewriter
-
- org.benf.cfr.reader.bytecode.analysis.opgraph.op4rewriters.transformers.ObjectTypeUsageRewriter
-
- All Implemented Interfaces:
StructuredStatementTransformer
,ExpressionRewriter
public class ObjectTypeUsageRewriter extends AbstractExpressionRewriter implements StructuredStatementTransformer
Detect potential invalid usages of fields - where the class we expect to be calling them with doesn't match the class needed to access the fields in question.
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
canHaveVar
private java.util.Map<InferredJavaType,java.lang.Boolean>
isAnonVar
-
Constructor Summary
Constructors Constructor Description ObjectTypeUsageRewriter(AnonymousClassUsage anonymousClassUsage, ClassFile classFile)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private LValue
handleFieldVariable(FieldVariable fieldVariable)
private Expression
handleMemberFunction(MemberFunctionInvokation funcInv)
private void
markLocalVar(Expression object)
private boolean
needsReWrite(Expression lhsObject, JavaTypeInstance owningClassType, UnaryFunction<ClassFile,java.lang.Boolean> checkVisible)
Expression
rewriteExpression(Expression expression, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
LValue
rewriteExpression(LValue lValue, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
void
transform(Op04StructuredStatement root)
StructuredStatement
transform(StructuredStatement in, StructuredScope scope)
-
Methods inherited from class org.benf.cfr.reader.bytecode.analysis.parse.rewriters.AbstractExpressionRewriter
handleStatement, rewriteExpression, rewriteExpression
-
-
-
-
Field Detail
-
isAnonVar
private final java.util.Map<InferredJavaType,java.lang.Boolean> isAnonVar
-
canHaveVar
private boolean canHaveVar
-
-
Constructor Detail
-
ObjectTypeUsageRewriter
public ObjectTypeUsageRewriter(AnonymousClassUsage anonymousClassUsage, ClassFile classFile)
-
-
Method Detail
-
transform
public void transform(Op04StructuredStatement root)
-
transform
public StructuredStatement transform(StructuredStatement in, StructuredScope scope)
- Specified by:
transform
in interfaceStructuredStatementTransformer
-
rewriteExpression
public Expression rewriteExpression(Expression expression, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
- Specified by:
rewriteExpression
in interfaceExpressionRewriter
- Overrides:
rewriteExpression
in classAbstractExpressionRewriter
-
rewriteExpression
public LValue rewriteExpression(LValue lValue, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
- Specified by:
rewriteExpression
in interfaceExpressionRewriter
- Overrides:
rewriteExpression
in classAbstractExpressionRewriter
-
needsReWrite
private boolean needsReWrite(Expression lhsObject, JavaTypeInstance owningClassType, UnaryFunction<ClassFile,java.lang.Boolean> checkVisible)
-
handleMemberFunction
private Expression handleMemberFunction(MemberFunctionInvokation funcInv)
-
handleFieldVariable
private LValue handleFieldVariable(FieldVariable fieldVariable)
-
markLocalVar
private void markLocalVar(Expression object)
-
-