Class J2clEqualitySameRewriterPass

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

public class J2clEqualitySameRewriterPass extends Object
An optimization pass to re-write J2CL Equality.$same.
  • Method Details

    • report

      protected void report(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
    • 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?)
    • mayEffectMutableState

      protected boolean mayEffectMutableState(Node n)
      Returns whether the node may create new mutable state, or change existing state.
    • mayHaveSideEffects

      protected boolean mayHaveSideEffects(Node n)
      Returns whether the node may have side effects when executed.
    • getSideEffectFreeNumberValue

      protected Double getSideEffectFreeNumberValue(Node n)
      Returns the number value of the node if it has one and it cannot have side effects.

      Returns null otherwise.

    • getSideEffectFreeNumberValueNoConversion

      protected Double getSideEffectFreeNumberValueNoConversion(Node n)
    • getSideEffectFreeBigIntValue

      protected BigInteger getSideEffectFreeBigIntValue(Node n)
      Returns the bigint value of the node if it has one and it cannot have side effects.

      Returns null otherwise.

    • getSideEffectFreeStringValue

      protected String getSideEffectFreeStringValue(Node n)
      Gets the value of a node as a String, or null if it cannot be converted.

      This method effectively emulates the String() JavaScript cast function when possible and the node has no side effects. Otherwise, it returns null.

    • getSideEffectFreeBooleanValue

      protected Tri getSideEffectFreeBooleanValue(Node n)
      Calculate the known boolean value for a node if possible and if it has no side effects.

      Returns Tri.UNKNOWN if the node has side effects or its value cannot be statically determined.

    • nodeTypeMayHaveSideEffects

      protected boolean nodeTypeMayHaveSideEffects(Node n)
      Returns true if the current node's type implies side effects.

      This is a non-recursive version of the may have side effects check; used to check wherever the current node's type is one of the reason's why a subtree has side effects.

    • isEcmaScript5OrGreater

      protected boolean isEcmaScript5OrGreater()
      Returns whether the output language is ECMAScript 5 or later. Workarounds for quirks in browsers that do not support ES5 can be ignored when this is true.
    • getCodingConvention

      protected CodingConvention getCodingConvention()
      Returns the current coding convention.
    • reportChangeToEnclosingScope

      protected final void reportChangeToEnclosingScope(Node n)
    • deleteNode

      protected final void deleteNode(Node property)
    • markFunctionsDeleted

      protected final void markFunctionsDeleted(Node function)
    • markNewScopesChanged

      protected final void markNewScopesChanged(Node n)
      Calls NodeUtil.markNewScopesChanged(Node, AbstractCompiler)
    • addFeatureToEnclosingScript

      protected final void addFeatureToEnclosingScript(Node n, FeatureSet.Feature feature)