diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-08-24 12:17:54 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-08-24 12:17:54 +0000 |
commit | a1d71aea847a50b3acbd187d2ae9e5c1ead0f4e2 (patch) | |
tree | 82cb6d7f70668cf62c74dc098b792edc22f813c8 /lib/Parse/Parser.cpp | |
parent | efd5bdad3c2b746db46452c6b13bd3c462dd761d (diff) |
Top-level semicolons are allowed in C++0x. Fixes PR4755.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79912 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/Parser.cpp')
-rw-r--r-- | lib/Parse/Parser.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/Parse/Parser.cpp b/lib/Parse/Parser.cpp index 1a082db434..798af1840a 100644 --- a/lib/Parse/Parser.cpp +++ b/lib/Parse/Parser.cpp @@ -375,7 +375,7 @@ void Parser::ParseTranslationUnit() { /// external-declaration: [C99 6.9], declaration: [C++ dcl.dcl] /// function-definition /// declaration -/// [EXT] ';' +/// [C++0x] empty-declaration /// [GNU] asm-definition /// [GNU] __extension__ external-declaration /// [OBJC] objc-class-definition @@ -388,12 +388,17 @@ void Parser::ParseTranslationUnit() { /// [GNU] asm-definition: /// simple-asm-expr ';' /// +/// [C++0x] empty-declaration: +/// ';' +/// Parser::DeclGroupPtrTy Parser::ParseExternalDeclaration() { DeclPtrTy SingleDecl; switch (Tok.getKind()) { case tok::semi: - Diag(Tok, diag::ext_top_level_semi) - << CodeModificationHint::CreateRemoval(SourceRange(Tok.getLocation())); + if (!getLang().CPlusPlus0x) + Diag(Tok, diag::ext_top_level_semi) + << CodeModificationHint::CreateRemoval(SourceRange(Tok.getLocation())); + ConsumeToken(); // TODO: Invoke action for top-level semicolon. return DeclGroupPtrTy(); |