[Objective-C] Fix "weak-unavailable" warning with -fobjc-weak
authorBrian Kelley <bkelley@microsoft.com>
Wed, 29 Mar 2017 18:09:02 +0000 (18:09 +0000)
committerBrian Kelley <bkelley@microsoft.com>
Wed, 29 Mar 2017 18:09:02 +0000 (18:09 +0000)
commit11352a8fb9647d65bc46c190730769512d2cbad2
tree61b4c4dd61624c90abff87f51c8580b0275854c7
parentff211bb5a6cbbd52adc2618bcf0f29550207f670
[Objective-C] Fix "weak-unavailable" warning with -fobjc-weak

Summary: clang should produce the same errors Objective-C classes that cannot be assigned to weak pointers under both -fobjc-arc and -fobjc-weak. Check for ObjCWeak along with ObjCAutoRefCount when analyzing pointer conversions. Add an -fobjc-weak pass to the existing arc-unavailable-for-weakref test cases to verify the behavior is the same.

Reviewers: rsmith, doug.gregor, rjmccall

Reviewed By: rjmccall

Subscribers: cfe-commits

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

llvm-svn: 299014
clang/include/clang/Basic/LangOptions.h
clang/include/clang/Sema/Sema.h
clang/lib/Sema/SemaCast.cpp
clang/lib/Sema/SemaExpr.cpp
clang/lib/Sema/SemaExprCXX.cpp
clang/lib/Sema/SemaExprObjC.cpp
clang/lib/Sema/SemaPseudoObject.cpp
clang/test/SemaObjC/arc-unavailable-for-weakref.m
clang/test/SemaObjCXX/arc-unavailable-for-weakref.mm