diff options
| author | Alex Lorenz <arphaman@gmail.com> | 2016-11-09 14:02:18 +0000 | 
|---|---|---|
| committer | Alex Lorenz <arphaman@gmail.com> | 2016-11-09 14:02:18 +0000 | 
| commit | ddbe0f51382dcc57eec973149289b79929f3cd69 (patch) | |
| tree | 767dffcfe8921a3057882c9829231c57a5d93391 | |
| parent | 1feb2f7d939c922d9672ec544577c09e9ec8e8ca (diff) | |
| download | bcm5719-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.cpp | 7 | ||||
| -rw-r--r-- | clang/test/Misc/ast-dump-stmt.cpp | 16 | 
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  | 

