From 50f2b7f6db1ca023975d90a86a2180601cd9138c Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 22 Oct 2025 21:56:01 -0700 Subject: [PATCH 01/10] Improve blocks against Clang. Drop the undocumented `_SILENCE_CLANG_COROUTINE_MESSAGE` escape hatch. Emit a numbered STL1009 `static_assert` instead of using preprocessor `#error`. Mention C++23 ``. Add the block to ``, which doesn't necessarily drag in ``. (`` might actually work for Clang, but I don't want to increase our support burden.) --- stl/inc/experimental/coroutine | 8 ++++---- stl/inc/experimental/generator | 5 +++++ stl/inc/yvals_core.h | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/stl/inc/experimental/coroutine b/stl/inc/experimental/coroutine index 4bf7bec477c..633b2edf806 100644 --- a/stl/inc/experimental/coroutine +++ b/stl/inc/experimental/coroutine @@ -25,10 +25,10 @@ _STL_DISABLE_CLANG_WARNINGS #pragma push_macro("new") #undef new -#if defined(__clang__) && !defined(_SILENCE_CLANG_COROUTINE_MESSAGE) -#error The , , and \ -headers do not support Clang, but the C++20 header does. -#endif // defined(__clang__) && !defined(_SILENCE_CLANG_COROUTINE_MESSAGE) +#ifdef __clang__ +_EMIT_STL_ERROR(STL1009, "The , , and " + "headers do not support Clang, but the C++20 and C++23 headers do."); +#endif // defined(__clang__) #ifdef __cpp_impl_coroutine #error The and headers are only supported with \ diff --git a/stl/inc/experimental/generator b/stl/inc/experimental/generator index fb39c703c2a..b3fdce05524 100644 --- a/stl/inc/experimental/generator +++ b/stl/inc/experimental/generator @@ -13,6 +13,11 @@ #endif #include +#ifdef __clang__ +_EMIT_STL_ERROR(STL1009, "The , , and " + "headers do not support Clang, but the C++20 and C++23 headers do."); +#endif // defined(__clang__) + #if defined(__cpp_impl_coroutine) #include #elif defined(__cpp_coroutines) diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index 0d7cbd7ed47..f74f6a1625e 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -1521,7 +1521,7 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect // next warning number: STL4049 -// next error number: STL1009 +// next error number: STL1010 // P0619R4 Removing C++17-Deprecated Features #ifndef _HAS_FEATURES_REMOVED_IN_CXX20 From ce089be4455accd0b9d64ecde18caebe43c7b513 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 22 Oct 2025 22:28:27 -0700 Subject: [PATCH 02/10] Improve message when wrongly including ``. `__cpp_impl_coroutine` indicates that modern coroutines are available, so don't waste time explaining how the experimental headers worked. Instead, explain to the user why they're in modern mode (clearly distinguishing C++20 which has modern support by default, from C++14/17 explicitly opting into Future Technology with /await:strict). Then tell them to include the Standard header, and not to include the experimental headers. --- stl/inc/experimental/coroutine | 5 +++-- stl/inc/yvals_core.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/stl/inc/experimental/coroutine b/stl/inc/experimental/coroutine index 633b2edf806..fe5a260c564 100644 --- a/stl/inc/experimental/coroutine +++ b/stl/inc/experimental/coroutine @@ -31,8 +31,9 @@ _EMIT_STL_ERROR(STL1009, "The , #endif // defined(__clang__) #ifdef __cpp_impl_coroutine -#error The and headers are only supported with \ -/await and implement pre-C++20 coroutine support. Use for standard C++20 coroutines. +_EMIT_STL_ERROR(STL1010, "You're compiling with support for standard C++20 coroutines " + "(also available with /await:strict in C++14/17), so you should include " + "instead of and ."); #endif // defined(__cpp_impl_coroutine) // intrinsics used in implementation of coroutine_handle diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index f74f6a1625e..741d813c821 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -1521,7 +1521,7 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect // next warning number: STL4049 -// next error number: STL1010 +// next error number: STL1011 // P0619R4 Removing C++17-Deprecated Features #ifndef _HAS_FEATURES_REMOVED_IN_CXX20 From b59941c1dc80e6dd246fbb48b04db4b8d781a837 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 22 Oct 2025 22:46:42 -0700 Subject: [PATCH 03/10] Improve the error message when wrongly including ``. Explain how compiler support for either legacy coroutines or standard C++20 coroutines is needed, but then guide the user towards including C++23 ``. --- stl/inc/experimental/generator | 5 ++++- stl/inc/yvals_core.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/stl/inc/experimental/generator b/stl/inc/experimental/generator index b3fdce05524..ba1758bcc9b 100644 --- a/stl/inc/experimental/generator +++ b/stl/inc/experimental/generator @@ -23,7 +23,10 @@ _EMIT_STL_ERROR(STL1009, "The , #elif defined(__cpp_coroutines) #include #else // ^^^ legacy coroutines / no coroutine support vvv -#error requires /std:c++latest or /await compiler options +_EMIT_STL_ERROR(STL1011, "You've included the header without compiler support for " + "legacy coroutines (available with the deprecated /await compiler option) or " + "standard C++20 coroutines (also available with /await:strict in C++14/17). " + "You should include C++23 instead of ."); #endif // ^^^ no coroutine support ^^^ #pragma pack(push, _CRT_PACKING) diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index 741d813c821..8bda4764655 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -1521,7 +1521,7 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect // next warning number: STL4049 -// next error number: STL1011 +// next error number: STL1012 // P0619R4 Removing C++17-Deprecated Features #ifndef _HAS_FEATURES_REMOVED_IN_CXX20 From 3198d1a7fbf0fe6b35b427f9a28766aaefbbb871 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 22 Oct 2025 23:01:30 -0700 Subject: [PATCH 04/10] Improve `` warnings. Make the warning for /await sound more dire by saying that `` is "incompatible" instead of merely "not available". Emphasize that it is "the deprecated /await compiler option", making it clear that it should be removed. Don't say "or use /await:strict for standard coroutines". If the user is in C++20 or later mode, removing deprecated /await is sufficient. If they're in C++14/17 mode, warning STL4038 immediately below will tell them about /await:strict. Don't tell users to use ``. Slightly clarify warning STL4038, explaining that /await:strict is for C++14/17. --- stl/inc/coroutine | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/stl/inc/coroutine b/stl/inc/coroutine index 268f816a014..8db46c733a3 100644 --- a/stl/inc/coroutine +++ b/stl/inc/coroutine @@ -9,12 +9,11 @@ #if _STL_COMPILER_PREPROCESSOR #ifdef _RESUMABLE_FUNCTIONS_SUPPORTED -_EMIT_STL_WARNING(STL4039, "The contents of are not available with /await. " - "Remove /await or use /await:strict for standard coroutines. " - "Use for legacy /await support."); +_EMIT_STL_WARNING(STL4039, "The header is incompatible with the deprecated /await compiler option."); #else // ^^^ /await / no /await vvv #ifndef __cpp_lib_coroutine -_EMIT_STL_WARNING(STL4038, "The contents of are available only with C++20 or later or /await:strict."); +_EMIT_STL_WARNING(STL4038, "The contents of are available only with C++20 or later " + "(or /await:strict in C++14/17)."); #else // ^^^ is not available / is available vvv #ifndef _ALLOW_COROUTINE_ABI_MISMATCH #pragma detect_mismatch("_COROUTINE_ABI", "2") From 8a3a65c984692dda3b56cd8accbb5c24fdc5580c Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 22 Oct 2025 23:24:02 -0700 Subject: [PATCH 05/10] Add hard deprecations with an escape hatch. --- stl/inc/experimental/coroutine | 7 +++++++ stl/inc/experimental/generator | 6 ++++++ stl/inc/yvals_core.h | 2 +- tests/std/tests/VSO_0971246_legacy_await_headers/test.cpp | 2 ++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/stl/inc/experimental/coroutine b/stl/inc/experimental/coroutine index fe5a260c564..bc6aa7ff296 100644 --- a/stl/inc/experimental/coroutine +++ b/stl/inc/experimental/coroutine @@ -36,6 +36,13 @@ _EMIT_STL_ERROR(STL1010, "You're compiling with support for standard C++20 corou "instead of and ."); #endif // defined(__cpp_impl_coroutine) +#ifndef _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS +_EMIT_STL_ERROR(STL1012, "The /await compiler option, , and are " + "deprecated and will be REMOVED IN THE NEAR FUTURE. Please use . You can define " + "_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS to suppress this error " + "BUT YOU HAVE BEEN WARNED."); +#endif // _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS + // intrinsics used in implementation of coroutine_handle extern "C" size_t _coro_resume(void*) noexcept; extern "C" void _coro_destroy(void*) noexcept; diff --git a/stl/inc/experimental/generator b/stl/inc/experimental/generator index ba1758bcc9b..32410e0818a 100644 --- a/stl/inc/experimental/generator +++ b/stl/inc/experimental/generator @@ -18,6 +18,12 @@ _EMIT_STL_ERROR(STL1009, "The , "headers do not support Clang, but the C++20 and C++23 headers do."); #endif // defined(__clang__) +#ifndef _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS +_EMIT_STL_ERROR(STL1012, " is deprecated and will be REMOVED IN THE NEAR FUTURE. Please use " + ". You can define _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS " + "to suppress this error BUT YOU HAVE BEEN WARNED."); +#endif // _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS + #if defined(__cpp_impl_coroutine) #include #elif defined(__cpp_coroutines) diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index 8bda4764655..3f2c717498d 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -1521,7 +1521,7 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect // next warning number: STL4049 -// next error number: STL1012 +// next error number: STL1013 // P0619R4 Removing C++17-Deprecated Features #ifndef _HAS_FEATURES_REMOVED_IN_CXX20 diff --git a/tests/std/tests/VSO_0971246_legacy_await_headers/test.cpp b/tests/std/tests/VSO_0971246_legacy_await_headers/test.cpp index 8bab6fc16a8..3349b3052a7 100644 --- a/tests/std/tests/VSO_0971246_legacy_await_headers/test.cpp +++ b/tests/std/tests/VSO_0971246_legacy_await_headers/test.cpp @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +#define _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS + #include #include #include From 811f77e1937e15a5c12ca07588d2dc924e356c74 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 22 Oct 2025 23:28:10 -0700 Subject: [PATCH 06/10] Simplify `` preprocessor logic. --- stl/inc/coroutine | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/stl/inc/coroutine b/stl/inc/coroutine index 8db46c733a3..b7ad50a954f 100644 --- a/stl/inc/coroutine +++ b/stl/inc/coroutine @@ -10,8 +10,7 @@ #ifdef _RESUMABLE_FUNCTIONS_SUPPORTED _EMIT_STL_WARNING(STL4039, "The header is incompatible with the deprecated /await compiler option."); -#else // ^^^ /await / no /await vvv -#ifndef __cpp_lib_coroutine +#elif !defined(__cpp_lib_coroutine) _EMIT_STL_WARNING(STL4038, "The contents of are available only with C++20 or later " "(or /await:strict in C++14/17)."); #else // ^^^ is not available / is available vvv @@ -269,7 +268,6 @@ _STL_RESTORE_CLANG_WARNINGS #pragma warning(pop) #pragma pack(pop) -#endif // ^^^ defined(__cpp_lib_coroutine) ^^^ -#endif // ^^^ !defined(_RESUMABLE_FUNCTIONS_SUPPORTED) ^^^ +#endif // ^^^ is available ^^^ #endif // _STL_COMPILER_PREPROCESSOR #endif // _COROUTINE_ From 3ecbd161d850908e9d443d4f257a2eb52454988c Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 22 Oct 2025 23:37:17 -0700 Subject: [PATCH 07/10] Emit only one error at a time. --- stl/inc/experimental/coroutine | 8 ++------ stl/inc/experimental/generator | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/stl/inc/experimental/coroutine b/stl/inc/experimental/coroutine index bc6aa7ff296..dd678a3eb3d 100644 --- a/stl/inc/experimental/coroutine +++ b/stl/inc/experimental/coroutine @@ -28,15 +28,11 @@ _STL_DISABLE_CLANG_WARNINGS #ifdef __clang__ _EMIT_STL_ERROR(STL1009, "The , , and " "headers do not support Clang, but the C++20 and C++23 headers do."); -#endif // defined(__clang__) - -#ifdef __cpp_impl_coroutine +#elif defined(__cpp_impl_coroutine) _EMIT_STL_ERROR(STL1010, "You're compiling with support for standard C++20 coroutines " "(also available with /await:strict in C++14/17), so you should include " "instead of and ."); -#endif // defined(__cpp_impl_coroutine) - -#ifndef _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS +#elif !defined(_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS) _EMIT_STL_ERROR(STL1012, "The /await compiler option, , and are " "deprecated and will be REMOVED IN THE NEAR FUTURE. Please use . You can define " "_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS to suppress this error " diff --git a/stl/inc/experimental/generator b/stl/inc/experimental/generator index 32410e0818a..365d3071222 100644 --- a/stl/inc/experimental/generator +++ b/stl/inc/experimental/generator @@ -16,15 +16,11 @@ #ifdef __clang__ _EMIT_STL_ERROR(STL1009, "The , , and " "headers do not support Clang, but the C++20 and C++23 headers do."); -#endif // defined(__clang__) - -#ifndef _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS +#elif !defined(_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS) _EMIT_STL_ERROR(STL1012, " is deprecated and will be REMOVED IN THE NEAR FUTURE. Please use " ". You can define _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS " "to suppress this error BUT YOU HAVE BEEN WARNED."); -#endif // _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS - -#if defined(__cpp_impl_coroutine) +#elif defined(__cpp_impl_coroutine) #include #elif defined(__cpp_coroutines) #include From d5dcbfc54e10b69a0fc91ff68c714aa37f2f6558 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 22 Oct 2025 23:39:42 -0700 Subject: [PATCH 08/10] Swap STL1011 and STL1012. --- stl/inc/experimental/coroutine | 2 +- stl/inc/experimental/generator | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/stl/inc/experimental/coroutine b/stl/inc/experimental/coroutine index dd678a3eb3d..f1645228a3a 100644 --- a/stl/inc/experimental/coroutine +++ b/stl/inc/experimental/coroutine @@ -33,7 +33,7 @@ _EMIT_STL_ERROR(STL1010, "You're compiling with support for standard C++20 corou "(also available with /await:strict in C++14/17), so you should include " "instead of and ."); #elif !defined(_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS) -_EMIT_STL_ERROR(STL1012, "The /await compiler option, , and are " +_EMIT_STL_ERROR(STL1011, "The /await compiler option, , and are " "deprecated and will be REMOVED IN THE NEAR FUTURE. Please use . You can define " "_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS to suppress this error " "BUT YOU HAVE BEEN WARNED."); diff --git a/stl/inc/experimental/generator b/stl/inc/experimental/generator index 365d3071222..71782d23842 100644 --- a/stl/inc/experimental/generator +++ b/stl/inc/experimental/generator @@ -17,7 +17,7 @@ _EMIT_STL_ERROR(STL1009, "The , , and " "headers do not support Clang, but the C++20 and C++23 headers do."); #elif !defined(_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS) -_EMIT_STL_ERROR(STL1012, " is deprecated and will be REMOVED IN THE NEAR FUTURE. Please use " +_EMIT_STL_ERROR(STL1011, " is deprecated and will be REMOVED IN THE NEAR FUTURE. Please use " ". You can define _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS " "to suppress this error BUT YOU HAVE BEEN WARNED."); #elif defined(__cpp_impl_coroutine) @@ -25,7 +25,7 @@ _EMIT_STL_ERROR(STL1012, " is deprecated and will be REM #elif defined(__cpp_coroutines) #include #else // ^^^ legacy coroutines / no coroutine support vvv -_EMIT_STL_ERROR(STL1011, "You've included the header without compiler support for " +_EMIT_STL_ERROR(STL1012, "You've included the header without compiler support for " "legacy coroutines (available with the deprecated /await compiler option) or " "standard C++20 coroutines (also available with /await:strict in C++14/17). " "You should include C++23 instead of ."); From c36938cc214402ad79e4aff02664a5dc4cfe0caa Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Thu, 23 Oct 2025 15:56:49 -0700 Subject: [PATCH 09/10] Rephrase deprecation messages. Follow `` phrasing by adding "by Microsoft" and "superseded" language. We don't need to shout "BUT YOU HAVE BEEN WARNED" a second time, but an ominous "for now" will do. --- stl/inc/experimental/coroutine | 6 +++--- stl/inc/experimental/generator | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/stl/inc/experimental/coroutine b/stl/inc/experimental/coroutine index f1645228a3a..648a9beff6e 100644 --- a/stl/inc/experimental/coroutine +++ b/stl/inc/experimental/coroutine @@ -34,9 +34,9 @@ _EMIT_STL_ERROR(STL1010, "You're compiling with support for standard C++20 corou "instead of and ."); #elif !defined(_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS) _EMIT_STL_ERROR(STL1011, "The /await compiler option, , and are " - "deprecated and will be REMOVED IN THE NEAR FUTURE. Please use . You can define " - "_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS to suppress this error " - "BUT YOU HAVE BEEN WARNED."); + "deprecated by Microsoft and will be REMOVED IN THE NEAR FUTURE. " + "They are superseded by the C++20 header. You can define " + "_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS to suppress this error for now."); #endif // _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS // intrinsics used in implementation of coroutine_handle diff --git a/stl/inc/experimental/generator b/stl/inc/experimental/generator index 71782d23842..026b6cdae15 100644 --- a/stl/inc/experimental/generator +++ b/stl/inc/experimental/generator @@ -17,9 +17,9 @@ _EMIT_STL_ERROR(STL1009, "The , , and " "headers do not support Clang, but the C++20 and C++23 headers do."); #elif !defined(_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS) -_EMIT_STL_ERROR(STL1011, " is deprecated and will be REMOVED IN THE NEAR FUTURE. Please use " - ". You can define _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS " - "to suppress this error BUT YOU HAVE BEEN WARNED."); +_EMIT_STL_ERROR(STL1011, " is deprecated by Microsoft and will be REMOVED IN THE NEAR FUTURE. " + "It is superseded by the C++23 header. You can define " + "_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS to suppress this error for now."); #elif defined(__cpp_impl_coroutine) #include #elif defined(__cpp_coroutines) From 4e7e9003cb92a4adf490a29393a0081c030aeae3 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Sun, 26 Oct 2025 03:26:38 -0700 Subject: [PATCH 10/10] Unify deprecation messages. --- stl/inc/experimental/coroutine | 6 +++--- stl/inc/experimental/generator | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/stl/inc/experimental/coroutine b/stl/inc/experimental/coroutine index 648a9beff6e..b0cc97a12bb 100644 --- a/stl/inc/experimental/coroutine +++ b/stl/inc/experimental/coroutine @@ -33,9 +33,9 @@ _EMIT_STL_ERROR(STL1010, "You're compiling with support for standard C++20 corou "(also available with /await:strict in C++14/17), so you should include " "instead of and ."); #elif !defined(_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS) -_EMIT_STL_ERROR(STL1011, "The /await compiler option, , and are " - "deprecated by Microsoft and will be REMOVED IN THE NEAR FUTURE. " - "They are superseded by the C++20 header. You can define " +_EMIT_STL_ERROR(STL1011, "The /await compiler option, , , and " + " are deprecated by Microsoft and will be REMOVED SOON. " + "They are superseded by the C++20 and C++23 headers. You can define " "_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS to suppress this error for now."); #endif // _SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS diff --git a/stl/inc/experimental/generator b/stl/inc/experimental/generator index 026b6cdae15..f4ce453422f 100644 --- a/stl/inc/experimental/generator +++ b/stl/inc/experimental/generator @@ -17,8 +17,9 @@ _EMIT_STL_ERROR(STL1009, "The , , and " "headers do not support Clang, but the C++20 and C++23 headers do."); #elif !defined(_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS) -_EMIT_STL_ERROR(STL1011, " is deprecated by Microsoft and will be REMOVED IN THE NEAR FUTURE. " - "It is superseded by the C++23 header. You can define " +_EMIT_STL_ERROR(STL1011, "The /await compiler option, , , and " + " are deprecated by Microsoft and will be REMOVED SOON. " + "They are superseded by the C++20 and C++23 headers. You can define " "_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS to suppress this error for now."); #elif defined(__cpp_impl_coroutine) #include