brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · ecfb9c0 Raw
99 lines · plain
1// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,debug.ExprInspection -verify -Wno-objc-root-class %s2// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,debug.ExprInspection -verify -Wno-objc-root-class -fobjc-arc %s3 4void clang_analyzer_eval(bool);5void clang_analyzer_checkInlined(bool);6 7@interface IntWrapper8@property (readonly) int &value;9@end10 11@implementation IntWrapper12@synthesize value;13@end14 15void testReferenceConsistency(IntWrapper *w) {16  clang_analyzer_eval(w.value == w.value); // expected-warning{{TRUE}}17  clang_analyzer_eval(&w.value == &w.value); // expected-warning{{TRUE}}18 19  if (w.value != 42)20    return;21 22  clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}}23}24 25void testReferenceAssignment(IntWrapper *w) {26  w.value = 42;27  clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}}28}29 30 31struct IntWrapperStruct {32  int value;33};34 35@interface StructWrapper36@property IntWrapperStruct inner;37@end38 39@implementation StructWrapper40@synthesize inner;41@end42 43void testConsistencyStruct(StructWrapper *w) {44  clang_analyzer_eval(w.inner.value == w.inner.value); // expected-warning{{TRUE}}45 46  int origValue = w.inner.value;47  if (origValue != 42)48    return;49 50  clang_analyzer_eval(w.inner.value == 42); // expected-warning{{TRUE}}51}52 53 54class CustomCopy {55public:56  CustomCopy() : value(0) {}57  CustomCopy(const CustomCopy &other) : value(other.value) {58    clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}59  }60  int value;61};62 63@interface CustomCopyWrapper64@property CustomCopy inner;65@end66 67@implementation CustomCopyWrapper68//@synthesize inner;69@end70 71void testConsistencyCustomCopy(CustomCopyWrapper *w) {72  clang_analyzer_eval(w.inner.value == w.inner.value); // expected-warning{{TRUE}}73 74  int origValue = w.inner.value;75  if (origValue != 42)76    return;77 78  clang_analyzer_eval(w.inner.value == 42); // expected-warning{{TRUE}}79}80 81@protocol NoDirectPropertyDecl82@property IntWrapperStruct inner;83@end84@interface NoDirectPropertyDecl <NoDirectPropertyDecl>85@end86@implementation NoDirectPropertyDecl87@synthesize inner;88@end89 90void testNoDirectPropertyDecl(NoDirectPropertyDecl *w) {91  clang_analyzer_eval(w.inner.value == w.inner.value); // expected-warning{{TRUE}}92 93  int origValue = w.inner.value;94  if (origValue != 42)95    return;96 97  clang_analyzer_eval(w.inner.value == 42); // expected-warning{{TRUE}}98}99