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