diff options
Diffstat (limited to 'test/Analysis/reference.cpp')
-rw-r--r-- | test/Analysis/reference.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/test/Analysis/reference.cpp b/test/Analysis/reference.cpp index ce0ee8ed57..ed05720fe6 100644 --- a/test/Analysis/reference.cpp +++ b/test/Analysis/reference.cpp @@ -135,6 +135,20 @@ void testFunctionPointerReturn(void *opaque) { clang_analyzer_eval(x == 42); // expected-warning{{TRUE}} } +int &testReturnNullReference() { + int *x = 0; + return *x; // expected-warning{{Returning null reference}} +} + +char &refFromPointer() { + return *ptr(); +} + +void testReturnReference() { + clang_analyzer_eval(ptr() == 0); // expected-warning{{UNKNOWN}} + clang_analyzer_eval(&refFromPointer() == 0); // expected-warning{{FALSE}} +} + // ------------------------------------ // False negatives @@ -147,9 +161,4 @@ namespace rdar11212286 { B *x = 0; return *x; // should warn here! } - - B &testRef() { - B *x = 0; - return *x; // should warn here! - } } |