diff options
author | Erik Pilkington <erik.pilkington@gmail.com> | 2017-05-10 17:18:56 +0000 |
---|---|---|
committer | Erik Pilkington <erik.pilkington@gmail.com> | 2017-05-10 17:18:56 +0000 |
commit | 0302d8dabe6bc7b90d70126a2e8b07cce4733e85 (patch) | |
tree | 7d1062c964a2308c641f22c2ca211d6d04733ed9 /test/SemaObjCXX | |
parent | 91d84ed65dd3629b4536cf393850ecfdfd3f1be5 (diff) |
[Sema] Objective-C++ support for type trait __is_base_of
rdar://24308607
Differential revision: https://reviews.llvm.org/D32891
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@302695 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaObjCXX')
-rw-r--r-- | test/SemaObjCXX/is-base-of.mm | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/SemaObjCXX/is-base-of.mm b/test/SemaObjCXX/is-base-of.mm new file mode 100644 index 0000000000..9cf16661b0 --- /dev/null +++ b/test/SemaObjCXX/is-base-of.mm @@ -0,0 +1,25 @@ +// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s + +@interface NSObj +@end + +@interface NSChild : NSObj +@end + +static_assert(__is_base_of(NSObj, NSChild), ""); +static_assert(!__is_base_of(NSChild, NSObj), ""); + +static_assert(__is_base_of(NSObj, NSObj), ""); + +static_assert(!__is_base_of(NSObj *, NSChild *), ""); +static_assert(!__is_base_of(NSChild *, NSObj *), ""); + +static_assert(__is_base_of(const volatile NSObj, NSChild), ""); +static_assert(__is_base_of(NSObj, const volatile NSChild), ""); + +@class NSForward; // expected-note{{forward declaration of class}} + +static_assert(!__is_base_of(NSForward, NSObj), ""); +static_assert(!__is_base_of(NSObj, NSForward), ""); // expected-error{{incomplete type 'NSForward'}} + +static_assert(!__is_base_of(id, NSObj), ""); |