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 -
Constructor Summary
ConstructorsConstructorDescriptionObjectTypeUsageRewriter(AnonymousClassUsage anonymousClassUsage, ClassFile classFile) -
Method Summary
Modifier and TypeMethodDescriptionprivate LValuehandleFieldVariable(FieldVariable fieldVariable) private Expressionprivate voidmarkLocalVar(Expression object) private booleanneedsReWrite(Expression lhsObject, JavaTypeInstance owningClassType, UnaryFunction<ClassFile, Boolean> checkVisible) rewriteExpression(Expression expression, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) rewriteExpression(LValue lValue, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) voidtransform(StructuredStatement in, StructuredScope scope) Methods inherited from class AbstractExpressionRewriter
handleStatement, rewriteExpression, rewriteExpression
-
Field Details
-
isAnonVar
-
canHaveVar
private boolean canHaveVar
-
-
Constructor Details
-
ObjectTypeUsageRewriter
-
-
Method Details
-
transform
-
transform
- 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, Boolean> checkVisible) -
handleMemberFunction
-
handleFieldVariable
-
markLocalVar
-