forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
| // RUN: %clang_analyze_cc1 -fblocks -analyzer-checker=core \
 | |
| // RUN:   -analyzer-checker=nullability.NullPassedToNonnull \
 | |
| // RUN:   -analyzer-checker=nullability.NullReturnedFromNonnull \
 | |
| // RUN:   -analyzer-checker=nullability.NullablePassedToNonnull \
 | |
| // RUN:   -analyzer-checker=nullability.NullableReturnedFromNonnull \
 | |
| // RUN:   -analyzer-checker=nullability.NullableDereferenced \
 | |
| // RUN:   -analyzer-checker=debug.ExprInspection \
 | |
| // RUN:   -analyzer-output=text -verify %s
 | |
| // RUN: %clang_analyze_cc1 -fblocks -analyzer-checker=core \
 | |
| // RUN:   -analyzer-checker=nullability.NullPassedToNonnull \
 | |
| // RUN:   -analyzer-checker=nullability.NullReturnedFromNonnull \
 | |
| // RUN:   -analyzer-checker=nullability.NullablePassedToNonnull \
 | |
| // RUN:   -analyzer-checker=nullability.NullableReturnedFromNonnull \
 | |
| // RUN:   -analyzer-checker=nullability.NullableDereferenced \
 | |
| // RUN:   -analyzer-output=plist -o %t.plist %s
 | |
| // RUN: %normalize_plist <%t.plist \
 | |
| // RUN:   | diff -ub %S/Inputs/expected-plists/nullability-notes.m.plist -
 | |
| 
 | |
| void clang_analyzer_warnOnDeadSymbol(id);
 | |
| 
 | |
| #include "Inputs/system-header-simulator-for-nullability.h"
 | |
| 
 | |
| void takesNonnull(NSObject *_Nonnull y);
 | |
| 
 | |
| @interface ClassWithProperties: NSObject
 | |
| @property(copy, nullable) NSObject *x; // plist check ensures no control flow piece from here to 'self.x'.
 | |
| -(void) method;
 | |
| @end;
 | |
| @implementation ClassWithProperties
 | |
| -(void) method {
 | |
|   clang_analyzer_warnOnDeadSymbol(self);
 | |
|   // no-crash
 | |
|   NSObject *x = self.x; // expected-note{{Nullability 'nullable' is inferred}}
 | |
|                         // expected-warning@-1{{SYMBOL DEAD}}
 | |
|                         // expected-note@-2   {{SYMBOL DEAD}}
 | |
|   takesNonnull(x); // expected-warning{{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
 | |
|                    // expected-note@-1{{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
 | |
| }
 | |
| @end
 | |
| 
 |