xref: /llvm-project/clang/test/Modules/merge-template-members.cpp (revision 47972afd102f557553d7c6555240bd80982afdd1)
150895427SRichard Smith // RUN: rm -rf %t
2*47972afdSRichard Smith // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%S/Inputs/merge-template-members -verify -emit-llvm-only %s -DTEST=1
3*47972afdSRichard Smith // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%S/Inputs/merge-template-members -verify -emit-llvm-only %s -DTEST=2
4*47972afdSRichard Smith // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I%S/Inputs/merge-template-members -verify -emit-llvm-only %s -DTEST=3
550895427SRichard Smith // expected-no-diagnostics
650895427SRichard Smith 
77483d20eSRichard Smith #if TEST == 1
82a9e5c57SRichard Smith 
950895427SRichard Smith template<typename> struct A { int n; };
1050895427SRichard Smith template<typename> struct B { typedef A<void> C; };
1150895427SRichard Smith template class B<int>;
1250895427SRichard Smith 
1350895427SRichard Smith #include "update.h"
1450895427SRichard Smith B<int>::C use2;
157483d20eSRichard Smith 
167483d20eSRichard Smith #elif TEST == 2
177483d20eSRichard Smith 
187483d20eSRichard Smith #include "c.h"
197483d20eSRichard Smith N::A<int> ai;
207483d20eSRichard Smith 
217483d20eSRichard Smith #elif TEST == 3
227483d20eSRichard Smith 
237483d20eSRichard Smith #include "merge.h"
247483d20eSRichard Smith 
257483d20eSRichard Smith #else
267483d20eSRichard Smith #error Unknown test
277483d20eSRichard Smith #endif
28