// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s
// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks   -analyzer-opt-analyze-nested-blocks %s
// expected-no-diagnostics

//===------------------------------------------------------------------------------------------===//
// This files tests our path-sensitive handling of Objective-c++ files.
//===------------------------------------------------------------------------------------------===//

// Test basic handling of references.
char &test1_aux();
char *test1() {
  return &test1_aux();
}

// Test test1_aux() evaluates to char &.
char test1_as_rvalue() {
  return test1_aux();
}

// Test basic handling of references with Objective-C classes.
@interface Test1
- (char&) foo;
@end

char* Test1_harness(Test1 *p) {
  return &[p foo];
}

char Test1_harness_b(Test1 *p) {
  return [p foo];
}

// Basic test of C++ references with Objective-C pointers.
@interface RDar10569024
@property(readonly) int x;
@end

typedef RDar10569024* RDar10569024Ref;

void rdar10569024_aux(RDar10569024Ref o);

int rdar10569024(id p, id collection) {
  for (id elem in collection) {
    const RDar10569024Ref &o = (RDar10569024Ref) elem;
    rdar10569024_aux(o); // no-warning
    return o.x; // no-warning
  }
  return 0;
}
