forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
// RUN: %clang_cc1 -fsyntax-only -triple i686-pc-win32 -verify %s
 | 
						|
// PR14993
 | 
						|
 | 
						|
namespace test1 {
 | 
						|
  inline void f();  // expected-warning{{inline function 'test1::f' is not defined}}
 | 
						|
  void test() { f(); }  // expected-note{{used here}}
 | 
						|
}
 | 
						|
 | 
						|
namespace test2 {
 | 
						|
  inline int f();
 | 
						|
  void test() { (void)sizeof(f()); }
 | 
						|
}
 | 
						|
 | 
						|
namespace test3 {
 | 
						|
  void f();  // expected-warning{{inline function 'test3::f' is not defined}}
 | 
						|
  inline void f();
 | 
						|
  void test() { f(); }  // expected-note{{used here}}
 | 
						|
}
 | 
						|
 | 
						|
namespace test4 {
 | 
						|
  inline void error_on_zero(int);    // expected-warning{{inline function 'test4::error_on_zero' is not defined}}
 | 
						|
  inline void error_on_zero(char*) {}
 | 
						|
  void test() { error_on_zero(0); }  // expected-note{{used here}}
 | 
						|
}
 | 
						|
 | 
						|
namespace test5 {
 | 
						|
  struct X { void f(); };
 | 
						|
  void test(X &x) { x.f(); }
 | 
						|
}
 | 
						|
 | 
						|
namespace test6 {
 | 
						|
  struct X { inline void f(); };  // expected-warning{{inline function 'test6::X::f' is not defined}}
 | 
						|
  void test(X &x) { x.f(); }  // expected-note{{used here}}
 | 
						|
}
 | 
						|
 | 
						|
namespace test7 {
 | 
						|
  void f();  // expected-warning{{inline function 'test7::f' is not defined}}
 | 
						|
  void test() { f(); } // no used-here note.
 | 
						|
  inline void f();
 | 
						|
}
 | 
						|
 | 
						|
namespace test8 {
 | 
						|
  inline void foo() __attribute__((gnu_inline));
 | 
						|
  void test() { foo(); }
 | 
						|
}
 | 
						|
 | 
						|
namespace test9 {
 | 
						|
  void foo();
 | 
						|
  void test() { foo(); }
 | 
						|
  inline void foo() __attribute__((gnu_inline));
 | 
						|
}
 | 
						|
 | 
						|
namespace test10 {
 | 
						|
  inline void foo();
 | 
						|
  void test() { foo(); }
 | 
						|
  inline void foo() __attribute__((gnu_inline));
 | 
						|
}
 | 
						|
 | 
						|
namespace test11 {
 | 
						|
  inline void foo() __attribute__((dllexport));
 | 
						|
  inline void bar() __attribute__((dllimport));
 | 
						|
  void test() { foo(); bar(); }
 | 
						|
}
 |