// RUN: %clang_cc1 -triple x86_64-unknown-unknown -std=c++17 -ast-dump %s | FileCheck -strict-whitespace %s // Tests to verify we construct correct using template names. // TemplateNames are not dumped, so the sugar here isn't obvious. However // the "using" on the TemplateSpecializationTypes shows that the // UsingTemplateName is present. namespace ns { template class S { public: S(T); }; template struct S2 { S2(T); }; template S2(T t) -> S2; } using ns::S; using ns::S2; // TemplateName in TemplateSpecializationType. template using A = S; // CHECK: TypeAliasDecl // CHECK-NEXT: `-ElaboratedType {{.*}} 'S' sugar dependent // CHECK-NEXT: `-TemplateSpecializationType {{.*}} 'S' dependent // CHECK-NEXT: |-name: 'S':'ns::S' qualified // CHECk-NEXT: | |-UsingShadowDecl {{.+}} ClassTemplate {{.+}} 'S' // TemplateName in TemplateArgument. template