Weird constructs like __attribute__((inline)) or
__attibute__((typename)) should result in warnings, not errors.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@225118
91177308-0d34-0410-b5e6-
96231b3b80d8
continue;
// Expect an identifier or declaration specifier (const, int, etc.)
- if (Tok.isNot(tok::identifier) && !isTypeQualifier() &&
- !isKnownToBeTypeSpecifier(Tok))
+ if (Tok.isAnnotation())
break;
-
IdentifierInfo *AttrName = Tok.getIdentifierInfo();
+ if (!AttrName)
+ break;
+
SourceLocation AttrNameLoc = ConsumeToken();
if (Tok.isNot(tok::l_paren)) {
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}}
{
}
-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}}