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

Add a test case from MSVC (https://developercommunity.visualstudio.com/t/c20-modules-unresolved-external-symbol/10049210) to cover more tests.
53 lines
1.1 KiB
C++
53 lines
1.1 KiB
C++
// This comes from the issue report of MSVC
|
|
// (https://developercommunity.visualstudio.com/t/c20-modules-unresolved-external-symbol/10049210).
|
|
//
|
|
// RUN: rm -rf %t
|
|
// RUN: mkdir %t
|
|
// RUN: split-file %s %t
|
|
//
|
|
// RUN: %clang_cc1 -std=c++20 %t/base.cppm -emit-module-interface -o %t/package-base.pcm
|
|
// RUN: %clang_cc1 -std=c++20 %t/child.cppm -emit-module-interface -o %t/package-child.pcm \
|
|
// RUN: -fprebuilt-module-path=%t
|
|
// RUN: %clang_cc1 -std=c++20 %t/package.cppm -emit-module-interface -o %t/package.pcm \
|
|
// RUN: -fprebuilt-module-path=%t
|
|
// RUN: %clang_cc1 -std=c++20 %t/use.cpp -fsyntax-only -verify -fprebuilt-module-path=%t
|
|
|
|
//--- base.cppm
|
|
export module package:base;
|
|
|
|
export struct child;
|
|
|
|
export
|
|
template<class> struct base
|
|
{
|
|
child getChild();
|
|
};
|
|
|
|
|
|
//--- child.cppm
|
|
export module package:child;
|
|
|
|
import :base;
|
|
|
|
export struct child : base<void> {};
|
|
|
|
template<class T>
|
|
child base<T>::getChild() { return {}; }
|
|
|
|
//--- package.cppm
|
|
export module package;
|
|
|
|
export import :base;
|
|
export import :child;
|
|
|
|
//--- use.cpp
|
|
// expected-no-diagnostics
|
|
import package;
|
|
|
|
int use()
|
|
{
|
|
base<void>{}.getChild();
|
|
base<int>{}.getChild();
|
|
return 0;
|
|
}
|