// 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 | |
} |