summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2017-03-27 17:56:48 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2017-03-27 17:56:48 +0200
commit1dee6df851174f1722cc618d977cdeaafb13a666 (patch)
treed188f3cbc0122504fdd33a6af479e7ac5f9d1ada
parent869d5fc48c89f4bcc3e522df934590a22384f300 (diff)
fix returned references
-rw-r--r--clang/rename.cxx11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/rename.cxx b/clang/rename.cxx
index 8cbdecf..4b87cb1 100644
--- a/clang/rename.cxx
+++ b/clang/rename.cxx
@@ -330,6 +330,17 @@ public:
{
clang::QualType pType = pDecl->getReturnType();
const clang::RecordDecl* pRecordDecl = pType->getAsCXXRecordDecl();
+
+ /*
+ * inline C& C::bar() { return *this; }
+ * ^ Handle this.
+ */
+ if (!pRecordDecl)
+ {
+ if (const clang::ReferenceType* pReferenceType = pType->getAs<clang::ReferenceType>())
+ pRecordDecl = pReferenceType->getPointeeType()->getAsCXXRecordDecl();
+ }
+
if (pRecordDecl)
RewriteText(pDecl->getReturnTypeSourceRange().getBegin(), pRecordDecl->getNameAsString().length(), pRecordDecl->getNameAsString());
}