DHowett-MSFT planned changes to this revision. DHowett-MSFT marked an inline comment as done. DHowett-MSFT added inline comments.
================ Comment at: lib/Sema/SemaExpr.cpp:7749 + // id (or strictly compatible object type) -> T^ + if (getLangOpts().ObjC1 && RHSType->isBlockCompatibleObjCPointerType(Context)) { Kind = CK_AnyPointerToBlockPointerCast; ---------------- theraven wrote: > Do we want to allow implicit casts for all object types to block types for > assignment, or only for null pointers? We definitely want to allow `nil` to > be assigned to a block type, but I would lean slightly to requiring an > implicit cast. > > Ideally, I think we'd allow this but warn, because casting from an arbitrary > ObjC type to a block incorrectly can cause exciting security vulnerabilities > if it's done incorrectly and we should encourage people to check these casts > (`nil` is always safe though - as long as somewhere else checks the > nullability attributes). I don't actually have a compelling use case for widening assignability here. I'm dropping this part of the patch. I do think it should be valid, perhaps with a warning. It feels incorrect for there to be valid comparison cases that are not valid assignment cases (here), but that position doesn't hold up under scrutiny. Repository: rC Clang https://reviews.llvm.org/D44580 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits