24 lines
		
	
	
		
			858 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			858 B
		
	
	
	
		
			C++
		
	
	
	
	
	
// RUN: %clang_cc1 -fsyntax-only -verify %s
 | 
						|
 | 
						|
void f(int, ...) __attribute__((sentinel));
 | 
						|
 | 
						|
void g() {
 | 
						|
  f(1, 2, __null);
 | 
						|
}
 | 
						|
 | 
						|
typedef __typeof__(sizeof(int)) size_t;
 | 
						|
 | 
						|
struct S {
 | 
						|
  S(int,...) __attribute__((sentinel)); // expected-note {{marked sentinel}}
 | 
						|
  void a(int,...) __attribute__((sentinel)); // expected-note {{marked sentinel}}
 | 
						|
  void* operator new(size_t,...) __attribute__((sentinel)); // expected-note {{marked sentinel}}
 | 
						|
  void operator()(int,...) __attribute__((sentinel)); // expected-note {{marked sentinel}}
 | 
						|
};
 | 
						|
 | 
						|
void class_test() {
 | 
						|
  S s(1,2,3); // expected-warning {{missing sentinel in function call}}
 | 
						|
  S* s2 = new (1,2,3) S(1, __null); // expected-warning {{missing sentinel in function call}}
 | 
						|
  s2->a(1,2,3); // expected-warning {{missing sentinel in function call}}
 | 
						|
  s(1,2,3); // expected-warning {{missing sentinel in function call}}
 | 
						|
}
 |