// RUN: rm -rf %t // RUN: split-file %s %t // RUN: %clang_cc1 -std=c++20 -verify %t/A.cppm // RUN: %clang_cc1 -std=c++20 -verify %t/B.cppm // RUN: %clang_cc1 -std=c++20 %t/C.cppm -emit-module-interface -o %t/C.pcm // RUN: %clang_cc1 -std=c++20 %t/D.cppm -fmodule-file=foo=%t/C.pcm // RUN: %clang_cc1 -std=c++20 %t/E.cppm -fmodule-file=foo=%t/C.pcm // RUN: %clang_cc1 -std=c++20 -verify %t/F.cppm -fmodule-file=foo=%t/C.pcm // RUN: %clang_cc1 -std=c++20 -verify %t/NoSemi.cppm //--- A.cppm export module foo; // expected-note {{previous module declaration is here}} export module bar; // expected-error {{translation unit contains multiple module declarations}} //--- B.cppm export module foo; // expected-note {{previous module declaration is here}} module bar; // expected-error {{translation unit contains multiple module declarations}} //--- C.cppm export module foo; //--- D.cppm module foo; //--- E.cppm export module bar; //--- F.cppm module foo; // expected-note {{previous module declaration is here}} export module bar; // expected-error {{translation unit contains multiple module declarations}} //--- NoSemi.cppm // This test checked issue: https://github.com/llvm/llvm-project/issues/187771 export module foo //expected-error {{module directive must end with a ';'}}