1 //===----------------------------------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 // UNSUPPORTED: c++03, c++11 10 // REQUIRES: use_system_cxx_lib && (x86_64-apple-macosx10.9 || \ 11 // REQUIRES: x86_64-apple-macosx10.10 || \ 12 // REQUIRES: x86_64-apple-macosx10.11 || \ 13 // REQUIRES: x86_64-apple-macosx10.12 || \ 14 // REQUIRES: x86_64-apple-macosx10.13 || \ 15 // REQUIRES: x86_64-apple-macosx10.14 || \ 16 // REQUIRES: x86_64-apple-macosx10.15) 17 18 19 // Test the availability markup on std::counting_semaphore and std::binary_semaphore. 20 21 #include <chrono> 22 #include <semaphore> 23 24 25 int main(int, char**) 26 { 27 { 28 // Tests for std::counting_semaphore with non-default template argument 29 std::counting_semaphore<20> sem(10); 30 sem.release(); // expected-error {{is unavailable}} 31 sem.release(5); // expected-error {{is unavailable}} 32 sem.acquire(); // expected-error {{is unavailable}} 33 sem.try_acquire_for(std::chrono::milliseconds{3}); // expected-error 1-2 {{is unavailable}} 34 sem.try_acquire(); // expected-error {{is unavailable}} 35 sem.try_acquire_until(std::chrono::steady_clock::now()); // expected-error 1-2 {{is unavailable}} 36 } 37 { 38 // Tests for std::counting_semaphore with default template argument 39 std::counting_semaphore<> sem(10); 40 sem.release(); // expected-error {{is unavailable}} 41 sem.release(5); // expected-error {{is unavailable}} 42 sem.acquire(); // expected-error {{is unavailable}} 43 sem.try_acquire_for(std::chrono::milliseconds{3}); // expected-error 1-2 {{is unavailable}} 44 sem.try_acquire(); // expected-error {{is unavailable}} 45 sem.try_acquire_until(std::chrono::steady_clock::now()); // expected-error 1-2 {{is unavailable}} 46 } 47 { 48 // Tests for std::binary_semaphore 49 std::binary_semaphore sem(10); 50 sem.release(); // expected-error {{is unavailable}} 51 sem.release(5); // expected-error {{is unavailable}} 52 sem.acquire(); // expected-error {{is unavailable}} 53 sem.try_acquire_for(std::chrono::milliseconds{3}); // expected-error 1-2 {{is unavailable}} 54 sem.try_acquire(); // expected-error {{is unavailable}} 55 sem.try_acquire_until(std::chrono::steady_clock::now()); // expected-error 1-2 {{is unavailable}} 56 } 57 } 58