diff options
Diffstat (limited to 'clang/test/CodeGenObjCXX/property-dot-copy.mm')
-rw-r--r-- | clang/test/CodeGenObjCXX/property-dot-copy.mm | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/clang/test/CodeGenObjCXX/property-dot-copy.mm b/clang/test/CodeGenObjCXX/property-dot-copy.mm new file mode 100644 index 0000000..c0ff258 --- /dev/null +++ b/clang/test/CodeGenObjCXX/property-dot-copy.mm @@ -0,0 +1,68 @@ +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s +// rdar://8427922 + +struct Vector3D +{ + float x, y, z; + Vector3D(); + Vector3D(const Vector3D &inVector); + Vector3D(float initX, float initY, float initZ); + Vector3D &operator=(const Vector3D & rhs); +}; + +@interface Object3D +{ + Vector3D position; + Vector3D length; +} +@property (assign) Vector3D position; +- (Vector3D) length; +- (void) setLength: (Vector3D)arg; +@end + +int main () +{ + Object3D *myObject; + Vector3D V3D(1.0f, 1.0f, 1.0f); +// CHECK: call void @_ZN8Vector3DC1ERKS_ + myObject.position = V3D; + +// CHECK: call void @_ZN8Vector3DC1ERKS_ + myObject.length = V3D; + + return 0; +} + +// rdar: // 8437253 +extern "C" void exit(...); + +struct CGPoint { + float x; + float y; +}; +typedef struct CGPoint CGPoint; + +extern "C" const CGPoint CGPointZero; + +bool operator==(const CGPoint& a, const CGPoint& b); + +@interface TIconViewSettings +@property (assign, nonatomic) CGPoint gridOffset; +@end + +@implementation TIconViewSettings +- (CGPoint) gridOffset +{ + return CGPointZero; +} + +- (void) foo +{ + if ((self.gridOffset) == CGPointZero) + exit(1); + + if (self.gridOffset == CGPointZero) + exit(1); +} +@end + |