diff options
-rw-r--r-- | lib/Parse/ParseDeclCXX.cpp | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/lib/Parse/ParseDeclCXX.cpp b/lib/Parse/ParseDeclCXX.cpp index 4201e1cb1e..c50a033e56 100644 --- a/lib/Parse/ParseDeclCXX.cpp +++ b/lib/Parse/ParseDeclCXX.cpp @@ -64,36 +64,34 @@ Parser::DeclPtrTy Parser::ParseNamespace(unsigned Context) { // FIXME: Verify no attributes were present. return ParseNamespaceAlias(NamespaceLoc, IdentLoc, Ident); - if (Tok.is(tok::l_brace)) { - SourceLocation LBrace = ConsumeBrace(); + if (Tok.isNot(tok::l_brace)) { + Diag(Tok, Ident ? diag::err_expected_lbrace : + diag::err_expected_ident_lbrace); + return DeclPtrTy(); + } + + SourceLocation LBrace = ConsumeBrace(); - // Enter a scope for the namespace. - ParseScope NamespaceScope(this, Scope::DeclScope); + // Enter a scope for the namespace. + ParseScope NamespaceScope(this, Scope::DeclScope); - DeclPtrTy NamespcDecl = - Actions.ActOnStartNamespaceDef(CurScope, IdentLoc, Ident, LBrace); + DeclPtrTy NamespcDecl = + Actions.ActOnStartNamespaceDef(CurScope, IdentLoc, Ident, LBrace); - PrettyStackTraceActionsDecl CrashInfo(NamespcDecl, NamespaceLoc, Actions, - PP.getSourceManager(), - "parsing namespace"); - - while (Tok.isNot(tok::r_brace) && Tok.isNot(tok::eof)) - ParseExternalDeclaration(); - - // Leave the namespace scope. - NamespaceScope.Exit(); + PrettyStackTraceActionsDecl CrashInfo(NamespcDecl, NamespaceLoc, Actions, + PP.getSourceManager(), + "parsing namespace"); + + while (Tok.isNot(tok::r_brace) && Tok.isNot(tok::eof)) + ParseExternalDeclaration(); + + // Leave the namespace scope. + NamespaceScope.Exit(); - SourceLocation RBrace = MatchRHSPunctuation(tok::r_brace, LBrace); - Actions.ActOnFinishNamespaceDef(NamespcDecl, RBrace); + SourceLocation RBrace = MatchRHSPunctuation(tok::r_brace, LBrace); + Actions.ActOnFinishNamespaceDef(NamespcDecl, RBrace); - return NamespcDecl; - - } else { - Diag(Tok, Ident ? diag::err_expected_lbrace : - diag::err_expected_ident_lbrace); - } - - return DeclPtrTy(); + return NamespcDecl; } /// ParseNamespaceAlias - Parse the part after the '=' in a namespace |