aboutsummaryrefslogtreecommitdiff
path: root/lib/AST/Type.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/AST/Type.cpp')
-rw-r--r--lib/AST/Type.cpp44
1 files changed, 12 insertions, 32 deletions
diff --git a/lib/AST/Type.cpp b/lib/AST/Type.cpp
index 16f54cae13..f80f3641da 100644
--- a/lib/AST/Type.cpp
+++ b/lib/AST/Type.cpp
@@ -429,42 +429,22 @@ const OCUVectorType *Type::getAsOCUVectorType() const {
}
const ObjCInterfaceType *Type::getAsObjCInterfaceType() const {
- // Are we directly an ObjCInterface type?
- if (const ObjCInterfaceType *VTy = dyn_cast<ObjCInterfaceType>(this))
- return VTy;
-
- // If the canonical form of this type isn't the right kind, reject it.
- if (!isa<ObjCInterfaceType>(CanonicalType)) {
- // Look through type qualifiers
- if (isa<ObjCInterfaceType>(CanonicalType.getUnqualifiedType()))
- return CanonicalType.getUnqualifiedType()->getAsObjCInterfaceType();
- return 0;
- }
-
- // If this is a typedef for an objc interface type, strip the typedef off
- // without losing all typedef information.
- return getDesugaredType()->getAsObjCInterfaceType();
+ // There is no sugar for ObjCInterfaceType's, just return the canonical
+ // type pointer if it is the right class.
+ return dyn_cast<ObjCInterfaceType>(CanonicalType);
}
const ObjCQualifiedInterfaceType *
Type::getAsObjCQualifiedInterfaceType() const {
- // Are we directly an ObjCQualifiedInterfaceType?
- if (const ObjCQualifiedInterfaceType *VTy =
- dyn_cast<ObjCQualifiedInterfaceType>(this))
- return VTy;
-
- // If the canonical form of this type isn't the right kind, reject it.
- if (!isa<ObjCQualifiedInterfaceType>(CanonicalType)) {
- // Look through type qualifiers
- if (isa<ObjCQualifiedInterfaceType>(CanonicalType.getUnqualifiedType()))
- return CanonicalType.getUnqualifiedType()->
- getAsObjCQualifiedInterfaceType();
- return 0;
- }
-
- // If this is a typedef for an objc qual interface type, strip the typedef off
- // without losing all typedef information.
- return getDesugaredType()->getAsObjCQualifiedInterfaceType();
+ // There is no sugar for ObjCQualifiedInterfaceType's, just return the canonical
+ // type pointer if it is the right class.
+ return dyn_cast<ObjCQualifiedInterfaceType>(CanonicalType);
+}
+
+const ObjCQualifiedIdType *Type::getAsObjCQualifiedIdType() const {
+ // There is no sugar for ObjCQualifiedIdType's, just return the canonical
+ // type pointer if it is the right class.
+ return dyn_cast<ObjCQualifiedIdType>(CanonicalType);
}