// RUN: %clang_analyze_cc1 -std=c++14 -analyzer-checker core,cplusplus -verify %s // expected-no-diagnostics #define nil ((id)0) // 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 testArgumentRegionInvalidation(Foo *f) { IntPtr ptr; int *i = ptr.i; [f foo: static_cast<IntPtr &&>(ptr)]; *i = 99; // no-warning } void testNilReceiverCleanup() { [nil foo: IntPtr()]; }