forked from OSchip/llvm-project
92 lines
3.3 KiB
Objective-C
92 lines
3.3 KiB
Objective-C
// RUN: %clang_cc1 -triple x86_64-apple-ios14-macabi -fblocks -fsyntax-only -verify %s
|
|
// RUN: %clang_cc1 -xobjective-c++ -triple x86_64-apple-ios14-macabi -fblocks -fsyntax-only -verify %s
|
|
|
|
// RUN: %clang_cc1 -triple x86_64-apple-ios14.1-macabi -DNO_WARNING -fblocks -fsyntax-only -verify %s
|
|
|
|
#ifdef NO_WARNING
|
|
// expected-no-diagnostics
|
|
#endif
|
|
|
|
#define AVAILABLE_PREV __attribute__((availability(macCatalyst, introduced = 13.1)))
|
|
#define AVAILABLE_CURRENT __attribute__((availability(macCatalyst, introduced = 14)))
|
|
#define AVAILABLE_NEXT __attribute__((availability(macCatalyst, introduced = 14.1)))
|
|
|
|
void previouslyAvailable() AVAILABLE_PREV;
|
|
void currentlyAvailable() AVAILABLE_CURRENT;
|
|
void willBeAvailabile() AVAILABLE_NEXT;
|
|
#ifndef NO_WARNING
|
|
// expected-note@-2 {{'willBeAvailabile' has been marked as being introduced in macCatalyst 14.1 here, but the deployment target is macCatalyst 14.0.0}}
|
|
#endif
|
|
|
|
|
|
typedef struct {
|
|
|
|
} Record AVAILABLE_NEXT;
|
|
#ifndef NO_WARNING
|
|
// expected-note@-2 {{'Record' has been marked as being introduced in macCatalyst 14.1 here, but the deployment target is macCatalyst 14.0.0}}
|
|
#endif
|
|
|
|
AVAILABLE_PREV
|
|
Record var;
|
|
#ifndef NO_WARNING
|
|
// expected-warning@-2 {{'Record' is only available on macCatalyst 14.1 or newer}}
|
|
// expected-note@-3 {{annotate 'var' with an availability attribute to silence this warnin}}
|
|
#endif
|
|
|
|
AVAILABLE_NEXT
|
|
Record var2;
|
|
|
|
void test() {
|
|
previouslyAvailable();
|
|
currentlyAvailable();
|
|
willBeAvailabile();
|
|
#ifndef NO_WARNING
|
|
// expected-warning@-2 {{'willBeAvailabile' is only available on macCatalyst 14.1 or newer}}
|
|
// expected-note@-3 {{enclose 'willBeAvailabile' in an @available check to silence this warning}}
|
|
#endif
|
|
if (@available(maccatalyst 14.1, *))
|
|
willBeAvailabile(); // OK
|
|
if (@available(ios 14.1, *))
|
|
willBeAvailabile(); // Also OK
|
|
if (@available(macCatalyst 14.1, *))
|
|
willBeAvailabile(); // OK
|
|
}
|
|
|
|
void previouslyAvailableIOS() __attribute__((availability(ios, introduced = 10)));
|
|
void currentlyAvailableIOS() __attribute__((availability(ios, introduced = 14)));
|
|
void willBeAvailabileIOS() __attribute__((availability(ios, introduced = 14.1)));
|
|
#ifndef NO_WARNING
|
|
// expected-note@-2 {{'willBeAvailabileIOS' has been marked as being introduced in macCatalyst 14.1 here, but the deployment target is macCatalyst 14.0.0}}
|
|
#endif
|
|
|
|
void testIOSAvailabilityAlsoWorks() {
|
|
previouslyAvailableIOS();
|
|
currentlyAvailableIOS();
|
|
willBeAvailabileIOS();
|
|
#ifndef NO_WARNING
|
|
// expected-warning@-2 {{'willBeAvailabileIOS' is only available on macCatalyst 14.1 or newer}}
|
|
// expected-note@-3 {{enclose 'willBeAvailabileIOS' in an @available check to silence this warning}}
|
|
#endif
|
|
if (@available(macCatalyst 14.1, *))
|
|
willBeAvailabileIOS(); // OK
|
|
if (@available(ios 14.1, *))
|
|
willBeAvailabile(); // Also OK
|
|
}
|
|
|
|
typedef struct {
|
|
|
|
} Record2 __attribute__((availability(ios, introduced = 14.1)));
|
|
#ifndef NO_WARNING
|
|
// expected-note@-2 {{'Record2' has been marked as being introduced in macCatalyst 14.1 here, but the deployment target is macCatalyst 14.0.0}}
|
|
#endif
|
|
|
|
__attribute__((availability(ios, introduced = 10)))
|
|
Record2 var11;
|
|
#ifndef NO_WARNING
|
|
// expected-warning@-2 {{'Record2' is only available on macCatalyst 14.1 or newer}}
|
|
// expected-note@-3 {{annotate 'var11' with an availability attribute to silence this warnin}}
|
|
#endif
|
|
|
|
__attribute__((availability(ios, introduced = 14.1)))
|
|
Record2 var12;
|