summaryrefslogtreecommitdiff
path: root/test/SemaObjCXX
diff options
context:
space:
mode:
authorErik Pilkington <erik.pilkington@gmail.com>2017-05-10 17:18:56 +0000
committerErik Pilkington <erik.pilkington@gmail.com>2017-05-10 17:18:56 +0000
commit0302d8dabe6bc7b90d70126a2e8b07cce4733e85 (patch)
tree7d1062c964a2308c641f22c2ca211d6d04733ed9 /test/SemaObjCXX
parent91d84ed65dd3629b4536cf393850ecfdfd3f1be5 (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.mm25
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), "");