diff options
author | Sam Weinig <sam.weinig@gmail.com> | 2009-12-27 01:38:20 +0000 |
---|---|---|
committer | Sam Weinig <sam.weinig@gmail.com> | 2009-12-27 01:38:20 +0000 |
commit | 4e83bd2795bc7da9c81dd9e8b96ea9e1d7557e53 (patch) | |
tree | a2c2f001b9f55b268ea8955f65ad7095f4144481 /clang/lib | |
parent | 54f330f34229d5bbecc75204101e7580e171d534 (diff) | |
download | bcm5719-llvm-4e83bd2795bc7da9c81dd9e8b96ea9e1d7557e53.tar.gz bcm5719-llvm-4e83bd2795bc7da9c81dd9e8b96ea9e1d7557e53.zip |
Fix for PR5872. Add static specifier and const/volatile qualifiers to member functions in __PRETTY_FUNCTION__ predefined expressions.
llvm-svn: 92171
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/AST/Expr.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 960d83d103a..a31a7f51f82 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -174,6 +174,8 @@ std::string PredefinedExpr::ComputeName(ASTContext &Context, IdentType IT, if (const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD)) { if (MD->isVirtual()) Out << "virtual "; + if (MD->isStatic()) + Out << "static "; } PrintingPolicy Policy(Context.getLangOptions()); @@ -203,6 +205,14 @@ std::string PredefinedExpr::ComputeName(ASTContext &Context, IdentType IT, } Proto += ")"; + if (const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD)) { + Qualifiers ThisQuals = Qualifiers::fromCVRMask(MD->getTypeQualifiers()); + if (ThisQuals.hasConst()) + Proto += " const"; + if (ThisQuals.hasVolatile()) + Proto += " volatile"; + } + if (!isa<CXXConstructorDecl>(FD) && !isa<CXXDestructorDecl>(FD)) AFT->getResultType().getAsStringInternal(Proto, Policy); |