Support Swift in platform availability attribute
Summary: This adds support for Swift platform availability attributes. It's largely a port of the changes made to https://github.com/apple/swift-clang/ for Swift availability attributes. Specifically, https://github.com/apple/swift-clang/commit/84b5a21c31cb5b0d7d958a478bc01964939b6952 and https://github.com/apple/swift-clang/commit/e5b87f265aede41c8381094bbf54e2715c8293b0 . The implementation of attribute_availability_swift is a little different and additional tests in test/Index/availability.c were added.
Reviewers: manmanren, friss, doug.gregor, arphaman, jfb, erik.pilkington, aaron.ballman
Reviewed By: aaron.ballman
Subscribers: aaron.ballman, ColinKinloch, jrmuizel, cfe-commits
Differential Revision: https://reviews.llvm.org/D50318
llvm-svn: 346633
2018-11-12 02:44:33 +00:00
// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fsyntax-only -fblocks -verify %s
2024-05-04 23:08:11 -07:00
// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -ast-dump %s | FileCheck %s
Support Swift in platform availability attribute
Summary: This adds support for Swift platform availability attributes. It's largely a port of the changes made to https://github.com/apple/swift-clang/ for Swift availability attributes. Specifically, https://github.com/apple/swift-clang/commit/84b5a21c31cb5b0d7d958a478bc01964939b6952 and https://github.com/apple/swift-clang/commit/e5b87f265aede41c8381094bbf54e2715c8293b0 . The implementation of attribute_availability_swift is a little different and additional tests in test/Index/availability.c were added.
Reviewers: manmanren, friss, doug.gregor, arphaman, jfb, erik.pilkington, aaron.ballman
Reviewed By: aaron.ballman
Subscribers: aaron.ballman, ColinKinloch, jrmuizel, cfe-commits
Differential Revision: https://reviews.llvm.org/D50318
llvm-svn: 346633
2018-11-12 02:44:33 +00:00
//
# if !__has_feature(attribute_availability_with_message)
# error "Missing __has_feature"
# endif
# if __has_feature(attribute_availability_swift)
# warning "okay"
// expected-warning@-1{{okay}}
# else
# error "Missing __has_feature"
# endif
extern int noSwiftGlobal1 __attribute__ ( ( availability ( swift , unavailable ) ) ) ;
// CHECK: AvailabilityAttr {{.*}}swift 0 0 0 Unavailable "" ""
extern int noSwiftGlobal1 __attribute__ ( ( availability ( macosx , introduced = 10.1 ) ) ) ; // okay
// CHECK: AvailabilityAttr {{.*}}Inherited swift 0 0 0 Unavailable "" ""
// CHECK: AvailabilityAttr {{.*}}macos 10.1 0 0 "" ""
extern int noSwiftGlobal1 __attribute__ ( ( availability ( swift , unavailable , message = " and this one has a message " ) ) ) ; // okay
// CHECK: AvailabilityAttr {{.*}}Inherited macos 10.1 0 0 "" ""
// CHECK: AvailabilityAttr {{.*}}swift 0 0 0 Unavailable "and this one has a message" ""
extern int noSwiftGlobal2 __attribute__ ( ( availability ( swift , introduced = 5 ) ) ) ; // expected-warning{{only 'unavailable' and 'deprecated' are supported for Swift availability}}
// CHECK: VarDecl
// CHECK-NOT: AvailabilityAttr
extern int noSwiftGlobal3 __attribute__ ( ( availability ( swift , deprecated , message = " t " ) ) ) ;
// CHECK: VarDecl
// CHECK: AvailabilityAttr {{.*}}swift 0 1 0 "t" ""