return;
}
+ // If attributes exist after the declarator, but before an '{', parse them.
+ if (Tok.is(tok::kw___attribute)) {
+ SourceLocation Loc;
+ AttributeList *AttrList = ParseGNUAttributes(&Loc);
+ DeclaratorInfo.AddAttributes(AttrList, Loc);
+ }
+
// function-definition:
if (Tok.is(tok::l_brace)
|| (DeclaratorInfo.isFunctionDeclarator() &&
// rdar://6096491
void __attribute__((noreturn)) d0(void), __attribute__((noreturn)) d1(void);
+void d2(void) __attribute__((noreturn)), d3(void) __attribute__((noreturn));
--- /dev/null
+// RUN: clang-cc -fsyntax-only -verify %s\r
+\r
+class c {\r
+ virtual void f1(const char* a, ...)\r
+ __attribute__ (( __format__(__printf__,2,3) )) = 0;\r
+ virtual void f2(const char* a, ...)\r
+ __attribute__ (( __format__(__printf__,2,3) )) {}\r
+};\r
+\r