// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.SuperDealloc,debug.ExprInspection -analyzer-output=text -verify %s
void ;
typedef unsigned long NSUInteger;
typedef struct objc_selector *SEL;
//===------------------------------------------------------------------------===
// <rdar://problem/6953275>
// Check that 'self' is not referenced after calling '[super dealloc]'.
;
;
static void
//===------------------------------------------------------------------------===
// Warn about calling [super dealloc] twice due to missing return statement.
//===------------------------------------------------------------------------===
// Warn about calling [super dealloc] twice in two different methods.
//===------------------------------------------------------------------------===
// Do not warn about calling [super dealloc] recursively for different objects
// of the same type with custom retain counting.
//
// A class that contains an ivar of itself with custom retain counting (such
// as provided by _OBJC_SUPPORTED_INLINE_REFCNT_WITH_DEALLOC2MAIN) can generate
// a false positive that [super dealloc] is called twice if each object instance
// is not tracked separately by the checker. This test case is just a simple
// approximation to trigger the false positive.
@class ClassWithOwnIvarInstanceClass;
//===------------------------------------------------------------------------===
// Do not warn about calling [super dealloc] twice if +dealloc is a class
// method.
//===------------------------------------------------------------------------===
// Do not warn about calling [super dealloc] twice if when the analyzer has
// inlined the call to its super deallocator.
//===------------------------------------------------------------------------===
// Treat calling [super dealloc] twice as as a sink.
//===------------------------------------------------------------------------===
// Test path notes with intervening method call on self.