]> granicus.if.org Git - clang/commitdiff
Allow multiple __declspec attributes after a class-key.
authorJohn McCall <rjmccall@apple.com>
Thu, 5 Aug 2010 17:13:11 +0000 (17:13 +0000)
committerJohn McCall <rjmccall@apple.com>
Thu, 5 Aug 2010 17:13:11 +0000 (17:13 +0000)
Patch by Francois Pichet!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110344 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Parse/ParseDeclCXX.cpp
test/Parser/MicrosoftExtensions.c

index bd8c245f5591896d3688ccffda792cff2318fa6d..55e677dbaaeb54ffd987bc82f211e9332ad712c5 100644 (file)
@@ -646,7 +646,7 @@ void Parser::ParseClassSpecifier(tok::TokenKind TagTokKind,
     AttrList = ParseGNUAttributes();
 
   // If declspecs exist after tag, parse them.
-  if (Tok.is(tok::kw___declspec))
+  while (Tok.is(tok::kw___declspec))
     AttrList = ParseMicrosoftDeclSpec(AttrList);
 
   // If C++0x attributes exist here, parse them.
index 7b6e60faa498e973cb1dfd93c04b8e3fde21b155..ec272cdf9c800afb7fe0eafe86def59b3175fab7 100644 (file)
@@ -3,6 +3,7 @@ __stdcall int func0();
 int __stdcall func();
 typedef int (__cdecl *tptr)();
 void (*__fastcall fastpfunc)();
+struct __declspec(uuid("00000000-0000-0000-C000-000000000046")) __declspec(novtable) IUnknown {};
 extern __declspec(dllimport) void __stdcall VarR4FromDec();
 __declspec(deprecated) __declspec(deprecated) char * __cdecl ltoa( long _Val, char * _DstBuf, int _Radix);
 __declspec(noalias) __declspec(restrict) void * __cdecl xxx( void * _Memory );