From: Jordan Rose Date: Thu, 30 Apr 2015 17:20:35 +0000 (+0000) Subject: Don't warn about use of deprecated API when the containing context is unavailable. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1e3d41bd8e2c58e3176ac2684a4f61b9fcb6bc80;p=clang Don't warn about use of deprecated API when the containing context is unavailable. This probably won't come up much, but it seems tidier. Related to rdar://problem/20713550 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236242 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp index 43c96d9c76..0daeecfda9 100644 --- a/lib/Sema/SemaDeclAttr.cpp +++ b/lib/Sema/SemaDeclAttr.cpp @@ -5211,7 +5211,7 @@ static void DoEmitAvailabilityWarning(Sema &S, Sema::AvailabilityDiagnostic K, // Don't warn if our current context is deprecated or unavailable. switch (K) { case Sema::AD_Deprecation: - if (isDeclDeprecated(Ctx)) + if (isDeclDeprecated(Ctx) || isDeclUnavailable(Ctx)) return; diag = !ObjCPropertyAccess ? diag::warn_deprecated : diag::warn_property_method_deprecated; diff --git a/test/Sema/attr-availability.c b/test/Sema/attr-availability.c index ce64fab398..d003e1e2e3 100644 --- a/test/Sema/attr-availability.c +++ b/test/Sema/attr-availability.c @@ -98,7 +98,7 @@ enum AllUnavailable { enum User { UserOD = OriginalDeprecated, // expected-warning {{deprecated}} UserODDeprecated __attribute__((availability(macosx, deprecated=10.2))) = OriginalDeprecated, - UserODUnavailable __attribute__((availability(macosx, unavailable))) = OriginalDeprecated, // expected-warning {{deprecated}} + UserODUnavailable __attribute__((availability(macosx, unavailable))) = OriginalDeprecated, UserOU = OriginalUnavailable, // expected-error {{unavailable}} UserOUDeprecated __attribute__((availability(macosx, deprecated=10.2))) = OriginalUnavailable, // expected-error {{unavailable}} @@ -106,7 +106,7 @@ enum User { UserAD = AllDeprecatedCase, // expected-warning {{deprecated}} UserADDeprecated __attribute__((availability(macosx, deprecated=10.2))) = AllDeprecatedCase, - UserADUnavailable __attribute__((availability(macosx, unavailable))) = AllDeprecatedCase, // expected-warning {{deprecated}} + UserADUnavailable __attribute__((availability(macosx, unavailable))) = AllDeprecatedCase, UserADU = AllDeprecatedUnavailable, // expected-error {{unavailable}} UserADUDeprecated __attribute__((availability(macosx, deprecated=10.2))) = AllDeprecatedUnavailable, // expected-error {{unavailable}} @@ -140,17 +140,17 @@ enum UserDeprecated { } __attribute__((availability(macosx, deprecated=10.2))); enum UserUnavailable { - UserUnavailableOD = OriginalDeprecated, // expected-warning {{deprecated}} + UserUnavailableOD = OriginalDeprecated, UserUnavailableODDeprecated __attribute__((availability(macosx, deprecated=10.2))) = OriginalDeprecated, - UserUnavailableODUnavailable __attribute__((availability(macosx, unavailable))) = OriginalDeprecated, // expected-warning {{deprecated}} + UserUnavailableODUnavailable __attribute__((availability(macosx, unavailable))) = OriginalDeprecated, UserUnavailableOU = OriginalUnavailable, UserUnavailableOUDeprecated __attribute__((availability(macosx, deprecated=10.2))) = OriginalUnavailable, UserUnavailableOUUnavailable __attribute__((availability(macosx, unavailable))) = OriginalUnavailable, - UserUnavailableAD = AllDeprecatedCase, // expected-warning {{deprecated}} + UserUnavailableAD = AllDeprecatedCase, UserUnavailableADDeprecated __attribute__((availability(macosx, deprecated=10.2))) = AllDeprecatedCase, - UserUnavailableADUnavailable __attribute__((availability(macosx, unavailable))) = AllDeprecatedCase, // expected-warning {{deprecated}} + UserUnavailableADUnavailable __attribute__((availability(macosx, unavailable))) = AllDeprecatedCase, UserUnavailableADU = AllDeprecatedUnavailable, UserUnavailableADUDeprecated __attribute__((availability(macosx, deprecated=10.2))) = AllDeprecatedUnavailable,