1 // RUN: %clang_cc1 -std=c++20 -Wunsafe-buffer-usage \ 2 // RUN: -fsafe-buffer-usage-suggestions -verify %s 3 beginUnclosed(int * x)4void beginUnclosed(int * x) { 5 #pragma clang unsafe_buffer_usage begin 6 7 #pragma clang unsafe_buffer_usage begin // expected-error{{already inside '#pragma unsafe_buffer_usage'}} 8 x++; 9 #pragma clang unsafe_buffer_usage end 10 } 11 endUnopened(int * x)12void endUnopened(int *x) { 13 #pragma clang unsafe_buffer_usage end // expected-error{{not currently inside '#pragma unsafe_buffer_usage'}} 14 15 #pragma clang unsafe_buffer_usage begin 16 x++; 17 #pragma clang unsafe_buffer_usage end 18 } 19 wrongOption()20void wrongOption() { 21 #pragma clang unsafe_buffer_usage start // expected-error{{expected 'begin' or 'end'}} 22 #pragma clang unsafe_buffer_usage close // expected-error{{expected 'begin' or 'end'}} 23 } 24 unclosed(int * p1)25void unclosed(int * p1) { 26 #pragma clang unsafe_buffer_usage begin 27 // End of the included file will not raise the unclosed region warning: 28 #define _INCLUDE_NO_WARN 29 #include "warn-unsafe-buffer-usage-pragma.h" 30 #pragma clang unsafe_buffer_usage end 31 32 // End of this file raises the warning: 33 #pragma clang unsafe_buffer_usage begin // expected-error{{'#pragma unsafe_buffer_usage' was not ended}} 34 } 35