// 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 struct base { child getChild(); }; //--- child.cppm export module package:child; import :base; export struct child : base {}; template child base::getChild() { return {}; } //--- package.cppm export module package; export import :base; export import :child; //--- use.cpp // expected-no-diagnostics import package; int use() { base{}.getChild(); base{}.getChild(); return 0; }