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 && target={{.+}}-apple-macosx10.{{9|10|11|12|13|14|15}} 11 12 13 // Test the availability markup on std::counting_semaphore and std::binary_semaphore. 14 15 #include <chrono> 16 #include <semaphore> 17 18 19 int main(int, char**) 20 { 21 { 22 // Tests for std::counting_semaphore with non-default template argument 23 std::counting_semaphore<20> sem(10); 24 sem.release(); // expected-error {{is unavailable}} 25 sem.release(5); // expected-error {{is unavailable}} 26 sem.acquire(); // expected-error {{is unavailable}} 27 sem.try_acquire_for(std::chrono::milliseconds{3}); // expected-error 1-2 {{is unavailable}} 28 sem.try_acquire(); // expected-error {{is unavailable}} 29 sem.try_acquire_until(std::chrono::steady_clock::now()); // expected-error 1-2 {{is unavailable}} 30 } 31 { 32 // Tests for std::counting_semaphore with default template argument 33 std::counting_semaphore<> sem(10); 34 sem.release(); // expected-error {{is unavailable}} 35 sem.release(5); // expected-error {{is unavailable}} 36 sem.acquire(); // expected-error {{is unavailable}} 37 sem.try_acquire_for(std::chrono::milliseconds{3}); // expected-error 1-2 {{is unavailable}} 38 sem.try_acquire(); // expected-error {{is unavailable}} 39 sem.try_acquire_until(std::chrono::steady_clock::now()); // expected-error 1-2 {{is unavailable}} 40 } 41 { 42 // Tests for std::binary_semaphore 43 std::binary_semaphore sem(10); 44 sem.release(); // expected-error {{is unavailable}} 45 sem.release(5); // expected-error {{is unavailable}} 46 sem.acquire(); // expected-error {{is unavailable}} 47 sem.try_acquire_for(std::chrono::milliseconds{3}); // expected-error 1-2 {{is unavailable}} 48 sem.try_acquire(); // expected-error {{is unavailable}} 49 sem.try_acquire_until(std::chrono::steady_clock::now()); // expected-error 1-2 {{is unavailable}} 50 } 51 } 52