Remove -Wobjc-weak-compat; there isn't a compelling use case for this.

llvm-svn: 252971
This commit is contained in:
John McCall 2015-11-12 23:39:39 +00:00
parent b883b01a8e
commit d6da23d2df
3 changed files with 15 additions and 20 deletions

View File

@ -4561,9 +4561,6 @@ def err_synthesizing_arc_weak_property_disabled : Error<
def err_synthesizing_arc_weak_property_no_runtime : Error<
"cannot synthesize weak property because the current deployment target "
"does not support weak references">;
def warn_objc_weak_compat : Warning<
"the meaning of __weak has changed in manual reference-counting">,
InGroup<DiagGroup<"objc-weak-compat">>, DefaultIgnore;
def err_arc_unsupported_weak_class : Error<
"class is incompatible with __weak references">;
def err_arc_weak_unavailable_assign : Error<

View File

@ -5187,6 +5187,18 @@ static bool handleObjCOwnershipTypeAttr(TypeProcessingState &state,
type = S.Context.getAttributedType(AttributedType::attr_objc_ownership,
origType, type);
auto diagnoseOrDelay = [](Sema &S, SourceLocation loc,
unsigned diagnostic, QualType type) {
if (S.DelayedDiagnostics.shouldDelayDiagnostics()) {
S.DelayedDiagnostics.add(
sema::DelayedDiagnostic::makeForbiddenType(
S.getSourceManager().getExpansionLoc(loc),
diagnostic, type, /*ignored*/ 0));
} else {
S.Diag(loc, diagnostic);
}
};
// Sometimes, __weak isn't allowed.
if (lifetime == Qualifiers::OCL_Weak &&
!S.getLangOpts().ObjCWeak && !NonObjCPointer) {
@ -5197,26 +5209,12 @@ static bool handleObjCOwnershipTypeAttr(TypeProcessingState &state,
: diag::err_arc_weak_no_runtime);
// In any case, delay the diagnostic until we know what we're parsing.
if (S.DelayedDiagnostics.shouldDelayDiagnostics()) {
S.DelayedDiagnostics.add(
sema::DelayedDiagnostic::makeForbiddenType(
S.getSourceManager().getExpansionLoc(AttrLoc),
diagnostic, type, /*ignored*/ 0));
} else {
S.Diag(AttrLoc, diagnostic);
}
diagnoseOrDelay(S, AttrLoc, diagnostic, type);
attr.setInvalid();
return true;
}
// If we accepted __weak, we might still need to warn about it.
if (lifetime == Qualifiers::OCL_Weak &&
!S.getLangOpts().ObjCAutoRefCount &&
S.getLangOpts().ObjCWeak) {
S.Diag(AttrLoc, diag::warn_objc_weak_compat);
}
// Forbid __weak for class objects marked as
// objc_arc_weak_reference_unavailable
if (lifetime == Qualifiers::OCL_Weak) {

View File

@ -1,5 +1,5 @@
// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fobjc-weak -verify -Weverything -Wno-objc-weak-compat %s
// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fobjc-weak -fsyntax-only -verify -Weverything -Wno-objc-weak-compat %s
// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fobjc-weak -verify -Weverything %s
// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fobjc-weak -fsyntax-only -verify -Weverything %s
// rdar://12103400
@class NSString;