private static boolean isVolatileField(Symbol symbol) { return isField(symbol) && symbol.isVolatile(); }
private static boolean isMemberSelectActingOnField(IdentifierTree expression) { final Symbol symbol = expression.symbol(); return ProgramState.isField(symbol); } }
private static boolean isMemberSelectActingOnField(IdentifierTree expression) { return ProgramState.isField(expression.symbol()); }
private static boolean isVolatileField(Symbol symbol) { return isField(symbol) && symbol.isVolatile(); }
private static boolean isMemberSelectActingOnField(IdentifierTree expression) { return ProgramState.isField(expression.symbol()); }
ProgramState resetFieldValues(ConstraintManager constraintManager, boolean resetOnlyStaticFields) { List<Symbol> fields = new ArrayList<>(); values.forEach((symbol, symbolicValue) -> { if (isField(symbol) && !symbol.isFinal() && (symbol.isStatic() || !resetOnlyStaticFields) ) { fields.add(symbol); } }); ProgramState newProgramState = this; for (Symbol field : fields) { newProgramState = newProgramState.put(field, constraintManager.createDefaultSymbolicValue()); } return newProgramState; }
ProgramState resetFieldValues(ConstraintManager constraintManager, boolean resetOnlyStaticFields) { List<Symbol> fields = new ArrayList<>(); values.forEach((symbol, symbolicValue) -> { if (isField(symbol) && !symbol.isFinal() && (symbol.isStatic() || !resetOnlyStaticFields) ) { fields.add(symbol); } }); ProgramState newProgramState = this; for (Symbol field : fields) { newProgramState = newProgramState.put(field, constraintManager.createDefaultSymbolicValue()); } return newProgramState; }
@Override public void visitMemberSelectExpression(MemberSelectExpressionTree tree) { Symbol symbol = tree.identifier().symbol(); if (isField(symbol) && !symbol.isStatic()) { if (tree.expression().is(Kind.IDENTIFIER)) { if (!ExpressionUtils.isThis(tree.expression())) { fieldsReadOnAnotherInstance.add(symbol); } } else { fieldsReadOnAnotherInstance.add(symbol); } } super.visitMemberSelectExpression(tree); } }
@Override public void visitMemberSelectExpression(MemberSelectExpressionTree tree) { Symbol symbol = tree.identifier().symbol(); if (isField(symbol) && !symbol.isStatic()) { if (tree.expression().is(Kind.IDENTIFIER)) { if (!ExpressionUtils.isThis(tree.expression())) { fieldsReadOnAnotherInstance.add(symbol); } } else { fieldsReadOnAnotherInstance.add(symbol); } } super.visitMemberSelectExpression(tree); } }