teak-llvm/clang/test/Analysis/nullability-arc.mm
Artem Dergachev cf439eda2d Re-apply r347954 "[analyzer] Nullability: Don't detect post factum violation..."
Buildbot failures were caused by an unrelated UB that was introduced in r347943
and fixed in r347970.

Also the revision was incorrectly specified as r344580 during revert.

Differential Revision: https://reviews.llvm.org/D54017

llvm-svn: 348188
2018-12-03 21:04:30 +00:00

40 lines
994 B
Plaintext

// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,nullability\
// RUN: -analyzer-output=text -verify %s
// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,nullability\
// RUN: -analyzer-output=text -verify %s -fobjc-arc
#if !__has_feature(objc_arc)
// expected-no-diagnostics
#endif
#define nil ((id)0)
@interface Param
@end
@interface Base
- (void)foo:(Param *_Nonnull)param;
@end
@interface Derived : Base
@end
@implementation Derived
- (void)foo:(Param *)param {
// FIXME: Why do we not emit the warning under ARC?
[super foo:param];
#if __has_feature(objc_arc)
// expected-warning@-2{{nil passed to a callee that requires a non-null 1st parameter}}
// expected-note@-3 {{nil passed to a callee that requires a non-null 1st parameter}}
#endif
[self foo:nil];
#if __has_feature(objc_arc)
// expected-note@-2{{Calling 'foo:'}}
// expected-note@-3{{Passing nil object reference via 1st parameter 'param'}}
#endif
}
@end