1af27466cSSam McCall // RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump %s | FileCheck -strict-whitespace %s 2af27466cSSam McCall 3af27466cSSam McCall namespace a { 4af27466cSSam McCall struct S; 5*5cb2ebc0Skadir çetinkaya template <typename T> T x = {}; 6af27466cSSam McCall } 7af27466cSSam McCall namespace b { 8af27466cSSam McCall using a::S; 9af27466cSSam McCall // CHECK: UsingDecl {{.*}} a::S 1054091d37SSam McCall // CHECK-NEXT: | `-NestedNameSpecifier Namespace {{.*}} 'a' 11af27466cSSam McCall // CHECK-NEXT: UsingShadowDecl {{.*}} implicit CXXRecord {{.*}} 'S' 12af27466cSSam McCall // CHECK-NEXT: `-RecordType {{.*}} 'a::S' 13af27466cSSam McCall typedef S f; // to dump the introduced type 14af27466cSSam McCall // CHECK: TypedefDecl 1515f3cd6bSMatheus Izvekov // CHECK-NEXT: `-ElaboratedType {{.*}} 'S' sugar 162e52e13cSWei Wang // CHECK-NEXT: `-UsingType [[TYPE_ADDR:.*]] 'a::S' sugar 172e52e13cSWei Wang // CHECK-NEXT: |-UsingShadow [[SHADOW_ADDR:.*]] 'S' 182e52e13cSWei Wang // CHECK-NEXT: `-RecordType {{.*}} 'a::S' 192e52e13cSWei Wang typedef S e; // check the same UsingType is reused. 202e52e13cSWei Wang // CHECK: TypedefDecl 212e52e13cSWei Wang // CHECK-NEXT: `-ElaboratedType {{.*}} 'S' sugar 222e52e13cSWei Wang // CHECK-NEXT: `-UsingType [[TYPE_ADDR]] 'a::S' sugar 232e52e13cSWei Wang // CHECK-NEXT: |-UsingShadow [[SHADOW_ADDR]] 'S' 24af27466cSSam McCall // CHECK-NEXT: `-RecordType {{.*}} 'a::S' 25*5cb2ebc0Skadir çetinkaya using a::x; 26*5cb2ebc0Skadir çetinkaya foo()27*5cb2ebc0Skadir çetinkayavoid foo() { 28*5cb2ebc0Skadir çetinkaya x<int> = 3; 29*5cb2ebc0Skadir çetinkaya // CHECK: DeclRefExpr {{.*}} 'x' {{.*}} (UsingShadow {{.*}} 'x') 30*5cb2ebc0Skadir çetinkaya } 31af27466cSSam McCall } 32