]> granicus.if.org Git - clang/commit
[Sema][ObjC] Don't warn about an implicitly retained self if the
authorAkira Hatanaka <ahatanaka@apple.com>
Wed, 17 Apr 2019 23:14:44 +0000 (23:14 +0000)
committerAkira Hatanaka <ahatanaka@apple.com>
Wed, 17 Apr 2019 23:14:44 +0000 (23:14 +0000)
commit60c28aa5e61234203c655d857fed2e1984905f91
tree816dd61c42e4957dad15f2dfdf7a57be5deaf98e
parent3f087b48e218e54bf8bce401db003fc98bc8a886
[Sema][ObjC] Don't warn about an implicitly retained self if the
retaining block and all of the enclosing blocks are non-escaping.

If the block implicitly retaining self doesn't escape, there is no risk
of creating retain cycles, so clang shouldn't diagnose it and force
users to add self-> to silence the diagnostic.

Also, fix a bug where clang was failing to diagnose an implicitly
retained self inside a c++ lambda nested inside a block.

rdar://problem/25059955

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358624 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/DeclBase.h
include/clang/Sema/Sema.h
lib/Sema/SemaDecl.cpp
lib/Sema/SemaDeclObjC.cpp
lib/Sema/SemaExpr.cpp
test/SemaObjC/warn-implicit-self-in-block.m [deleted file]
test/SemaObjCXX/warn-implicit-self-in-block.mm [new file with mode: 0644]