]> granicus.if.org Git - clang/commit
Clean up a large number of C++11 attribute parse issues, including parsing
authorSean Hunt <scshunt@csclub.uwaterloo.ca>
Sat, 23 Jun 2012 05:07:58 +0000 (05:07 +0000)
committerSean Hunt <scshunt@csclub.uwaterloo.ca>
Sat, 23 Jun 2012 05:07:58 +0000 (05:07 +0000)
commit2edf0a2520313cde900799b1eb9bd11c9c776afe
tree02bfdc2d79f4cf641b5280b9d551c49746b201a9
parent28ad063b279378b19cb0704f977429df366a151e
Clean up a large number of C++11 attribute parse issues, including parsing
attributes in more places where we didn't and catching a lot more issues.

This implements nearly every aspect of C++11 attribute parsing, except for:
 - Attributes are permitted on explicit instantiations inside the declarator
   (but not preceding the decl-spec)
 - Attributes are permitted on friend declarations of functions.
 - Multiple instances of the same attribute in an attribute-list (e.g.
   [[noreturn, noreturn]], not [[noreturn]] [[noreturn]] which is conforming)
   are allowed.
The first two are marked as expected-FIXME in the test file and the latter
is probably a defect and is currently untested.

Thanks to Richard Smith for providing the lion's share of the testcases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159072 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Parse/Parser.h
lib/Parse/ParseDecl.cpp
lib/Parse/ParseDeclCXX.cpp
lib/Parse/ParseExprCXX.cpp
lib/Parse/ParseObjc.cpp
lib/Parse/ParseStmt.cpp
lib/Parse/ParseTemplate.cpp
lib/Parse/Parser.cpp
test/Parser/cxx0x-attributes.cpp