forked from OSchip/llvm-project
42 lines
734 B
Plaintext
42 lines
734 B
Plaintext
// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -fobjc-arc -cfg-add-implicit-dtors -Wno-null-dereference -verify %s
|
|
|
|
void clang_analyzer_eval(bool);
|
|
|
|
struct Wrapper {
|
|
__strong id obj;
|
|
};
|
|
|
|
void test() {
|
|
Wrapper w;
|
|
// force a diagnostic
|
|
*(char *)0 = 1; // expected-warning{{Dereference of null pointer}}
|
|
}
|
|
|
|
|
|
struct IntWrapper {
|
|
int x;
|
|
};
|
|
|
|
void testCopyConstructor() {
|
|
IntWrapper a;
|
|
a.x = 42;
|
|
|
|
IntWrapper b(a);
|
|
clang_analyzer_eval(b.x == 42); // expected-warning{{TRUE}}
|
|
}
|
|
|
|
struct NonPODIntWrapper {
|
|
int x;
|
|
|
|
virtual int get();
|
|
};
|
|
|
|
void testNonPODCopyConstructor() {
|
|
NonPODIntWrapper a;
|
|
a.x = 42;
|
|
|
|
NonPODIntWrapper b(a);
|
|
clang_analyzer_eval(b.x == 42); // expected-warning{{TRUE}}
|
|
}
|
|
|