From 222e2a7620e6520ffaf4fc4e69d79c18da31542e Mon Sep 17 00:00:00 2001 From: "Zancanaro; Carlo" Date: Mon, 24 Sep 2012 09:58:17 +1000 Subject: Add the clang library to the repo (with some of my changes, too). --- clang/test/SemaObjCXX/references.mm | 62 +++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 clang/test/SemaObjCXX/references.mm (limited to 'clang/test/SemaObjCXX/references.mm') diff --git a/clang/test/SemaObjCXX/references.mm b/clang/test/SemaObjCXX/references.mm new file mode 100644 index 0000000..3a52200 --- /dev/null +++ b/clang/test/SemaObjCXX/references.mm @@ -0,0 +1,62 @@ +// RUN: %clang_cc1 -verify -emit-llvm -o - %s + +// Test reference binding. + +typedef struct { + int f0; + int f1; +} T; + +@interface A +@property (assign) T p0; +@property (assign) T& p1; +@end + +int f0(const T& t) { + return t.f0; +} + +int f1(A *a) { + return f0(a.p0); +} + +int f2(A *a) { + return f0(a.p1); +} + +// PR7740 +@class NSString; + +void f3(id); +void f4(NSString &tmpstr) { + f3(&tmpstr); +} + +// PR7741 +@protocol P1 @end +@protocol P2 @end +@protocol P3 @end +@interface foo {} @end +@interface bar : foo {} @end +typedef bar baz; + +struct ToBar { + operator bar&() const; +}; + +void f5(foo&); +void f5b(foo&); +void f5c(foo&); +void f5d(foo&); +void f6(baz* x) { + f5(*x); + f5b(*x); + f5c(*x); + f5d(*x); + (void)((foo&)*x); + f5(ToBar()); + f5b(ToBar()); + f5c(ToBar()); + f5d(ToBar()); + (void)((foo&)ToBar()); +} -- cgit v1.2.3