Class IfStatementContext

    • Constructor Detail

      • IfStatementContext

        public IfStatementContext​(IfStmt wrappedNode,
                                  TypeSolver typeSolver)
    • Method Detail

      • 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)