aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2011-09-29 18:03:57 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2011-09-29 18:03:57 +0000
commitf19076848566cb52a40ddbdb2555c53d12e9a003 (patch)
tree47cadad21740fb79dd5217349000377d8954030e
parenta95b9f6dab394fea8378702e1a3d06e3cdfdc9c4 (diff)
Add support for parsing the optional attribute-specifier-seq at the
end of a decl-specifier-seq git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140793 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Parse/ParseDecl.cpp3
-rw-r--r--test/Parser/cxx0x-attributes.cpp2
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp
index d4b5a2b5bf..d904bcc807 100644
--- a/lib/Parse/ParseDecl.cpp
+++ b/lib/Parse/ParseDecl.cpp
@@ -1541,6 +1541,9 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS,
switch (Tok.getKind()) {
default:
DoneWithDeclSpec:
+ // [C++0x] decl-specifier-seq: decl-specifier attribute-specifier-seq[opt]
+ MaybeParseCXX0XAttributes(DS.getAttributes());
+
// If this is not a declaration specifier token, we're done reading decl
// specifiers. First verify that DeclSpec's are consistent.
DS.Finish(Diags, PP);
diff --git a/test/Parser/cxx0x-attributes.cpp b/test/Parser/cxx0x-attributes.cpp
index 0285ee1e9a..75f23c657c 100644
--- a/test/Parser/cxx0x-attributes.cpp
+++ b/test/Parser/cxx0x-attributes.cpp
@@ -2,6 +2,7 @@
// Declaration syntax checks
[[]] int before_attr;
+int [[]] between_attr;
int after_attr [[]];
int * [[]] ptr_attr;
int array_attr [1] [[]];
@@ -15,6 +16,7 @@ template <typename T> [[]] void template_attr ();
int comma_attr [[,]]; // expected-error {{expected identifier}}
int scope_attr [[foo::]]; // expected-error {{expected identifier}}
+unsigned [[]] int attr_in_decl_spec; // expected-error {{expected unqualified-id}}
int & [[]] ref_attr = after_attr; // expected-error {{an attribute list cannot appear here}}
class foo {
void after_const_attr () const [[]]; // expected-error {{expected body of lambda expression}} expected-error {{array has incomplete element type 'void'}}