From 0bdcca3c558def765d863b72b2919f7179ec3d84 Mon Sep 17 00:00:00 2001 From: Alex Lorenz <arphaman@gmail.com> Date: Wed, 9 Nov 2016 14:02:18 +0000 Subject: [PATCH] [AST] Dump dependent scope member expression with its member name git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@286365 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AST/ASTDumper.cpp | 7 +++++++ test/Misc/ast-dump-stmt.cpp | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/lib/AST/ASTDumper.cpp b/lib/AST/ASTDumper.cpp index 61a38af8dc1..f97ac7e7a14 100644 --- a/lib/AST/ASTDumper.cpp +++ b/lib/AST/ASTDumper.cpp @@ -545,6 +545,8 @@ namespace { dumpDecl(Node->getLambdaClass()); } void VisitSizeOfPackExpr(const SizeOfPackExpr *Node); + void + VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *Node); // ObjC void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *Node); @@ -2194,6 +2196,11 @@ void ASTDumper::VisitSizeOfPackExpr(const SizeOfPackExpr *Node) { dumpTemplateArgument(A); } +void ASTDumper::VisitCXXDependentScopeMemberExpr( + const CXXDependentScopeMemberExpr *Node) { + VisitExpr(Node); + OS << " " << (Node->isArrow() ? "->" : ".") << Node->getMember(); +} //===----------------------------------------------------------------------===// // Obj-C Expressions diff --git a/test/Misc/ast-dump-stmt.cpp b/test/Misc/ast-dump-stmt.cpp index 96921ff7b6e..55b9b5fa953 100644 --- a/test/Misc/ast-dump-stmt.cpp +++ b/test/Misc/ast-dump-stmt.cpp @@ -65,3 +65,19 @@ void TestDependentAllocationExpr() { // CHECK: FunctionTemplateDecl {{.*}} TestDependentAllocationExpr // CHECK: CXXNewExpr {{.*'T \*'$}} // CHECK: CXXDeleteExpr {{.*'void'$}} + +template <typename T> +class DependentScopeMemberExprWrapper { + T member; +}; + +template <typename T> +void TestDependentScopeMemberExpr() { + DependentScopeMemberExprWrapper<T> obj; + obj.member = T(); + (&obj)->member = T(); +} + +// CHECK: FunctionTemplateDecl {{.*}} TestDependentScopeMemberExpr +// CHECK: CXXDependentScopeMemberExpr {{.*}} lvalue .member +// CHECK: CXXDependentScopeMemberExpr {{.*}} lvalue ->member -- GitLab