53 lines
1.1 KiB
Text
53 lines
1.1 KiB
Text
|
// 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;
|
||
|
}
|