diff options
Diffstat (limited to 'lib/AST')
-rw-r--r-- | lib/AST/Expr.cpp | 14 | ||||
-rw-r--r-- | lib/AST/StmtPrinter.cpp | 2 | ||||
-rw-r--r-- | lib/AST/StmtProfile.cpp | 2 |
3 files changed, 13 insertions, 5 deletions
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index c890812d91..6bc4854628 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -12,6 +12,7 @@ //===----------------------------------------------------------------------===// #include "clang/AST/Expr.h" +#include "clang/AST/ExprCXX.h" #include "clang/AST/APValue.h" #include "clang/AST/ASTContext.h" #include "clang/AST/DeclObjC.h" @@ -497,7 +498,7 @@ bool Expr::isUnusedResultAWarning(SourceLocation &Loc, SourceRange &R1, } case MemberExprClass: - case CXXQualifiedMemberExprClass: + case CXXAdornedMemberExprClass: // If the base pointer or element is to a volatile pointer/field, accessing // it is a side effect. if (getType().isVolatileQualified()) @@ -686,7 +687,7 @@ Expr::isLvalueResult Expr::isLvalueInternal(ASTContext &Ctx) const { break; } case MemberExprClass: - case CXXQualifiedMemberExprClass: { + case CXXAdornedMemberExprClass: { const MemberExpr *m = cast<MemberExpr>(this); if (Ctx.getLangOptions().CPlusPlus) { // C++ [expr.ref]p4: NamedDecl *Member = m->getMemberDecl(); @@ -958,7 +959,7 @@ bool Expr::isOBJCGCCandidate(ASTContext &Ctx) const { return false; } case MemberExprClass: - case CXXQualifiedMemberExprClass: { + case CXXAdornedMemberExprClass: { const MemberExpr *M = cast<MemberExpr>(this); return M->getBase()->isOBJCGCCandidate(Ctx); } @@ -1916,6 +1917,13 @@ Stmt::child_iterator CallExpr::child_end() { Stmt::child_iterator MemberExpr::child_begin() { return &Base; } Stmt::child_iterator MemberExpr::child_end() { return &Base+1; } +bool MemberExpr::hasQualifier() const { + if (const CXXAdornedMemberExpr *A = dyn_cast<CXXAdornedMemberExpr>(this)) + return A->hasQualifier(); + + return false; +} + // ExtVectorElementExpr Stmt::child_iterator ExtVectorElementExpr::child_begin() { return &Base; } Stmt::child_iterator ExtVectorElementExpr::child_end() { return &Base+1; } diff --git a/lib/AST/StmtPrinter.cpp b/lib/AST/StmtPrinter.cpp index c9614e178c..d09358c08a 100644 --- a/lib/AST/StmtPrinter.cpp +++ b/lib/AST/StmtPrinter.cpp @@ -1126,7 +1126,7 @@ StmtPrinter::VisitCXXUnresolvedConstructExpr( OS << ")"; } -void StmtPrinter::VisitCXXQualifiedMemberExpr(CXXQualifiedMemberExpr *Node) { +void StmtPrinter::VisitCXXAdornedMemberExpr(CXXAdornedMemberExpr *Node) { // FIXME: Suppress printing implicit bases (like "this") PrintExpr(Node->getBase()); OS << (Node->isArrow() ? "->" : "."); diff --git a/lib/AST/StmtProfile.cpp b/lib/AST/StmtProfile.cpp index 0ffe5e17c6..8ce620c625 100644 --- a/lib/AST/StmtProfile.cpp +++ b/lib/AST/StmtProfile.cpp @@ -546,7 +546,7 @@ StmtProfiler::VisitCXXUnresolvedConstructExpr(CXXUnresolvedConstructExpr *S) { VisitType(S->getTypeAsWritten()); } -void StmtProfiler::VisitCXXQualifiedMemberExpr(CXXQualifiedMemberExpr *S) { +void StmtProfiler::VisitCXXAdornedMemberExpr(CXXAdornedMemberExpr *S) { VisitMemberExpr(S); VisitNestedNameSpecifier(S->getQualifier()); } |