diff options
author | Jordan Rose <jordan_rose@apple.com> | 2012-10-03 01:08:28 +0000 |
---|---|---|
committer | Jordan Rose <jordan_rose@apple.com> | 2012-10-03 01:08:28 +0000 |
commit | 041ce8e00afd1185549a25d5c2b97d219ae032d9 (patch) | |
tree | 2822099dd1b8e0266c4aa27d3ca543290fa1022c /lib/AST/Type.cpp | |
parent | 6b2cc42f1504db6577fd67fa55ef023254744e2c (diff) |
Teach getCXXRecordDeclForPointerType about references.
Then, rename it getPointeeCXXRecordDecl and give it a nice doc comment,
and actually use it.
No intended functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165077 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/Type.cpp')
-rw-r--r-- | lib/AST/Type.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/AST/Type.cpp b/lib/AST/Type.cpp index 9db41c4b1e..218e6e9a4d 100644 --- a/lib/AST/Type.cpp +++ b/lib/AST/Type.cpp @@ -512,10 +512,18 @@ const ObjCObjectPointerType *Type::getAsObjCInterfacePointerType() const { return 0; } -const CXXRecordDecl *Type::getCXXRecordDeclForPointerType() const { +const CXXRecordDecl *Type::getPointeeCXXRecordDecl() const { + QualType PointeeType; if (const PointerType *PT = getAs<PointerType>()) - if (const RecordType *RT = PT->getPointeeType()->getAs<RecordType>()) - return dyn_cast<CXXRecordDecl>(RT->getDecl()); + PointeeType = PT->getPointeeType(); + else if (const ReferenceType *RT = getAs<ReferenceType>()) + PointeeType = RT->getPointeeType(); + else + return 0; + + if (const RecordType *RT = PointeeType->getAs<RecordType>()) + return dyn_cast<CXXRecordDecl>(RT->getDecl()); + return 0; } |