All Implemented Interfaces:
Context

public class IfStatementContext extends StatementContext<IfStmt>
  • Constructor Details

    • IfStatementContext

      public IfStatementContext(IfStmt wrappedNode, TypeSolver typeSolver)
  • Method Details

    • typePatternExprsExposedToChild

      public List<TypePatternExpr> typePatternExprsExposedToChild(Node child)
      The following rules apply to a statement if (e) S: - A pattern variable introduced by e when true is definitely matched at S. The following rules apply to a statement if (e) S else T: - A pattern variable introduced by e when true is definitely matched at S. - A pattern variable introduced by e when false is definitely matched at T. https://docs.oracle.com/javase/specs/jls/se22/html/jls-6.html#jls-6.3.2.2
    • getIntroducedTypePatterns

      public List<TypePatternExpr> getIntroducedTypePatterns()
      The following rules apply to a statement if (e) S: - A pattern variable is introduced by if (e) S iff (i) it is introduced by e when false and (ii) S cannot complete normally. The following rules apply to a statement if (e) S else T: - A pattern variable is introduced by if (e) S else T iff either: - It is introduced by e when true, and S can complete normally, and T cannot complete normally; or - It is introduced by e when false, and S cannot complete normally, and T can complete normally.
      Overrides:
      getIntroducedTypePatterns in class StatementContext<IfStmt>
    • nodeContextIsChainedIfElseIf

      public boolean nodeContextIsChainedIfElseIf(Context parentContext)
      
       if() {
           // Does not match here (doesn't need to, as stuff inside of the if() is likely in context..)
       } else if() {
           // Matches here
       } else {
           // Matches here
       }
       
      Returns:
      true, If this is an if inside of an if...
    • nodeContextIsImmediateChildElse

      public boolean nodeContextIsImmediateChildElse(Context parentContext)
      
       if() {
           // Does not match here (doesn't need to, as stuff inside of the if() is likely in context..)
       } else {
           // Does not match here, as the else block is a field inside of an ifstmt as opposed to child
       }
       
      Returns:
      true, If this is an else inside of an if...
    • nodeContextIsThenOfIfStmt

      public boolean nodeContextIsThenOfIfStmt(Context parentContext)
      
       if() {
           // Does not match here (doesn't need to, as stuff inside of the if() is likely in context..)
       } else {
           // Does not match here, as the else block is a field inside of an ifstmt as opposed to child
       }
       
      Returns:
      true, If this is an else inside of an if...
    • nodeContextIsConditionOfIfStmt

      public boolean nodeContextIsConditionOfIfStmt(Context parentContext)