Class SideEffectAnalysis

All Implemented Interfaces:

public final class SideEffectAnalysis
extends TreeScanner<Void,​Void>
This class is responsible for analyzing an expression and telling if the expression can have side effects. This class is used by calling the static hasSideEffect(ExpressionTree) method.

A side-effect is what that would change the state of the program. Here are examples of expressions that could possibly change the state of a program.

  • Any function call: toString(), hashCode(), setX(value), etc.
  • Unary expression: i += 1, i++, --j
  • New expression: new SomeClass()

Everything besides the above examples is considered side-effect free.

The analysis in this class initially assumes that the expression is side-effect free and then tries to prove it wrong.