diff options
author | Chris Lattner <sabre@nondot.org> | 2008-12-18 01:12:00 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-12-18 01:12:00 +0000 |
commit | d19c1c0d6d0c91ef729475392835d0982955d14f (patch) | |
tree | 06fd8b299961d495b2342b9c5922b6aa263e444b /clang/lib/Parse/ParseDeclCXX.cpp | |
parent | 49c44fa0144aaf6eb12a6f84b01e6ef813515667 (diff) | |
download | bcm5719-llvm-d19c1c0d6d0c91ef729475392835d0982955d14f.tar.gz bcm5719-llvm-d19c1c0d6d0c91ef729475392835d0982955d14f.zip |
implement PR3177 - "__extension__ union" not supported in C++ mode
llvm-svn: 61180
Diffstat (limited to 'clang/lib/Parse/ParseDeclCXX.cpp')
-rw-r--r-- | clang/lib/Parse/ParseDeclCXX.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp index ec2a37a8524..eaada1c26cb 100644 --- a/clang/lib/Parse/ParseDeclCXX.cpp +++ b/clang/lib/Parse/ParseDeclCXX.cpp @@ -16,6 +16,7 @@ #include "clang/Parse/DeclSpec.h" #include "clang/Parse/Scope.h" #include "AstGuard.h" +#include "ExtensionRAIIObject.h" using namespace clang; /// ParseNamespace - We know that the current token is a namespace keyword. This @@ -408,6 +409,7 @@ AccessSpecifier Parser::getAccessSpecifierIfPresent() const /// using-declaration [TODO] /// [C++0x] static_assert-declaration [TODO] /// template-declaration [TODO] +/// [GNU] '__extension__' member-declaration /// /// member-declarator-list: /// member-declarator @@ -425,6 +427,14 @@ AccessSpecifier Parser::getAccessSpecifierIfPresent() const /// '=' constant-expression /// Parser::DeclTy *Parser::ParseCXXClassMemberDeclaration(AccessSpecifier AS) { + // Handle: member-declaration ::= '__extension__' member-declaration + if (Tok.is(tok::kw___extension__)) { + // __extension__ silences extension warnings in the subexpression. + ExtensionRAIIObject O(Diags); // Use RAII to do this. + ConsumeToken(); + return ParseCXXClassMemberDeclaration(AS); + } + SourceLocation DSStart = Tok.getLocation(); // decl-specifier-seq: // Parse the common declaration-specifiers piece. |