diff options
| author | Douglas Gregor <dgregor@apple.com> | 2015-07-07 03:58:42 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2015-07-07 03:58:42 +0000 |
| commit | ab209d83be5dadff4f17364a71f323b89e3c63f8 (patch) | |
| tree | 5e97315685c9476095deef062e53e98e525d78e5 /clang/test/CodeGenObjCXX | |
| parent | 10dc9d80cbb47675be0c6ea8481e12ec197e1637 (diff) | |
| download | bcm5719-llvm-ab209d83be5dadff4f17364a71f323b89e3c63f8.tar.gz bcm5719-llvm-ab209d83be5dadff4f17364a71f323b89e3c63f8.zip | |
Implement the Objective-C __kindof type qualifier.
The __kindof type qualifier can be applied to Objective-C object
(pointer) types to indicate id-like behavior, which includes implicit
"downcasting" of __kindof types to subclasses and id-like message-send
behavior. __kindof types provide better type bounds for substitutions
into unspecified generic types, which preserves more type information.
llvm-svn: 241548
Diffstat (limited to 'clang/test/CodeGenObjCXX')
| -rw-r--r-- | clang/test/CodeGenObjCXX/mangle.mm | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/clang/test/CodeGenObjCXX/mangle.mm b/clang/test/CodeGenObjCXX/mangle.mm index 5b944caf1f4..bcb920ba1e9 100644 --- a/clang/test/CodeGenObjCXX/mangle.mm +++ b/clang/test/CodeGenObjCXX/mangle.mm @@ -98,3 +98,18 @@ template<> void X<A*>::f() {} // CHECK-LABEL: define void @_ZN1XIP1AE1fEv template<> void X<A<P>*>::f() {} // CHECK-LABEL: define void @_ZN1XIPU11objcproto1P1AE1fEv + +// CHECK-LABEL: define void @_Z12kindof_test2PU8__kindof5Test2 +void kindof_test2(__kindof Test2 *t2) { } + +@interface Parameterized<T, U> : A +@end + +// CHECK-LABEL: define void @_Z19parameterized_test1P13ParameterizedIP1AP4TestE +void parameterized_test1(Parameterized<A *, Test *> *p) {} + +// CHECK-LABEL: define void @_Z19parameterized_test2PU8__kindof13ParameterizedIP1AP4TestE +void parameterized_test2(__kindof Parameterized<A *, Test *> *p) {} + +// CHECK-LABEL: define void @_Z19parameterized_test3P13Parameterized +void parameterized_test3(Parameterized *p) {} |

