diff options
Diffstat (limited to 'lib/AST/Stmt.cpp')
-rw-r--r-- | lib/AST/Stmt.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/AST/Stmt.cpp b/lib/AST/Stmt.cpp index 079ed4e0da..586e8f986a 100644 --- a/lib/AST/Stmt.cpp +++ b/lib/AST/Stmt.cpp @@ -350,6 +350,18 @@ QualType CXXCatchStmt::getCaughtType() { } void CXXCatchStmt::Destroy(ASTContext& C) { - ExceptionDecl->Destroy(C); + if (ExceptionDecl) + ExceptionDecl->Destroy(C); Stmt::Destroy(C); } + +// CXXTryStmt +Stmt::child_iterator CXXTryStmt::child_begin() { return &Stmts[0]; } +Stmt::child_iterator CXXTryStmt::child_end() { return &Stmts[0]+Stmts.size(); } + +CXXTryStmt::CXXTryStmt(SourceLocation tryLoc, Stmt *tryBlock, + Stmt **handlers, unsigned numHandlers) + : Stmt(CXXTryStmtClass), TryLoc(tryLoc) { + Stmts.push_back(tryBlock); + Stmts.insert(Stmts.end(), handlers, handlers + numHandlers); +} |