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