blob: 3b6166db6e303cb4c93a96bf1929c11a99dbcc81 [file] [log] [blame]
// RUN: %clang_analyze_cc1 -analyzer-checker core,cplusplus -verify %s
// expected-no-diagnostics
// Stripped down unique_ptr<int>
struct IntPtr {
IntPtr(): i(new int) {}
IntPtr(IntPtr &&o): i(o.i) { o.i = nullptr; }
~IntPtr() { delete i; }
int *i;
};
@interface Foo {}
-(void) foo: (IntPtr)arg;
@end
void bar(Foo *f) {
IntPtr ptr;
int *i = ptr.i;
[f foo: static_cast<IntPtr &&>(ptr)];
*i = 99; // no-warning
}