diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CodeGenObjC/attr-availability.m | 24 | ||||
-rw-r--r-- | clang/test/Parser/attr-availability.c | 9 | ||||
-rw-r--r-- | clang/test/Sema/attr-availability-ios.c | 15 | ||||
-rw-r--r-- | clang/test/Sema/attr-availability-macosx.c | 15 | ||||
-rw-r--r-- | clang/test/Sema/attr-availability.c | 6 | ||||
-rw-r--r-- | clang/test/SemaCXX/attr-unavailable.cpp | 2 | ||||
-rw-r--r-- | clang/test/SemaObjC/protocol-attribute.m | 2 | ||||
-rw-r--r-- | clang/test/SemaObjC/special-dep-unavail-warning.m | 6 |
8 files changed, 73 insertions, 6 deletions
diff --git a/clang/test/CodeGenObjC/attr-availability.m b/clang/test/CodeGenObjC/attr-availability.m new file mode 100644 index 00000000000..4f1fad81b30 --- /dev/null +++ b/clang/test/CodeGenObjC/attr-availability.m @@ -0,0 +1,24 @@ +// RUN: %clang_cc1 -fobjc-nonfragile-abi "-triple" "x86_64-apple-darwin8.0.0" -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-10_4 %s +// RUN: %clang_cc1 -fobjc-nonfragile-abi "-triple" "x86_64-apple-darwin9.0.0" -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-10_5 %s +// RUN: %clang_cc1 -fobjc-nonfragile-abi "-triple" "x86_64-apple-darwin10.0.0" -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-10_6 %s + +// CHECK-10_4: @"OBJC_CLASS_$_WeakClass1" = extern_weak global +// CHECK-10_5: @"OBJC_CLASS_$_WeakClass1" = external global +// CHECK-10_6: @"OBJC_CLASS_$_WeakClass1" = external global +__attribute__((availability(macosx,introduced=10.5))) +@interface WeakClass1 @end + +@implementation WeakClass1(MyCategory) @end + +@implementation WeakClass1(YourCategory) @end + +// CHECK-10_4: @"OBJC_CLASS_$_WeakClass2" = extern_weak global +// CHECK-10_5: @"OBJC_CLASS_$_WeakClass2" = extern_weak global +// CHECK-10_6: @"OBJC_CLASS_$_WeakClass2" = external global +__attribute__((availability(macosx,introduced=10.6))) +@interface WeakClass2 @end + +@implementation WeakClass2(MyCategory) @end + +@implementation WeakClass2(YourCategory) @end + diff --git a/clang/test/Parser/attr-availability.c b/clang/test/Parser/attr-availability.c new file mode 100644 index 00000000000..10d55b558b8 --- /dev/null +++ b/clang/test/Parser/attr-availability.c @@ -0,0 +1,9 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s +void f0() __attribute__((availability(macosx,introduced=10.2,deprecated=10.4,obsoleted=10.6))); + +void f1() __attribute__((availability(macosx,deprecated=10.4,introduced=10.2,obsoleted=10.6))); + +void f2() __attribute__((availability(ios,deprecated=10.4.7,introduced=10,obsoleted=10.6))); + +void f3() __attribute__((availability(ios,deprecated=10.4.7,introduced=10,obsoleted=10.6,introduced=10.2))); // expected-error{{redundant 'introduced' availability change; only the last specified change will be used}} + diff --git a/clang/test/Sema/attr-availability-ios.c b/clang/test/Sema/attr-availability-ios.c new file mode 100644 index 00000000000..e531d6bf313 --- /dev/null +++ b/clang/test/Sema/attr-availability-ios.c @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 "-triple" "x86_64-apple-darwin3.0.0-iphoneos" -fsyntax-only -verify %s + +void f0(int) __attribute__((availability(ios,introduced=2.0,deprecated=2.1))); +void f1(int) __attribute__((availability(ios,introduced=2.1))); +void f2(int) __attribute__((availability(ios,introduced=2.0,deprecated=3.0))); +void f3(int) __attribute__((availability(ios,introduced=3.0))); +void f4(int) __attribute__((availability(macosx,introduced=10.1,deprecated=10.3,obsoleted=10.5), availability(ios,introduced=2.0,deprecated=2.1,obsoleted=3.0))); // expected-note{{explicitly marked unavailable}} + +void test() { + f0(0); // expected-warning{{'f0' is deprecated: first deprecated in iOS 2.1}} + f1(0); + f2(0); // expected-warning{{'f2' is deprecated: first deprecated in iOS 3.0}} + f3(0); + f4(0); // expected-error{{f4' is unavailable: obsoleted in iOS 3.0}} +} diff --git a/clang/test/Sema/attr-availability-macosx.c b/clang/test/Sema/attr-availability-macosx.c new file mode 100644 index 00000000000..b43da6f59f2 --- /dev/null +++ b/clang/test/Sema/attr-availability-macosx.c @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 "-triple" "x86_64-apple-darwin9.0.0" -fsyntax-only -verify %s + +void f0(int) __attribute__((availability(macosx,introduced=10.4,deprecated=10.6))); +void f1(int) __attribute__((availability(macosx,introduced=10.5))); +void f2(int) __attribute__((availability(macosx,introduced=10.4,deprecated=10.5))); +void f3(int) __attribute__((availability(macosx,introduced=10.6))); +void f4(int) __attribute__((availability(macosx,introduced=10.1,deprecated=10.3,obsoleted=10.5), availability(ios,introduced=2.0,deprecated=3.0))); // expected-note{{explicitly marked unavailable}} + +void test() { + f0(0); + f1(0); + f2(0); // expected-warning{{'f2' is deprecated: first deprecated in Mac OS X 10.5}} + f3(0); + f4(0); // expected-error{{f4' is unavailable: obsoleted in Mac OS X 10.5}} +} diff --git a/clang/test/Sema/attr-availability.c b/clang/test/Sema/attr-availability.c new file mode 100644 index 00000000000..1314cf5a5b0 --- /dev/null +++ b/clang/test/Sema/attr-availability.c @@ -0,0 +1,6 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s + +void f0() __attribute__((availability(macosx,introduced=10.4,deprecated=10.2))); // expected-warning{{feature cannot be deprecated in Mac OS X version 10.2 before it was introduced in version 10.4; attribute ignored}} +void f1() __attribute__((availability(ios,obsoleted=2.1,deprecated=3.0))); // expected-warning{{feature cannot be obsoleted in iOS version 2.1 before it was deprecated in version 3.0; attribute ignored}} + +void f2() __attribute__((availability(otheros,introduced=2.2))); // expected-warning{{unknown platform 'otheros' in availability macro}} diff --git a/clang/test/SemaCXX/attr-unavailable.cpp b/clang/test/SemaCXX/attr-unavailable.cpp index fe3e8b14706..5f34ed99041 100644 --- a/clang/test/SemaCXX/attr-unavailable.cpp +++ b/clang/test/SemaCXX/attr-unavailable.cpp @@ -25,6 +25,6 @@ namespace radar9046492 { void foo() FOO; // expected-note {{candidate function has been explicitly made unavailable}} void bar() { - foo(); // expected-error {{call to unavailable function 'foo' not available - replaced}} + foo(); // expected-error {{call to unavailable function 'foo': not available - replaced}} } } diff --git a/clang/test/SemaObjC/protocol-attribute.m b/clang/test/SemaObjC/protocol-attribute.m index 52c980396ed..178774c6640 100644 --- a/clang/test/SemaObjC/protocol-attribute.m +++ b/clang/test/SemaObjC/protocol-attribute.m @@ -40,7 +40,7 @@ Class <MyProto1> clsP1 = 0; // expected-warning {{'MyProto1' is deprecated}} __attribute ((unavailable)) __attribute ((deprecated)) @protocol XProto; // expected-note{{marked unavailable}} -id <XProto> idX = 0; // expected-error {{'XProto' is unavailable}} expected-warning {{'XProto' is deprecated}} +id <XProto> idX = 0; // expected-error {{'XProto' is unavailable}} int main () { diff --git a/clang/test/SemaObjC/special-dep-unavail-warning.m b/clang/test/SemaObjC/special-dep-unavail-warning.m index b7a2d663441..8e03e1c4c28 100644 --- a/clang/test/SemaObjC/special-dep-unavail-warning.m +++ b/clang/test/SemaObjC/special-dep-unavail-warning.m @@ -36,10 +36,8 @@ void test(C *c) { [c unavailMeth1]; // expected-warning {{'unavailMeth1' maybe unavailable because receiver type is unknown}} [c depInA2]; // expected-warning {{'depInA2' maybe deprecated because receiver type is unknown}} [c unavailMeth2]; // expected-warning {{'unavailMeth2' maybe unavailable because receiver type is unknown}} - [c depunavailInA]; // expected-warning {{'depunavailInA' maybe deprecated because receiver type is unknown}} \ - // expected-warning {{'depunavailInA' maybe unavailable because receiver type is unknown}} - [c depunavailInA1]; // expected-warning {{'depunavailInA1' maybe deprecated because receiver type is unknown}} \ - // expected-warning {{'depunavailInA1' maybe unavailable because receiver type is unknown}} + [c depunavailInA]; // expected-warning {{'depunavailInA' maybe unavailable because receiver type is unknown}} + [c depunavailInA1];// expected-warning {{'depunavailInA1' maybe unavailable because receiver type is unknown}} [c FuzzyMeth]; // expected-warning {{'FuzzyMeth' maybe deprecated because receiver type is unknown}} [c FuzzyMeth1]; // expected-warning {{'FuzzyMeth1' maybe deprecated because receiver type is unknown}} |