forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			18 lines
		
	
	
		
			816 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			18 lines
		
	
	
		
			816 B
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -Wthread-safety -verify %s
 | |
| 
 | |
| class __attribute__((shared_capability("mutex"))) Mutex {
 | |
|  public:
 | |
|   void func1() __attribute__((assert_capability(this)));
 | |
|   void func2() __attribute__((assert_capability(!this)));
 | |
| 
 | |
|   const Mutex& operator!() const { return *this; }
 | |
| };
 | |
| 
 | |
| class NotACapability {
 | |
|  public:
 | |
|   void func1() __attribute__((assert_capability(this)));  // expected-warning {{'assert_capability' attribute requires arguments whose type is annotated with 'capability' attribute; type here is 'NotACapability *'}}
 | |
|   void func2() __attribute__((assert_capability(!this)));  // expected-warning {{'assert_capability' attribute requires arguments whose type is annotated with 'capability' attribute; type here is 'bool'}}
 | |
| 
 | |
|   const NotACapability& operator!() const { return *this; }
 | |
| };
 |