26 lines
		
	
	
		
			668 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			668 B
		
	
	
	
		
			C++
		
	
	
	
// RUN: %clang_cc1 -x c++-module-map -fmodule-name=A -verify %s -fmodules-local-submodule-visibility
 | 
						|
module A { module B {} module C {} }
 | 
						|
 | 
						|
#pragma clang module contents
 | 
						|
 | 
						|
#pragma clang module begin A.B
 | 
						|
extern "C++" {
 | 
						|
  #pragma clang module begin A.C
 | 
						|
  template<typename T> void f(T t);
 | 
						|
  #pragma clang module end
 | 
						|
 | 
						|
  void g() { f(0); } // ok
 | 
						|
}
 | 
						|
 | 
						|
extern "C++" {
 | 
						|
  #pragma clang module begin A.C
 | 
						|
  } // expected-error {{extraneous closing brace}}
 | 
						|
  #pragma clang module end
 | 
						|
  
 | 
						|
  #pragma clang module begin A.C
 | 
						|
  extern "C++" { // expected-note {{to match this '{'}}
 | 
						|
  #pragma clang module end // expected-error {{expected '}' at end of module}}
 | 
						|
}
 | 
						|
 | 
						|
#pragma clang module end
 |