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