Mercurial > hg > CbC > CbC_llvm
comparison clang/test/Modules/seperated-member-function-definition-for-template-class.cppm @ 252:1f2b6ac9f198 llvm-original
LLVM16-1
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 18 Aug 2023 09:04:13 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
237:c80f45b162ad | 252:1f2b6ac9f198 |
---|---|
1 // This comes from the issue report of MSVC | |
2 // (https://developercommunity.visualstudio.com/t/c20-modules-unresolved-external-symbol/10049210). | |
3 // | |
4 // RUN: rm -rf %t | |
5 // RUN: mkdir %t | |
6 // RUN: split-file %s %t | |
7 // | |
8 // RUN: %clang_cc1 -std=c++20 %t/base.cppm -emit-module-interface -o %t/package-base.pcm | |
9 // RUN: %clang_cc1 -std=c++20 %t/child.cppm -emit-module-interface -o %t/package-child.pcm \ | |
10 // RUN: -fprebuilt-module-path=%t | |
11 // RUN: %clang_cc1 -std=c++20 %t/package.cppm -emit-module-interface -o %t/package.pcm \ | |
12 // RUN: -fprebuilt-module-path=%t | |
13 // RUN: %clang_cc1 -std=c++20 %t/use.cpp -fsyntax-only -verify -fprebuilt-module-path=%t | |
14 | |
15 //--- base.cppm | |
16 export module package:base; | |
17 | |
18 export struct child; | |
19 | |
20 export | |
21 template<class> struct base | |
22 { | |
23 child getChild(); | |
24 }; | |
25 | |
26 | |
27 //--- child.cppm | |
28 export module package:child; | |
29 | |
30 import :base; | |
31 | |
32 export struct child : base<void> {}; | |
33 | |
34 template<class T> | |
35 child base<T>::getChild() { return {}; } | |
36 | |
37 //--- package.cppm | |
38 export module package; | |
39 | |
40 export import :base; | |
41 export import :child; | |
42 | |
43 //--- use.cpp | |
44 // expected-no-diagnostics | |
45 import package; | |
46 | |
47 int use() | |
48 { | |
49 base<void>{}.getChild(); | |
50 base<int>{}.getChild(); | |
51 return 0; | |
52 } |