diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2010-01-18 22:59:22 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-01-18 22:59:22 +0000 |
commit | 42ffdb32fb54616c28bce6d04b73546c574e133d (patch) | |
tree | 599c72f7834dcc3b789d9623082e3eb0ddd91db1 /clang/lib/Sema/SemaOverload.cpp | |
parent | 06828f025d7b0b3cbb0567f1ae36de25c2c7dea3 (diff) | |
download | bcm5719-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.cpp | 12 |
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 |