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 booleancanHaveVarprivate 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 LValuehandleFieldVariable(FieldVariable fieldVariable)private ExpressionhandleMemberFunction(MemberFunctionInvokation funcInv)private voidmarkLocalVar(Expression object)private booleanneedsReWrite(Expression lhsObject, JavaTypeInstance owningClassType, UnaryFunction<ClassFile,java.lang.Boolean> checkVisible)ExpressionrewriteExpression(Expression expression, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)LValuerewriteExpression(LValue lValue, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)voidtransform(Op04StructuredStatement root)StructuredStatementtransform(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:
transformin interfaceStructuredStatementTransformer
-
rewriteExpression
public Expression rewriteExpression(Expression expression, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
- Specified by:
rewriteExpressionin interfaceExpressionRewriter- Overrides:
rewriteExpressionin classAbstractExpressionRewriter
-
rewriteExpression
public LValue rewriteExpression(LValue lValue, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
- Specified by:
rewriteExpressionin interfaceExpressionRewriter- Overrides:
rewriteExpressionin 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)
-
-