1cc4ec6daSChuanqi Xu// RUN: rm -rf %t 2cc4ec6daSChuanqi Xu// RUN: mkdir %t 3cc4ec6daSChuanqi Xu// RUN: split-file %s %t 4cc4ec6daSChuanqi Xu// 5cc4ec6daSChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/mod1.cppm -emit-module-interface -o %t/mod1.pcm 6cc4ec6daSChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/mod2.cppm -emit-module-interface -o %t/mod2.pcm 7cc4ec6daSChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/test.cc -fprebuilt-module-path=%t -fsyntax-only -verify 8cc4ec6daSChuanqi Xu 9cc4ec6daSChuanqi Xu//--- mod1.cppm 10cc4ec6daSChuanqi Xuexport module mod1; 11cc4ec6daSChuanqi Xuexport int v; 12cc4ec6daSChuanqi Xuexport void func(); 13cc4ec6daSChuanqi Xuexport class A {}; 14cc4ec6daSChuanqi Xuexport template <class C> 15cc4ec6daSChuanqi Xustruct S {}; 16cc4ec6daSChuanqi Xu 17cc4ec6daSChuanqi Xu//--- mod2.cppm 18cc4ec6daSChuanqi Xuexport module mod2; 19cc4ec6daSChuanqi Xuexport int v; 20cc4ec6daSChuanqi Xuexport void func(); 21cc4ec6daSChuanqi Xuexport class A; 22cc4ec6daSChuanqi Xuexport template <class C> 23cc4ec6daSChuanqi Xustruct S {}; 24cc4ec6daSChuanqi Xu 25cc4ec6daSChuanqi Xu//--- test.cc 26cc4ec6daSChuanqi Xuimport mod1; 27cc4ec6daSChuanqi Xuimport mod2; 28cc4ec6daSChuanqi Xuvoid test() { 29cc4ec6daSChuanqi Xu int value = v; 30cc4ec6daSChuanqi Xu func(); 31cc4ec6daSChuanqi Xu A a; 32cc4ec6daSChuanqi Xu S<int> s; 33cc4ec6daSChuanqi Xu} 34cc4ec6daSChuanqi Xu 35*e44c28f0SKrzysztof Parzyszek// expected-error@mod1.cppm:* {{declaration 'v' attached to named module 'mod1' cannot be attached to other modules}} 36cc4ec6daSChuanqi Xu// expected-note@mod2.cppm:* {{}} 37*e44c28f0SKrzysztof Parzyszek// expected-error@mod1.cppm:* {{declaration 'func' attached to named module 'mod1' cannot be attached to other modules}} 38cc4ec6daSChuanqi Xu// expected-note@mod2.cppm:* {{}} 39*e44c28f0SKrzysztof Parzyszek// expected-error@mod1.cppm:* {{declaration 'A' attached to named module 'mod1' cannot be attached to other modules}} 40cc4ec6daSChuanqi Xu// expected-note@mod2.cppm:* {{}} 41*e44c28f0SKrzysztof Parzyszek// expected-error@mod1.cppm:* 1+{{declaration 'S' attached to named module 'mod1' cannot be attached to other modules}} 42cc4ec6daSChuanqi Xu// expected-note@mod2.cppm:* 1+{{}} 43