diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2012-10-12 22:45:14 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2012-10-12 22:45:14 +0000 |
commit | 8e23642cd186d76ba08f62000ee96ef38f80061c (patch) | |
tree | 7fc143a314189c38d4439e9087f03f9ca0de6534 | |
parent | f05e3bda1766933e34fd40c2a6b7aab3a17c1a65 (diff) | |
download | bcm5719-llvm-8e23642cd186d76ba08f62000ee96ef38f80061c.tar.gz bcm5719-llvm-8e23642cd186d76ba08f62000ee96ef38f80061c.zip |
Fix -ast-print for uses of operator->.
Patch by Grzegorz Jablonski.
llvm-svn: 165832
-rw-r--r-- | clang/lib/AST/StmtPrinter.cpp | 2 | ||||
-rw-r--r-- | clang/test/CXX/ast-print.cpp | 21 |
2 files changed, 23 insertions, 0 deletions
diff --git a/clang/lib/AST/StmtPrinter.cpp b/clang/lib/AST/StmtPrinter.cpp index 3a9f236f316..93d10f7aafe 100644 --- a/clang/lib/AST/StmtPrinter.cpp +++ b/clang/lib/AST/StmtPrinter.cpp @@ -1130,6 +1130,8 @@ void StmtPrinter::VisitCXXOperatorCallExpr(CXXOperatorCallExpr *Node) { PrintExpr(Node->getArg(0)); OS << ' ' << OpStrings[Kind]; } + } else if (Kind == OO_Arrow) { + PrintExpr(Node->getArg(0)); } else if (Kind == OO_Call) { PrintExpr(Node->getArg(0)); OS << '('; diff --git a/clang/test/CXX/ast-print.cpp b/clang/test/CXX/ast-print.cpp new file mode 100644 index 00000000000..fb8588d4b13 --- /dev/null +++ b/clang/test/CXX/ast-print.cpp @@ -0,0 +1,21 @@ +// RUN: %clang_cc1 -ast-print %s | FileCheck %s + +// CHECK: r; +// CHECK-NEXT: (r->method()); +struct MyClass +{ + void method() {} +}; + +struct Reference +{ + MyClass* object; + MyClass* operator ->() { return object; } +}; + +int main() +{ + Reference r; + (r->method()); +} + |