forked from OSchip/llvm-project
Remove -Wobjc-weak-compat; there isn't a compelling use case for this.
llvm-svn: 252971
This commit is contained in:
parent
b883b01a8e
commit
d6da23d2df
|
@ -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<
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue