// RUN: %clang_cc1 -fsyntax-only -verify -fms-extensions %s // expected-no-diagnostics typedef long HRESULT; typedef unsigned long ULONG; typedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4[8]; } GUID; typedef GUID IID; // remove stdcall, since the warnings have nothing to do with // what is being tested. #define __stdcall extern "C" { extern "C++" { struct __declspec(uuid("00000000-0000-0000-C000-000000000046")) IUnknown { public: virtual HRESULT __stdcall QueryInterface( const IID &riid, void **ppvObject) = 0; virtual ULONG __stdcall AddRef(void) = 0; virtual ULONG __stdcall Release(void) = 0; template HRESULT __stdcall QueryInterface(Q **pp) { return QueryInterface(__uuidof(Q), (void **)pp); } }; } } __interface ISfFileIOPropertyPage : public IUnknown{};