]> granicus.if.org Git - clang/commit
[ARC][ObjC++] Use ObjC semantic rules for comparisons between a pointer and
authorAlex Lorenz <arphaman@gmail.com>
Thu, 30 Mar 2017 13:48:33 +0000 (13:48 +0000)
committerAlex Lorenz <arphaman@gmail.com>
Thu, 30 Mar 2017 13:48:33 +0000 (13:48 +0000)
commit70b6167e97f394781c2f17660123fe0db92650bc
treebd5079ba971171ce810db253555a5642566cb7e4
parent0842d4121eb2ab6e52b291ad4d166b5311cea69a
[ARC][ObjC++] Use ObjC semantic rules for comparisons between a pointer and
an ObjC object pointer

When ARC is enabled in Objective-C++, comparisons between a pointer and
Objective-C object pointer typically result in errors like this:
"invalid operands to a binary expression". This error message can be quite
confusing as it doesn't provide a solution to the problem, unlike the non-C++
diagnostic: "implicit conversion of Objective-C pointer type 'id' to C pointer
type 'void *' requires a bridged cast" (it also provides fix-its). This commit
forces comparisons between pointers and Objective-C object pointers in ARC to
use the Objective-C semantic rules to ensure that a better diagnostic is
reported.

rdar://31103857

Differential Revision: https://reviews.llvm.org/D31177

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@299080 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaExpr.cpp
test/SemaObjCXX/arc-ptr-comparison.mm [new file with mode: 0644]