ObjectiveC. Continuing implementation of objc_bridge_related
attribute in sema and issuing a variety of diagnostics lazily
for misuse of this attribute (and what to do) when converting
from CF types to ObjectiveC types (and vice versa).
// rdar://15499111
llvm-svn: 196629
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index 3db3e38..8efdffa 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -10639,6 +10639,9 @@
MayHaveConvFixit = true;
break;
case IncompatiblePointer:
+ if (getLangOpts().ObjC1 &&
+ CheckObjCBridgeRelatedConversions(Loc, DstType, SrcType))
+ return false;
MakeObjCStringLiteralFixItHint(*this, DstType, SrcExpr, Hint, IsNSString);
DiagKind =
(Action == AA_Passing_CFAudited ?
@@ -10718,6 +10721,9 @@
DiagKind = diag::err_arc_weak_unavailable_assign;
break;
case Incompatible:
+ if (getLangOpts().ObjC1 &&
+ CheckObjCBridgeRelatedConversions(Loc, DstType, SrcType))
+ return true;
DiagKind = diag::err_typecheck_convert_incompatible;
ConvHints.tryToFixConversion(SrcExpr, SrcType, DstType, *this);
MayHaveConvFixit = true;