1 // RUN: rm -rf %t
2 // RUN: %clang_cc1 -fmodules -fno-modules-error-recovery -std=c++14 \
3 // RUN:            -fmodule-name=X -emit-module %S/Inputs/merge-template-pattern-visibility/module.modulemap -x c++ \
4 // RUN:            -fmodules-local-submodule-visibility -o %t/X.pcm
5 // RUN: %clang_cc1 -fmodules -fno-modules-error-recovery -std=c++14 \
6 // RUN:            -fmodule-name=Y -emit-module %S/Inputs/merge-template-pattern-visibility/module.modulemap -x c++ \
7 // RUN:            -fmodules-local-submodule-visibility -o %t/Y.pcm
8 // RUN: %clang_cc1 -fmodules -fno-modules-error-recovery -std=c++14 -fmodule-file=%t/X.pcm -fmodule-file=%t/Y.pcm \
9 // RUN:            -fmodules-local-submodule-visibility -verify %s -I%S/Inputs/merge-template-pattern-visibility
10 // RUN: %clang_cc1 -fmodules -fno-modules-error-recovery -std=c++14 -fmodule-file=%t/Y.pcm -fmodule-file=%t/X.pcm \
11 // RUN:            -fmodules-local-submodule-visibility -verify %s -I%S/Inputs/merge-template-pattern-visibility
12 // RUN: %clang_cc1 -fmodules -fno-modules-error-recovery -std=c++14 -fmodule-file=%t/X.pcm -fmodule-file=%t/Y.pcm \
13 // RUN:            -verify %s -I%S/Inputs/merge-template-pattern-visibility
14 // RUN: %clang_cc1 -fmodules -fno-modules-error-recovery -std=c++14 -fmodule-file=%t/Y.pcm -fmodule-file=%t/X.pcm \
15 // RUN:            -verify %s -I%S/Inputs/merge-template-pattern-visibility
16 
17 #include "b.h"
18 #include "d.h"
19 
20 // expected-no-diagnostics
21 void g() {
22   CrossModuleMerge::B<int> bi;
23   CrossModuleMerge::C(0);
24   CrossModuleMerge::D(0);
25   CrossModuleMerge::E e;
26 }
27