brintos

brintos / llvm-project-archived public Read only

0
0
Text · 551 B · 44d30d5 Raw
30 lines · plain
1// RUN: %clang_analyze_cc1 -std=c++14 -analyzer-checker core,cplusplus -verify %s2 3// expected-no-diagnostics4 5#define nil ((id)0)6 7// Stripped down unique_ptr<int>8struct IntPtr {9  IntPtr(): i(new int) {}10  IntPtr(IntPtr &&o): i(o.i) { o.i = nullptr; }11  ~IntPtr() { delete i; }12 13  int *i;14};15 16@interface Foo {}17  -(void) foo: (IntPtr)arg;18@end19 20void testArgumentRegionInvalidation(Foo *f) {21  IntPtr ptr;22  int *i = ptr.i;23  [f foo: static_cast<IntPtr &&>(ptr)];24  *i = 99; // no-warning25}26 27void testNilReceiverCleanup() {28  [nil foo: IntPtr()];29}30