diff options
author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2010-02-03 21:21:43 +0000 |
---|---|---|
committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2010-02-03 21:21:43 +0000 |
commit | 2b37272c110289d63492fddc63bb9816dc50dc9b (patch) | |
tree | 56a77537a668f0fca98a4a98d801236ea90cdd43 /clang/lib/Parse/ParseDecl.cpp | |
parent | 2f750f3b5a3a73559eb78228fbbdfdd70461a65a (diff) | |
download | bcm5719-llvm-2b37272c110289d63492fddc63bb9816dc50dc9b.tar.gz bcm5719-llvm-2b37272c110289d63492fddc63bb9816dc50dc9b.zip |
In some contexts, type declarations cannot occur. Pass this information down to ParseClassSpecifier, to make its decision easier. Fixes PR6200.
llvm-svn: 95255
Diffstat (limited to 'clang/lib/Parse/ParseDecl.cpp')
-rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index 5a5f5092db7..99602383000 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -1398,7 +1398,8 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS, bool Parser::ParseOptionalTypeSpecifier(DeclSpec &DS, bool& isInvalid, const char *&PrevSpec, unsigned &DiagID, - const ParsedTemplateInfo &TemplateInfo) { + const ParsedTemplateInfo &TemplateInfo, + bool SuppressDeclarations) { SourceLocation Loc = Tok.getLocation(); switch (Tok.getKind()) { @@ -1408,7 +1409,7 @@ bool Parser::ParseOptionalTypeSpecifier(DeclSpec &DS, bool& isInvalid, // recurse to handle whatever we get. if (TryAnnotateTypeOrScopeToken()) return ParseOptionalTypeSpecifier(DS, isInvalid, PrevSpec, DiagID, - TemplateInfo); + TemplateInfo, SuppressDeclarations); // Otherwise, not a type specifier. return false; case tok::coloncolon: // ::foo::bar @@ -1420,7 +1421,7 @@ bool Parser::ParseOptionalTypeSpecifier(DeclSpec &DS, bool& isInvalid, // recurse to handle whatever we get. if (TryAnnotateTypeOrScopeToken()) return ParseOptionalTypeSpecifier(DS, isInvalid, PrevSpec, DiagID, - TemplateInfo); + TemplateInfo, SuppressDeclarations); // Otherwise, not a type specifier. return false; @@ -1526,7 +1527,8 @@ bool Parser::ParseOptionalTypeSpecifier(DeclSpec &DS, bool& isInvalid, case tok::kw_union: { tok::TokenKind Kind = Tok.getKind(); ConsumeToken(); - ParseClassSpecifier(Kind, Loc, DS, TemplateInfo); + ParseClassSpecifier(Kind, Loc, DS, TemplateInfo, AS_none, + SuppressDeclarations); return true; } |