summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaOverload.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-03-15 18:36:00 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-03-15 18:36:00 +0000
commitb397e43dea379bd436dda3fa92da449deaf70244 (patch)
tree85a534793ff9020e5dc93c73145ea225781117ea /clang/lib/Sema/SemaOverload.cpp
parenta3e9c9ca7becdc621410f76c6c18495412eaf7b4 (diff)
downloadbcm5719-llvm-b397e43dea379bd436dda3fa92da449deaf70244.tar.gz
bcm5719-llvm-b397e43dea379bd436dda3fa92da449deaf70244.zip
objective-c++ must take into account qualifiers when
considering valid objc pointer converions. llvm-svn: 98557
Diffstat (limited to 'clang/lib/Sema/SemaOverload.cpp')
-rw-r--r--clang/lib/Sema/SemaOverload.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp
index ff59fc3a7d3..a58b33f97f2 100644
--- a/clang/lib/Sema/SemaOverload.cpp
+++ b/clang/lib/Sema/SemaOverload.cpp
@@ -1135,6 +1135,12 @@ bool Sema::isObjCPointerConversion(QualType FromType, QualType ToType,
// Objective C++: We're able to convert from a pointer to an
// interface to a pointer to a different interface.
if (Context.canAssignObjCInterfaces(ToObjCPtr, FromObjCPtr)) {
+ const ObjCInterfaceType* LHS = ToObjCPtr->getInterfaceType();
+ const ObjCInterfaceType* RHS = FromObjCPtr->getInterfaceType();
+ if (getLangOptions().CPlusPlus && LHS && RHS &&
+ !ToObjCPtr->getPointeeType().isAtLeastAsQualifiedAs(
+ FromObjCPtr->getPointeeType()))
+ return false;
ConvertedType = ToType;
return true;
}
OpenPOWER on IntegriCloud