
The existing provision is not sufficient, it did not allow for the cases where an implementation partition includes the primary module interface, or for the case that an exported interface partition is contains a decl that is then implemented in a regular implementation unit. It is somewhat unfortunate that we have to compare top level module names to achieve this, since built modules are not necessarily available. TODO: It might be useful to cache a hash of the primary module name if this test proves to be a significant load. Differential Revision: https://reviews.llvm.org/D127624
56 lines
1.0 KiB
C++
56 lines
1.0 KiB
C++
// RUN: rm -rf %t
|
|
// RUN: split-file %s %t
|
|
// RUN: cd %t
|
|
|
|
// RUN: %clang_cc1 -std=c++20 A-intf-part.cpp -emit-module-interface \
|
|
// RUN: -o A-PubPart.pcm
|
|
// RUN: %clang_cc1 -std=c++20 A-interface.cpp -emit-module-interface \
|
|
// RUN: -fmodule-file=A-PubPart.pcm -o A.pcm
|
|
|
|
// RUN: %clang_cc1 -std=c++20 A-impl-top.cpp -fsyntax-only -fmodule-file=A.pcm
|
|
// RUN: %clang_cc1 -std=c++20 A-impl-part.cpp -fsyntax-only -fmodule-file=A.pcm
|
|
// RUN: %clang_cc1 -std=c++20 A-impl-1.cpp -fsyntax-only -fmodule-file=A.pcm
|
|
// RUN: %clang_cc1 -std=c++20 A-impl-2.cpp -fsyntax-only -fmodule-file=A.pcm
|
|
|
|
//--- A-interface.cpp
|
|
export module A;
|
|
|
|
export import :PubPart;
|
|
|
|
export void do_something();
|
|
|
|
void helper1();
|
|
void helper3();
|
|
|
|
//--- A-intf-part.cpp
|
|
export module A:PubPart;
|
|
|
|
void helper2();
|
|
|
|
//--- A-impl-top.cpp
|
|
|
|
module A;
|
|
|
|
void do_something() {
|
|
helper1();
|
|
helper2();
|
|
helper3();
|
|
}
|
|
|
|
//--- A-impl-part.cpp
|
|
module A:Secret;
|
|
|
|
import A;
|
|
|
|
void helper3() {}
|
|
|
|
//--- A-impl-1.cpp
|
|
module A;
|
|
|
|
void helper1() {}
|
|
|
|
//--- A-impl-2.cpp
|
|
module A;
|
|
|
|
void helper2() {}
|