Skip to content
Snippets Groups Projects
  • Etienne Bergeron's avatar
    c33ca9eb
    [ASTMatchers] Add support of hasCondition for SwitchStmt. · c33ca9eb
    Etienne Bergeron authored
    Summary:
    The switch statement could be added to the hasCondition matcher.
    
    Example:
    ```
    clang-query> match switchStmt(hasCondition(ignoringImpCasts(declRefExpr())))
    ```
    
    Output:
    ```
    Match #1:
    
    Binding for "root":
    SwitchStmt 0x2f9b528 </usr/local/google/home/etienneb/examples/enum.cc:35:3, line:38:3>
    |-<<<NULL>>>
    |-ImplicitCastExpr 0x2f9b510 <line:35:11> 'int' <IntegralCast>
    | `-ImplicitCastExpr 0x2f9b4f8 <col:11> 'enum Color' <LValueToRValue>
    |   `-DeclRefExpr 0x2f9b4d0 <col:11> 'enum Color' lvalue Var 0x2f9a118 'C' 'enum Color'
    `-CompoundStmt 0x2f9b610 <col:14, line:38:3>
      |-CaseStmt 0x2f9b578 <line:36:3, col:22>
      | |-ImplicitCastExpr 0x2f9b638 <col:8> 'int' <IntegralCast>
      | | `-DeclRefExpr 0x2f9b550 <col:8> 'enum Size' EnumConstant 0x2f99e40 'Small' 'enum Size'
      | |-<<<NULL>>>
      | `-ReturnStmt 0x2f9b5d0 <col:15, col:22>
      |   `-IntegerLiteral 0x2f9b5b0 <col:22> 'int' 1
      `-DefaultStmt 0x2f9b5f0 <line:37:3, col:12>
        `-BreakStmt 0x2f9b5e8 <col:12>
    
    1 match.
    ```
    
    Reviewers: aaron.ballman, sbenza, klimek
    
    Subscribers: klimek, cfe-commits
    
    Differential Revision: http://reviews.llvm.org/D20767
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271208 91177308-0d34-0410-b5e6-96231b3b80d8
    c33ca9eb
    History
    [ASTMatchers] Add support of hasCondition for SwitchStmt.
    Etienne Bergeron authored
    Summary:
    The switch statement could be added to the hasCondition matcher.
    
    Example:
    ```
    clang-query> match switchStmt(hasCondition(ignoringImpCasts(declRefExpr())))
    ```
    
    Output:
    ```
    Match #1:
    
    Binding for "root":
    SwitchStmt 0x2f9b528 </usr/local/google/home/etienneb/examples/enum.cc:35:3, line:38:3>
    |-<<<NULL>>>
    |-ImplicitCastExpr 0x2f9b510 <line:35:11> 'int' <IntegralCast>
    | `-ImplicitCastExpr 0x2f9b4f8 <col:11> 'enum Color' <LValueToRValue>
    |   `-DeclRefExpr 0x2f9b4d0 <col:11> 'enum Color' lvalue Var 0x2f9a118 'C' 'enum Color'
    `-CompoundStmt 0x2f9b610 <col:14, line:38:3>
      |-CaseStmt 0x2f9b578 <line:36:3, col:22>
      | |-ImplicitCastExpr 0x2f9b638 <col:8> 'int' <IntegralCast>
      | | `-DeclRefExpr 0x2f9b550 <col:8> 'enum Size' EnumConstant 0x2f99e40 'Small' 'enum Size'
      | |-<<<NULL>>>
      | `-ReturnStmt 0x2f9b5d0 <col:15, col:22>
      |   `-IntegerLiteral 0x2f9b5b0 <col:22> 'int' 1
      `-DefaultStmt 0x2f9b5f0 <line:37:3, col:12>
        `-BreakStmt 0x2f9b5e8 <col:12>
    
    1 match.
    ```
    
    Reviewers: aaron.ballman, sbenza, klimek
    
    Subscribers: klimek, cfe-commits
    
    Differential Revision: http://reviews.llvm.org/D20767
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271208 91177308-0d34-0410-b5e6-96231b3b80d8
Code owners
Assign users and groups as approvers for specific file changes. Learn more.