llvm/clang/test/CXX/module/module.import/p7.cpp

// RUN: mkdir -p %t
// RUN: split-file %s %t

// All of the following should build without diagnostics.
//
// RUN: %clang_cc1 -std=c++20 %t/a.cpp  -emit-module-interface -o %t/a.pcm
// R U N: %clang_cc1 -std=c++20 %t/a.pcm  -emit-obj -o %t/a.o
//
// RUN: %clang_cc1 -std=c++20 %t/b.cpp  -emit-module-interface -o %t/b.pcm \
// RUN: -fprebuilt-module-path=%t 
// R U N: %clang_cc1 -std=c++20 %t/b.pcm  -emit-obj -o %t/b.o
//
// RUN: %clang_cc1 -std=c++20 %t/b-impl.cpp -emit-obj -o %t/b-impl.o \
// RUN: -fprebuilt-module-path=%t
//
// RUN: %clang_cc1 -std=c++20 %t/ab-main.cpp  -fsyntax-only \
// RUN: -fprebuilt-module-path=%t

//--- a.cpp

export module a;

export int foo() {
   return 42;
}

//--- b.cpp

export module b;
import a;

export int bar();

//--- b-impl.cpp

module b;

int bar() {
   return foo();
}

//--- ab-main.cpp

import b;

int main() {
   return bar();
}