1 | // RUN: %clang_cc1 -triple=i686-apple-darwin9 -emit-llvm -o %t %s |
2 | // RUN: grep -e "T@\\\22<X>\\\22" %t |
3 | // RUN: grep -e "T@\\\22<X><Y>\\\22" %t |
4 | // RUN: grep -e "T@\\\22<X><Y><Z>\\\22" %t |
5 | // RUN: grep -e "T@\\\22Foo<X><Y><Z>\\\22" %t |
6 | |
7 | @protocol X, Y, Z; |
8 | @class Foo; |
9 | |
10 | @protocol Proto |
11 | @property (copy) id <X> x; |
12 | @property (copy) id <X, Y> xy; |
13 | @property (copy) id <X, Y, Z> xyz; |
14 | @property(copy) Foo <X, Y, Z> *fooxyz; |
15 | @end |
16 | |
17 | @interface Intf <Proto> |
18 | { |
19 | id <X> IVAR_x; |
20 | id <X, Y> IVAR_xy; |
21 | id <X, Y, Z> IVAR_xyz; |
22 | Foo <X, Y, Z> *IVAR_Fooxyz; |
23 | } |
24 | @end |
25 | |
26 | @implementation Intf |
27 | @dynamic x, xy, xyz, fooxyz; |
28 | @end |
29 | |
30 | /** |
31 | This protocol should generate the following metadata: |
32 | struct objc_property_list __Protocol_Test_metadata = { |
33 | sizeof(struct objc_property), 4, |
34 | { |
35 | { "x", "T@\"<X>\"" }, |
36 | { "xy", "T@\"<X><Y>\"" }, |
37 | { "xyz", "T@\"<X><Y><Z>\"" }, |
38 | { "fooxyz", "T@\"Foo<X><Y><Z>\"" } |
39 | } |
40 | }; |
41 | |
42 | "T@\"<X><Y><Z>\",D |
43 | */ |
44 | |