summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaOverload.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-01-18 22:59:22 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-01-18 22:59:22 +0000
commit42ffdb32fb54616c28bce6d04b73546c574e133d (patch)
tree599c72f7834dcc3b789d9623082e3eb0ddd91db1 /clang/lib/Sema/SemaOverload.cpp
parent06828f025d7b0b3cbb0567f1ae36de25c2c7dea3 (diff)
downloadbcm5719-llvm-42ffdb32fb54616c28bce6d04b73546c574e133d.tar.gz
bcm5719-llvm-42ffdb32fb54616c28bce6d04b73546c574e133d.zip
Allow conversion of pointer to an objective-c pointer to
a similar pointer. Fixes radar 7552179. llvm-svn: 93803
Diffstat (limited to 'clang/lib/Sema/SemaOverload.cpp')
-rw-r--r--clang/lib/Sema/SemaOverload.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp
index 884192b7336..d710d96586b 100644
--- a/clang/lib/Sema/SemaOverload.cpp
+++ b/clang/lib/Sema/SemaOverload.cpp
@@ -1100,7 +1100,7 @@ bool Sema::isObjCPointerConversion(QualType FromType, QualType ToType,
bool &IncompatibleObjC) {
if (!getLangOptions().ObjC1)
return false;
-
+
// First, we handle all conversions on ObjC object pointer types.
const ObjCObjectPointerType* ToObjCPtr = ToType->getAs<ObjCObjectPointerType>();
const ObjCObjectPointerType *FromObjCPtr =
@@ -1164,6 +1164,16 @@ bool Sema::isObjCPointerConversion(QualType FromType, QualType ToType,
ConvertedType = ToType;
return true;
}
+ // Allow conversion of pointee being objective-c pointer to another one;
+ // as in I* to id.
+ if (FromPointeeType->getAs<ObjCObjectPointerType>() &&
+ ToPointeeType->getAs<ObjCObjectPointerType>() &&
+ isObjCPointerConversion(FromPointeeType, ToPointeeType, ConvertedType,
+ IncompatibleObjC)) {
+ ConvertedType = ToType;
+ return true;
+ }
+
// If we have pointers to functions or blocks, check whether the only
// differences in the argument and result types are in Objective-C
// pointer conversions. If so, we permit the conversion (but
OpenPOWER on IntegriCloud