On Sat, Jan 3, 2015 at 11:44 AM, Aaron Ballman <[email protected]> wrote:
> On Sat, Jan 3, 2015 at 2:41 PM, David Majnemer <[email protected]> > wrote: > > Author: majnemer > > Date: Sat Jan 3 13:41:00 2015 > > New Revision: 225118 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=225118&view=rev > > Log: > > Parse: __attribute__((keyword)) shouldn't error > > > > Weird constructs like __attribute__((inline)) or > > __attibute__((typename)) should result in warnings, not errors. > > > > Modified: > > cfe/trunk/lib/Parse/ParseDecl.cpp > > cfe/trunk/test/Parser/cxx-attributes.cpp > > cfe/trunk/test/Parser/namespace-alias-attr.cpp > > > > Modified: cfe/trunk/lib/Parse/ParseDecl.cpp > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseDecl.cpp?rev=225118&r1=225117&r2=225118&view=diff > > > ============================================================================== > > --- cfe/trunk/lib/Parse/ParseDecl.cpp (original) > > +++ cfe/trunk/lib/Parse/ParseDecl.cpp Sat Jan 3 13:41:00 2015 > > @@ -143,11 +143,12 @@ void Parser::ParseGNUAttributes(ParsedAt > > continue; > > > > // Expect an identifier or declaration specifier (const, int, > etc.) > > - if (Tok.isNot(tok::identifier) && !isTypeQualifier() && > > - !isKnownToBeTypeSpecifier(Tok)) > > + if (Tok.isAnnotation()) > > break; > > Thanks for taking care of this! > > Is there a way to get a raw identifier here? getIdentifierInfo asserts > on that as well as annotations, which is why I ask. We may want a > comment here explaining why we break as well. > AFAICT, we cannot get a raw identifier here. Personally, I don't think a comment is needed because annotation tokens are obviously not identifier-like. > > ~Aaron > > > - > > IdentifierInfo *AttrName = Tok.getIdentifierInfo(); > > + if (!AttrName) > > + break; > > + > > SourceLocation AttrNameLoc = ConsumeToken(); > > > > if (Tok.isNot(tok::l_paren)) { > > > > Modified: cfe/trunk/test/Parser/cxx-attributes.cpp > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/cxx-attributes.cpp?rev=225118&r1=225117&r2=225118&view=diff > > > ============================================================================== > > --- cfe/trunk/test/Parser/cxx-attributes.cpp (original) > > +++ cfe/trunk/test/Parser/cxx-attributes.cpp Sat Jan 3 13:41:00 2015 > > @@ -21,4 +21,4 @@ namespace PR17666 { > > typedef int __attribute__((aligned(int))) T2; // expected-error > {{expected '(' for function-style cast}} > > } > > > > -__attribute((typename)) int x; // expected-error {{expected ')'}} > > +__attribute((typename)) int x; // expected-warning {{unknown attribute > 'typename' ignored}} > > > > Modified: cfe/trunk/test/Parser/namespace-alias-attr.cpp > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/namespace-alias-attr.cpp?rev=225118&r1=225117&r2=225118&view=diff > > > ============================================================================== > > --- cfe/trunk/test/Parser/namespace-alias-attr.cpp (original) > > +++ cfe/trunk/test/Parser/namespace-alias-attr.cpp Sat Jan 3 13:41:00 > 2015 > > @@ -4,5 +4,5 @@ namespace A > > { > > } > > > > -namespace B __attribute__ (( const )) = A; // > expected-error{{attributes cannot be specified on namespace alias}} > > +namespace B __attribute__ (( static )) = A; // > expected-error{{attributes cannot be specified on namespace alias}} > > > > > > > > _______________________________________________ > > cfe-commits mailing list > > [email protected] > > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
