r361660 - Add JSON dumping tests for ObjC statements; add support for dumping @catch catch-all statements.

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Fri May 24 11:58:29 PDT 2019


Author: aaronballman
Date: Fri May 24 11:58:29 2019
New Revision: 361660

URL: http://llvm.org/viewvc/llvm-project?rev=361660&view=rev
Log:
Add JSON dumping tests for ObjC statements; add support for dumping @catch catch-all statements.

Added:
    cfe/trunk/test/AST/ast-dump-stmt-json.m
Modified:
    cfe/trunk/include/clang/AST/JSONNodeDumper.h
    cfe/trunk/lib/AST/JSONNodeDumper.cpp

Modified: cfe/trunk/include/clang/AST/JSONNodeDumper.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/JSONNodeDumper.h?rev=361660&r1=361659&r2=361660&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/JSONNodeDumper.h (original)
+++ cfe/trunk/include/clang/AST/JSONNodeDumper.h Fri May 24 11:58:29 2019
@@ -260,6 +260,7 @@ public:
   void VisitLabelStmt(const LabelStmt *LS);
   void VisitGotoStmt(const GotoStmt *GS);
   void VisitWhileStmt(const WhileStmt *WS);
+  void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *OACS);
 
   void visitTextComment(const comments::TextComment *C,
                         const comments::FullComment *);

Modified: cfe/trunk/lib/AST/JSONNodeDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/JSONNodeDumper.cpp?rev=361660&r1=361659&r2=361660&view=diff
==============================================================================
--- cfe/trunk/lib/AST/JSONNodeDumper.cpp (original)
+++ cfe/trunk/lib/AST/JSONNodeDumper.cpp Fri May 24 11:58:29 2019
@@ -966,6 +966,13 @@ void JSONNodeDumper::VisitWhileStmt(cons
   attributeOnlyIfTrue("hasVar", WS->hasVarStorage());
 }
 
