diff options
-rw-r--r-- | lib/Sema/SemaCast.cpp | 2 | ||||
-rw-r--r-- | test/SemaObjC/warn-cast-of-sel-expr.m | 3 |
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/Sema/SemaCast.cpp b/lib/Sema/SemaCast.cpp index 6f3937353c..28b58279a5 100644 --- a/lib/Sema/SemaCast.cpp +++ b/lib/Sema/SemaCast.cpp @@ -1479,6 +1479,8 @@ void Sema::CheckCompatibleReinterpretCast(QualType SrcType, QualType DestType, static void DiagnoseCastOfObjCSEL(Sema &Self, const ExprResult &SrcExpr, QualType DestType) { QualType SrcType = SrcExpr.get()->getType(); + if (Self.Context.hasSameType(SrcType, DestType)) + return; if (const PointerType *SrcPtrTy = SrcType->getAs<PointerType>()) if (SrcPtrTy->isObjCSelType()) { QualType DT = DestType; diff --git a/test/SemaObjC/warn-cast-of-sel-expr.m b/test/SemaObjC/warn-cast-of-sel-expr.m index 97915a0094..1253db95d5 100644 --- a/test/SemaObjC/warn-cast-of-sel-expr.m +++ b/test/SemaObjC/warn-cast-of-sel-expr.m @@ -18,4 +18,7 @@ int main() { (void *const)s; // ok (const void *const)s; // ok + +// rdar://12859590 +(SEL)sel_registerName("foo"); // ok } |