forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -std=c++1z -fmodules %s -verify
 | |
| 
 | |
| #pragma clang module build baz
 | |
|   module baz {}
 | |
| #pragma clang module endbuild // baz
 | |
| 
 | |
| #pragma clang module build foo
 | |
|   module foo { module bar {} }
 | |
| #pragma clang module contents
 | |
|   #pragma clang module begin foo.bar
 | |
|   
 | |
|     // Can import baz here even though it was created in an outer build.
 | |
|     #pragma clang module import baz
 | |
|   
 | |
|     #pragma clang module build bar
 | |
|       module bar {}
 | |
|     #pragma clang module contents
 | |
|       #pragma clang module begin bar
 | |
|         extern int n;
 | |
|       #pragma clang module end
 | |
|     #pragma clang module endbuild // bar
 | |
|     
 | |
|     #pragma clang module import bar
 | |
|     
 | |
|     constexpr int *f() { return &n; }
 | |
|   
 | |
|   #pragma clang module end
 | |
| #pragma clang module endbuild // foo
 | |
| 
 | |
| #pragma clang module import bar
 | |
| #pragma clang module import foo.bar
 | |
| static_assert(f() == &n);
 | |
| 
 | |
| #pragma clang module build // expected-error {{expected module name}}
 | |
| #pragma clang module build unterminated // expected-error {{no matching '#pragma clang module endbuild'}}
 |