+void JSONNodeDumper::VisitObjCAtCatchStmt(const ObjCAtCatchStmt* OACS) {
+  // FIXME: it would be nice for the ASTNodeTraverser would handle the catch
+  // parameter the same way for C++ and ObjC rather. In this case, C++ gets a
+  // null child node and ObjC gets no child node.
+  attributeOnlyIfTrue("isCatchAll", OACS->getCatchParamDecl() == nullptr);
+}
+
 StringRef JSONNodeDumper::getCommentCommandName(unsigned CommandID) const {
   if (Traits)
     return Traits->getCommandInfo(CommandID)->Name;

Added: cfe/trunk/test/AST/ast-dump-stmt-json.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-stmt-json.m?rev=361660&view=auto
==============================================================================
--- cfe/trunk/test/AST/ast-dump-stmt-json.m (added)
+++ cfe/trunk/test/AST/ast-dump-stmt-json.m Fri May 24 11:58:29 2019
@@ -0,0 +1,719 @@
+// RUN: %clang_cc1 -Wno-unused -fblocks -fobjc-exceptions -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
+
+void TestBlockExpr(int x) {
+  ^{ x; };
+}
+
+void TestExprWithCleanup(int x) {
+  ^{ x; };
+}
+
+ at interface A
+ at end
+
+void TestObjCAtCatchStmt() {
+  @try {
+  } @catch(A *a) {
+  } @catch(...) {
+  } @finally {
+  }
+}
+
+
+// CHECK:  "kind": "FunctionDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 3
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 3
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 5
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "TestBlockExpr", 
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void (int)"
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "ParmVarDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 24, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 3
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 20, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 3
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 24, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 3
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isUsed": true, 
+// CHECK-NEXT:    "name": "x", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CompoundStmt", 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 27, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 3
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 5
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ExprWithCleanups", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 4
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 9, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 4
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "void (^)(void)"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "BlockExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 4
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 9, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 4
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "void (^)(void)"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "BlockDecl", 
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 3, 
+// CHECK-NEXT:           "file": "{{.*}}", 
+// CHECK-NEXT:           "line": 4
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 3, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 4
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 9, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 4
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "kind": "Capture", 
+// CHECK-NEXT:            "var": {
+// CHECK-NEXT:             "id": "0x{{.*}}", 
+// CHECK-NEXT:             "kind": "ParmVarDecl", 
+// CHECK-NEXT:             "name": "x", 
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "int"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "CompoundStmt", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 4, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 4
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 9, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 4
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 6, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 4
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 6, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 4
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "castKind": "LValueToRValue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "DeclRefExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 6, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 4
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 6, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 4
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "const int"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "lvalue", 
+// CHECK-NEXT:                "referencedDecl": {
+// CHECK-NEXT:                 "id": "0x{{.*}}", 
+// CHECK-NEXT:                 "kind": "ParmVarDecl", 
+// CHECK-NEXT:                 "name": "x", 
+// CHECK-NEXT:                 "type": {
+// CHECK-NEXT:                  "qualType": "int"
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 7
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 7
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 9
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "TestExprWithCleanup", 
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void (int)"
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "ParmVarDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 30, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 7
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 26, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 7
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 30, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 7
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isUsed": true, 
+// CHECK-NEXT:    "name": "x", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CompoundStmt", 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 33, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 7
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 9
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ExprWithCleanups", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 8
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 9, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 8
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "void (^)(void)"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "BlockExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 8
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 9, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 8
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "void (^)(void)"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "BlockDecl", 
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 3, 
+// CHECK-NEXT:           "file": "{{.*}}", 
+// CHECK-NEXT:           "line": 8
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 3, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 8
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 9, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 8
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "kind": "Capture", 
+// CHECK-NEXT:            "var": {
+// CHECK-NEXT:             "id": "0x{{.*}}", 
+// CHECK-NEXT:             "kind": "ParmVarDecl", 
+// CHECK-NEXT:             "name": "x", 
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "int"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "CompoundStmt", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 4, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 8
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 9, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 8
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 6, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 8
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 6, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 8
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "castKind": "LValueToRValue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "DeclRefExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 6, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 8
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 6, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 8
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "const int"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "lvalue", 
+// CHECK-NEXT:                "referencedDecl": {
+// CHECK-NEXT:                 "id": "0x{{.*}}", 
+// CHECK-NEXT:                 "kind": "ParmVarDecl", 
+// CHECK-NEXT:                 "name": "x", 
+// CHECK-NEXT:                 "type": {
+// CHECK-NEXT:                  "qualType": "int"
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 14
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 14
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 20
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "TestObjCAtCatchStmt", 
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void ()"
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CompoundStmt", 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 28, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 14
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 20
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ObjCAtTryStmt", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 15
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 19
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "CompoundStmt", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 8, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 15
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 16
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "ObjCAtCatchStmt", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 16
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 17
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "VarDecl", 
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 15, 
+// CHECK-NEXT:           "file": "{{.*}}", 
+// CHECK-NEXT:           "line": 16
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 12, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 16
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 15, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 16
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "name": "a", 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "A *"
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "CompoundStmt", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 18, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 16
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 3, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 17
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "ObjCAtCatchStmt", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 17
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 18
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "isCatchAll": true, 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "CompoundStmt", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 17, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 17
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 3, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 18
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "ObjCAtFinallyStmt", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 18
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 19
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "CapturedStmt", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 14, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 18
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 3, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 19
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "CapturedDecl", 
+// CHECK-NEXT:            "loc": {}, 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {}, 
+// CHECK-NEXT:             "end": {}
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "CompoundStmt", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 14, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 18
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 3, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 19
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ImplicitParamDecl", 
+// CHECK-NEXT:              "loc": {
+// CHECK-NEXT:               "col": 14, 
+// CHECK-NEXT:               "file": "{{.*}}", 
+// CHECK-NEXT:               "line": 18
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 14, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 18
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 14, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 18
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "isImplicit": true, 
+// CHECK-NEXT:              "name": "__context", 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "struct (anonymous at {{.*}}:18:14) *"
+// CHECK-NEXT:              }
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+




More information about the cfe-commits mailing list