aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Parse/Parser.cpp
diff options
context:
space:
mode:
authorErik Pilkington <erik.pilkington@gmail.com>2019-03-13 18:30:59 +0000
committerErik Pilkington <erik.pilkington@gmail.com>2019-03-13 18:30:59 +0000
commitfcc53eedab6ce6b51beb2046b46e3d6b79c113f9 (patch)
tree139723dcedc4f9c480467c0ef16699535f4397c2 /clang/lib/Parse/Parser.cpp
parentbd1c56648fae4703f127db2a2953b48c6c20d2a7 (diff)
downloadllvm-fcc53eedab6ce6b51beb2046b46e3d6b79c113f9.zip
llvm-fcc53eedab6ce6b51beb2046b46e3d6b79c113f9.tar.gz
llvm-fcc53eedab6ce6b51beb2046b46e3d6b79c113f9.tar.bz2
[Parse] Parse '#pragma clang attribute' as an external-declaration
Previously, we parsed it only in the top level, which excludes namespaces and extern "C" blocks. rdar://problem/48818890 Differential revision: https://reviews.llvm.org/D59282 llvm-svn: 356075
Diffstat (limited to 'clang/lib/Parse/Parser.cpp')
-rw-r--r--clang/lib/Parse/Parser.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/clang/lib/Parse/Parser.cpp b/clang/lib/Parse/Parser.cpp
index 5d8cffa..fbda4ea 100644
--- a/clang/lib/Parse/Parser.cpp
+++ b/clang/lib/Parse/Parser.cpp
@@ -583,10 +583,6 @@ bool Parser::ParseTopLevelDecl(DeclGroupPtrTy &Result) {
ConsumeAnnotationToken();
return false;
- case tok::annot_pragma_attribute:
- HandlePragmaAttribute();
- return false;
-
case tok::eof:
// Late template parsing can begin.
if (getLangOpts().DelayedTemplateParsing)
@@ -698,6 +694,9 @@ Parser::ParseExternalDeclaration(ParsedAttributesWithRange &attrs,
case tok::annot_pragma_dump:
HandlePragmaDump();
return nullptr;
+ case tok::annot_pragma_attribute:
+ HandlePragmaAttribute();
+ return nullptr;
case tok::semi:
// Either a C++11 empty-declaration or attribute-declaration.
SingleDecl =