Simplify function try/catch scope handling.

Based on post-commit review feedback for r167766 by Richard Smith.

llvm-svn: 167856
This commit is contained in:
David Blaikie 2012-11-13 18:51:45 +00:00
parent 3946877f88
commit 3403feb1d0
2 changed files with 4 additions and 13 deletions

View File

@ -84,18 +84,9 @@ public:
/// TryScope - This is the scope of a C++ try statement.
TryScope = 0x1000,
/// CatchScope - This is the scope of a C++ catch statement.
CatchScope = 0x2000,
/// FnTryCatchScope - This is the scope for a function-level C++ try or
/// catch scope.
FnTryCatchScope = 0x4000,
/// FnTryScope - This is the scope of a function-level C++ try scope.
FnTryScope = TryScope | FnTryCatchScope,
/// FnCatchScope - This is the scope of a function-level C++ catch scope.
FnCatchScope = CatchScope | FnTryCatchScope
FnTryCatchScope = 0x2000
};
private:
/// The parent scope for this scope. This is null for the translation-unit

View File

@ -2123,8 +2123,8 @@ StmtResult Parser::ParseCXXTryBlockCommon(SourceLocation TryLoc, bool FnTry) {
// FIXME: Possible draft standard bug: attribute-specifier should be allowed?
StmtResult TryBlock(ParseCompoundStatement(/*isStmtExpr=*/false,
Scope::DeclScope |
(FnTry ? Scope::FnTryScope : Scope::TryScope)));
Scope::DeclScope | Scope::TryScope |
(FnTry ? Scope::FnTryCatchScope : 0)));
if (TryBlock.isInvalid())
return TryBlock;
@ -2197,7 +2197,7 @@ StmtResult Parser::ParseCXXCatchBlock(bool FnCatch) {
// The name in a catch exception-declaration is local to the handler and
// shall not be redeclared in the outermost block of the handler.
ParseScope CatchScope(this, Scope::DeclScope | Scope::ControlScope |
(FnCatch ? Scope::FnCatchScope : Scope::CatchScope));
(FnCatch ? Scope::FnTryCatchScope : 0));
// exception-declaration is equivalent to '...' or a parameter-declaration
// without default arguments.