25 bool visitExpression(
const Expression& expr)
override {
26 switch (expr.
kind()) {
27 case Expression::Kind::kFunctionCall: {
29 if (!
call.function().modifierFlags().isPure()) {
34 case Expression::Kind::kPrefix: {
36 if (
prefix.getOperator().kind() == Operator::Kind::PLUSPLUS ||
37 prefix.getOperator().kind() == Operator::Kind::MINUSMINUS) {
42 case Expression::Kind::kBinary: {
44 if (
binary.getOperator().isAssignment()) {
49 case Expression::Kind::kPostfix:
55 return INHERITED::visitExpression(expr);
61 HasSideEffectsVisitor visitor;
62 return visitor.visitExpression(expr);
#define INHERITED(method,...)
bool HasSideEffects(const Expression &expr)