## com.google.javascript.jscomp
Class StatementFusion

    java.lang.Object
      com.google.javascript.jscomp.StatementFusion

    public class StatementFusion

extends Object

Tries to fuse all the statements in a block into a one statement by using COMMAs. Because COMMAs has the lowest precedence, we never need to insert extra () around. Once we have only one statement in a block, we can then eliminate a pair of {}'s. Further more, we can also fold a single statement IF into && or create further opportunities for all the other goodies in `PeepholeSubstituteAlternateSyntax`.

Constructor Summary
`StatementFusion()`

Method Summary
`protected boolean` | `areNodesEqualForInlining(Node n1, Node n2)` Are the nodes equal for the purpose of inlining? If type aware optimizations are on, type equality is checked.
`protected void` | `error(DiagnosticType diagnostic, Node n)` Helper method for reporting an error to the compiler when applying a peephole optimization.
`protected boolean` | `isASTNormalized()` Is the current AST normalized? (e.g.
`protected void` | `reportCodeChange()` Helper method for telling the compiler that something has changed.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### StatementFusion

    public StatementFusion()

Method Detail

### error

    protected void error(DiagnosticType diagnostic,
                         Node n)

  Helper method for reporting an error to the compiler when applying a peephole optimization.

  Parameters:
    `diagnostic` - The error type
    `n` - The node for which the error should be reported

### reportCodeChange

    protected void reportCodeChange()

  Helper method for telling the compiler that something has changed. Subclasses must call these if they have changed the AST.

### areNodesEqualForInlining

    protected boolean areNodesEqualForInlining(Node n1,
                                               Node n2)

  Are the nodes equal for the purpose of inlining? If type aware optimizations are on, type equality is checked.

### isASTNormalized

    protected boolean isASTNormalized()

  Is the current AST normalized? (e.g. has the Normalize pass been run and has the Denormalize pass not yet been run?)