summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/ms-iunknown.cpp
Commit message (Collapse)AuthorAgeFilesLines
* [Sema] Correct IUnknown to support Unknwnbase.h Header.Erich Keane2017-09-291-4/+15
| | | | | | | | | | | | | | Apparently, the MSVC SDK has a strange implementation that causes a number of implicit functions as well as a template member function of the IUnknown type. This patch allows these as InterfaceLike types as well. Additionally, it corrects the behavior where extern-C++ wrapped around an Interface-Like type would permit an interface-like type to exist in a namespace. Differential Revision: https://reviews.llvm.org/D38303 llvm-svn: 314557
* Allow IUnknown/IInterface types to come from extern C++ Erich Keane2017-09-261-1/+1
| | | | | | | | | | | | It was brought up in response to my last implementation for this struct-as-interface features that at least 1 header in the MS SDK uses "extern C++" around an IUnknown declaration. The previous implementation demanded that this type exist in the TranslationUnit DeclContext. This small change simply also allows in the situation where we're extern "C++". llvm-svn: 314235
* Fix the __interface inheritence rules to work better with IUnknown and IDispatchErich Keane2017-09-151-0/+39
__interface objects in MSVC are permitted to inherit from __interface types, and interface-like types. Additionally, there are two default interface-like types (IUnknown and IDispatch) that all interface-like types must inherit from. Differential Revision: https://reviews.llvm.org/D37308 llvm-svn: 313364
OpenPOWER on IntegriCloud