[cfe-commits] r61229 - in /cfe/trunk: lib/Sema/SemaOverload.cpp test/SemaObjCXX/overload.mm
Douglas Gregor
dgregor at apple.com
Thu Dec 18 15:43:32 PST 2008
Author: dgregor
Date: Thu Dec 18 17:43:31 2008
New Revision: 61229
URL: http://llvm.org/viewvc/llvm-project?rev=61229&view=rev
Log:
Add some more implicit conversions for Objective-C++
Modified:
cfe/trunk/lib/Sema/SemaOverload.cpp
cfe/trunk/test/SemaObjCXX/overload.mm
Modified: cfe/trunk/lib/Sema/SemaOverload.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaOverload.cpp?rev=61229&r1=61228&r2=61229&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaOverload.cpp (original)
+++ cfe/trunk/lib/Sema/SemaOverload.cpp Thu Dec 18 17:43:31 2008
@@ -846,6 +846,16 @@
return true;
}
+ // Objective C++: Allow conversions between the Objective-C "id" and
+ // "Class", in either direction.
+ if ((Context.isObjCIdType(FromPointeeType) &&
+ Context.isObjCClassType(ToPointeeType)) ||
+ (Context.isObjCClassType(FromPointeeType) &&
+ Context.isObjCIdType(ToPointeeType))) {
+ ConvertedType = ToType;
+ return true;
+ }
+
return false;
}
@@ -864,6 +874,16 @@
/*DetectVirtual=*/false);
QualType FromPointeeType = FromPtrType->getPointeeType(),
ToPointeeType = ToPtrType->getPointeeType();
+
+ // Objective-C++ conversions are always okay.
+ // FIXME: We should have a different class of conversions for
+ // the Objective-C++ implicit conversions.
+ if (Context.isObjCIdType(FromPointeeType) ||
+ Context.isObjCIdType(ToPointeeType) ||
+ Context.isObjCClassType(FromPointeeType) ||
+ Context.isObjCClassType(ToPointeeType))
+ return false;
+
if (FromPointeeType->isRecordType() &&
ToPointeeType->isRecordType()) {
// We must have a derived-to-base conversion. Check an
Modified: cfe/trunk/test/SemaObjCXX/overload.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjCXX/overload.mm?rev=61229&r1=61228&r2=61229&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjCXX/overload.mm (original)
+++ cfe/trunk/test/SemaObjCXX/overload.mm Thu Dec 18 17:43:31 2008
@@ -1,4 +1,16 @@
// RUN: clang -fsyntax-only -verify %s
+ at interface Foo
+ at end
+
+ at implementation Foo
+
+void func(id);
+
++ zone {
+ func(self);
+ return self;
+}
+
@protocol P0
@end
More information about the cfe-commits
mailing list