From: Adrian Prantl Date: Tue, 26 Apr 2016 21:58:23 +0000 (+0000) Subject: Module debugging: Add testcase for member classes of class template specializations. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=56d464f4c231fe9344deb2945794265c33af30d0;p=clang Module debugging: Add testcase for member classes of class template specializations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@267612 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Modules/ExtDebugInfo.cpp b/test/Modules/ExtDebugInfo.cpp index e16d5a85f2..4760737bc4 100644 --- a/test/Modules/ExtDebugInfo.cpp +++ b/test/Modules/ExtDebugInfo.cpp @@ -55,6 +55,9 @@ InAnonymousNamespace anon; struct PureFwdDecl { int i; }; PureFwdDecl definedLocally; +struct Specialized::Member { int i; }; +struct Specialized::Member definedLocally2; + void foo() { anon.i = GlobalStruct.i = GlobalUnion.i = GlobalEnum; } @@ -137,11 +140,16 @@ void foo() { // CHECK-SAME: templateParams: // CHECK-SAME: identifier: "_ZTS15FwdDeclTemplateIiE") -// This type is defined locally and forward-declare in the module. +// This type is defined locally and forward-declared in the module. // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "PureFwdDecl", // CHECK-SAME: elements: // CHECK-SAME: identifier: "_ZTS11PureFwdDecl") +// This type is defined locally and forward-declared in the module. +// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "Member", +// CHECK-SAME: elements: +// CHECK-SAME: identifier: "_ZTSN11SpecializedIiE6MemberE") + // CHECK: !DIGlobalVariable(name: "anon_enum", {{.*}}, type: ![[ANON_ENUM:[0-9]+]] // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, scope: ![[NS]], // CHECK-SAME: line: 16 diff --git a/test/Modules/Inputs/DebugCXX.h b/test/Modules/Inputs/DebugCXX.h index e6c38435ab..9ae74dc688 100644 --- a/test/Modules/Inputs/DebugCXX.h +++ b/test/Modules/Inputs/DebugCXX.h @@ -95,3 +95,12 @@ extern template class Template1; template class FwdDeclTemplate; typedef FwdDeclTemplate TypedefFwdDeclTemplate; + +// Member classes of class template specializations. +template struct Specialized { +}; + +template <> struct Specialized { +struct Member;// { int i; }; +}; +