mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-05-13 17:37:00 +00:00

submodule visibility is disabled. Attempting to pick a specific declaration to make visible when the module containing the merged declaration becomes visible is error-prone, as we don't yet know which declaration we'll choose to be the definition when we are informed of the merging. This reinstates r342019, reverted in r342020. The regression previously observed after this commit was fixed in r342096. llvm-svn: 342097
35 lines
915 B
C++
35 lines
915 B
C++
// RUN: %clang_cc1 -fmodules -emit-llvm-only %s -verify
|
|
|
|
#pragma clang module build A
|
|
module A {}
|
|
#pragma clang module contents
|
|
#pragma clang module begin A
|
|
template<typename T> void f(const T&) { T::error; }
|
|
#pragma clang module end
|
|
#pragma clang module endbuild
|
|
|
|
#pragma clang module build B
|
|
module B {}
|
|
#pragma clang module contents
|
|
#pragma clang module begin B
|
|
template<typename T> void f(const T&) { T::error; }
|
|
#pragma clang module end
|
|
#pragma clang module endbuild
|
|
|
|
#pragma clang module build C
|
|
module C {}
|
|
#pragma clang module contents
|
|
#pragma clang module begin C
|
|
#pragma clang module load B
|
|
template<typename T> void f(const T&) { T::error; }
|
|
#pragma clang module end
|
|
#pragma clang module endbuild
|
|
|
|
#pragma clang module load A
|
|
inline void f() {}
|
|
void x() { f(); }
|
|
|
|
#pragma clang module import C
|
|
// expected-error@* {{cannot be used prior to}}
|
|
void y(int n) { f(n); } // expected-note {{instantiation of}}
|