summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2016-11-09 14:02:18 +0000
committerAlex Lorenz <arphaman@gmail.com>2016-11-09 14:02:18 +0000
commitddbe0f51382dcc57eec973149289b79929f3cd69 (patch)
tree767dffcfe8921a3057882c9829231c57a5d93391
parent1feb2f7d939c922d9672ec544577c09e9ec8e8ca (diff)
downloadbcm5719-llvm-ddbe0f51382dcc57eec973149289b79929f3cd69.tar.gz
bcm5719-llvm-ddbe0f51382dcc57eec973149289b79929f3cd69.zip
[AST] Dump dependent scope member expression with its member name
llvm-svn: 286365
-rw-r--r--clang/lib/AST/ASTDumper.cpp7
-rw-r--r--clang/test/Misc/ast-dump-stmt.cpp16
2 files changed, 23 insertions, 0 deletions
diff --git a/clang/lib/AST/ASTDumper.cpp b/clang/lib/AST/ASTDumper.cpp
index 61a38af8dc1..f97ac7e7a14 100644
--- a/clang/lib/AST/ASTDumper.cpp
+++ b/clang/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/clang/test/Misc/ast-dump-stmt.cpp b/clang/test/Misc/ast-dump-stmt.cpp
index 96921ff7b6e..55b9b5fa953 100644
--- a/clang/test/Misc/ast-dump-stmt.cpp
+++ b/clang/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
OpenPOWER on IntegriCloud