From 1a55f75a0ee1edf5ccb32864be39bfa4d6830ea1 Mon Sep 17 00:00:00 2001 From: Steve Downey Date: Fri, 10 Jul 2026 10:18:39 -0400 Subject: [PATCH 1/4] Rename negative-compile tests to *.test.cpp naming convention The Beman Standard's [file.test_names] check requires test source files to match *.test.cpp. Rename the 56 negative-compile-test sources under tests/beman/expected/ (used via the add_fail_test CMake macro) accordingly and update their CMakeLists.txt references. --- tests/beman/expected/CMakeLists.txt | 112 +++++++++--------- ...pp => and_then_not_expected_fail.test.cpp} | 0 ...> and_then_wrong_error_type_fail.test.cpp} | 0 ...ol_value_ctor_from_expected_fail.test.cpp} | 0 ...> expected_emplace_throwing_fail.test.cpp} | 0 ...f_and_then_wrong_error_type_fail.test.cpp} | 0 ...h_and_then_wrong_error_type_fail.test.cpp} | 0 ..._ref_both_assign_unexpected_fail.test.cpp} | 0 ...h_construct_from_unexpected_fail.test.cpp} | 0 ...> expected_ref_both_e_array_fail.test.cpp} | 0 ...cted_ref_both_inplace_value_fail.test.cpp} | 0 ...xpected_ref_both_no_default_fail.test.cpp} | 0 ...th_or_else_wrong_value_type_fail.test.cpp} | 0 ...> expected_ref_both_t_array_fail.test.cpp} | 0 ...expected_ref_both_t_inplace_fail.test.cpp} | 0 ...xpected_ref_both_t_unexpect_fail.test.cpp} | 0 ...ected_ref_both_t_unexpected_fail.test.cpp} | 0 ...cted_ref_both_temporary_err_fail.test.cpp} | 0 ...cted_ref_both_temporary_val_fail.test.cpp} | 0 ..._transform_error_ref_result_fail.test.cpp} | 0 ...e_and_then_wrong_error_type_fail.test.cpp} | 0 ...cpp => expected_ref_e_array_fail.test.cpp} | 0 ...ted_ref_e_assign_unexpected_fail.test.cpp} | 0 ...expected_ref_e_const_lvalue_fail.test.cpp} | 0 ...e_construct_from_unexpected_fail.test.cpp} | 0 ...il.cpp => expected_ref_e_cv_fail.test.cpp} | 0 ...p => expected_ref_e_e_array_fail.test.cpp} | 0 ..._e_or_else_wrong_value_type_fail.test.cpp} | 0 ...l.cpp => expected_ref_e_ref_fail.test.cpp} | 0 ...p => expected_ref_e_t_array_fail.test.cpp} | 0 ...=> expected_ref_e_t_inplace_fail.test.cpp} | 0 ...> expected_ref_e_t_unexpect_fail.test.cpp} | 0 ...expected_ref_e_t_unexpected_fail.test.cpp} | 0 ...ected_ref_e_temporary_error_fail.test.cpp} | 0 ..._transform_error_ref_result_fail.test.cpp} | 0 ....cpp => expected_ref_e_void_fail.test.cpp} | 0 ... expected_ref_inplace_value_fail.test.cpp} | 0 ... => expected_ref_no_default_fail.test.cpp} | 0 ...ef_or_else_wrong_value_type_fail.test.cpp} | 0 ...p => expected_ref_temporary_fail.test.cpp} | 0 ..._transform_error_ref_result_fail.test.cpp} | 0 ...ail.cpp => expected_t_array_fail.test.cpp} | 0 ..._fail.cpp => expected_t_ref_fail.test.cpp} | 0 ...ected_unexpected_value_type_fail.test.cpp} | 0 ....cpp => expected_void_array_fail.test.cpp} | 0 ...oid_ref_e_assign_unexpected_fail.test.cpp} | 0 ...ted_void_ref_e_const_lvalue_fail.test.cpp} | 0 ...e_construct_from_unexpected_fail.test.cpp} | 0 ...cted_void_ref_e_no_value_or_fail.test.cpp} | 0 ...pected_void_ref_e_temporary_fail.test.cpp} | 0 ...=> or_else_wrong_value_type_fail.test.cpp} | 0 ... transform_error_ref_result_fail.test.cpp} | 0 ...ail.cpp => unexpected_array_fail.test.cpp} | 0 ...ail.cpp => unexpected_cvref_fail.test.cpp} | 0 ...fail.cpp => unexpected_self_fail.test.cpp} | 0 ...d_and_then_wrong_error_type_fail.test.cpp} | 0 ...id_or_else_wrong_value_type_fail.test.cpp} | 0 57 files changed, 56 insertions(+), 56 deletions(-) rename tests/beman/expected/{and_then_not_expected_fail.cpp => and_then_not_expected_fail.test.cpp} (100%) rename tests/beman/expected/{and_then_wrong_error_type_fail.cpp => and_then_wrong_error_type_fail.test.cpp} (100%) rename tests/beman/expected/{expected_bool_value_ctor_from_expected_fail.cpp => expected_bool_value_ctor_from_expected_fail.test.cpp} (100%) rename tests/beman/expected/{expected_emplace_throwing_fail.cpp => expected_emplace_throwing_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_and_then_wrong_error_type_fail.cpp => expected_ref_and_then_wrong_error_type_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_and_then_wrong_error_type_fail.cpp => expected_ref_both_and_then_wrong_error_type_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_assign_unexpected_fail.cpp => expected_ref_both_assign_unexpected_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_construct_from_unexpected_fail.cpp => expected_ref_both_construct_from_unexpected_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_e_array_fail.cpp => expected_ref_both_e_array_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_inplace_value_fail.cpp => expected_ref_both_inplace_value_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_no_default_fail.cpp => expected_ref_both_no_default_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_or_else_wrong_value_type_fail.cpp => expected_ref_both_or_else_wrong_value_type_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_t_array_fail.cpp => expected_ref_both_t_array_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_t_inplace_fail.cpp => expected_ref_both_t_inplace_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_t_unexpect_fail.cpp => expected_ref_both_t_unexpect_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_t_unexpected_fail.cpp => expected_ref_both_t_unexpected_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_temporary_err_fail.cpp => expected_ref_both_temporary_err_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_temporary_val_fail.cpp => expected_ref_both_temporary_val_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_both_transform_error_ref_result_fail.cpp => expected_ref_both_transform_error_ref_result_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_and_then_wrong_error_type_fail.cpp => expected_ref_e_and_then_wrong_error_type_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_array_fail.cpp => expected_ref_e_array_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_assign_unexpected_fail.cpp => expected_ref_e_assign_unexpected_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_const_lvalue_fail.cpp => expected_ref_e_const_lvalue_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_construct_from_unexpected_fail.cpp => expected_ref_e_construct_from_unexpected_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_cv_fail.cpp => expected_ref_e_cv_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_e_array_fail.cpp => expected_ref_e_e_array_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_or_else_wrong_value_type_fail.cpp => expected_ref_e_or_else_wrong_value_type_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_ref_fail.cpp => expected_ref_e_ref_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_t_array_fail.cpp => expected_ref_e_t_array_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_t_inplace_fail.cpp => expected_ref_e_t_inplace_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_t_unexpect_fail.cpp => expected_ref_e_t_unexpect_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_t_unexpected_fail.cpp => expected_ref_e_t_unexpected_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_temporary_error_fail.cpp => expected_ref_e_temporary_error_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_transform_error_ref_result_fail.cpp => expected_ref_e_transform_error_ref_result_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_e_void_fail.cpp => expected_ref_e_void_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_inplace_value_fail.cpp => expected_ref_inplace_value_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_no_default_fail.cpp => expected_ref_no_default_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_or_else_wrong_value_type_fail.cpp => expected_ref_or_else_wrong_value_type_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_temporary_fail.cpp => expected_ref_temporary_fail.test.cpp} (100%) rename tests/beman/expected/{expected_ref_transform_error_ref_result_fail.cpp => expected_ref_transform_error_ref_result_fail.test.cpp} (100%) rename tests/beman/expected/{expected_t_array_fail.cpp => expected_t_array_fail.test.cpp} (100%) rename tests/beman/expected/{expected_t_ref_fail.cpp => expected_t_ref_fail.test.cpp} (100%) rename tests/beman/expected/{expected_unexpected_value_type_fail.cpp => expected_unexpected_value_type_fail.test.cpp} (100%) rename tests/beman/expected/{expected_void_array_fail.cpp => expected_void_array_fail.test.cpp} (100%) rename tests/beman/expected/{expected_void_ref_e_assign_unexpected_fail.cpp => expected_void_ref_e_assign_unexpected_fail.test.cpp} (100%) rename tests/beman/expected/{expected_void_ref_e_const_lvalue_fail.cpp => expected_void_ref_e_const_lvalue_fail.test.cpp} (100%) rename tests/beman/expected/{expected_void_ref_e_construct_from_unexpected_fail.cpp => expected_void_ref_e_construct_from_unexpected_fail.test.cpp} (100%) rename tests/beman/expected/{expected_void_ref_e_no_value_or_fail.cpp => expected_void_ref_e_no_value_or_fail.test.cpp} (100%) rename tests/beman/expected/{expected_void_ref_e_temporary_fail.cpp => expected_void_ref_e_temporary_fail.test.cpp} (100%) rename tests/beman/expected/{or_else_wrong_value_type_fail.cpp => or_else_wrong_value_type_fail.test.cpp} (100%) rename tests/beman/expected/{transform_error_ref_result_fail.cpp => transform_error_ref_result_fail.test.cpp} (100%) rename tests/beman/expected/{unexpected_array_fail.cpp => unexpected_array_fail.test.cpp} (100%) rename tests/beman/expected/{unexpected_cvref_fail.cpp => unexpected_cvref_fail.test.cpp} (100%) rename tests/beman/expected/{unexpected_self_fail.cpp => unexpected_self_fail.test.cpp} (100%) rename tests/beman/expected/{void_and_then_wrong_error_type_fail.cpp => void_and_then_wrong_error_type_fail.test.cpp} (100%) rename tests/beman/expected/{void_or_else_wrong_value_type_fail.cpp => void_or_else_wrong_value_type_fail.test.cpp} (100%) diff --git a/tests/beman/expected/CMakeLists.txt b/tests/beman/expected/CMakeLists.txt index 6995659..3c7b049 100644 --- a/tests/beman/expected/CMakeLists.txt +++ b/tests/beman/expected/CMakeLists.txt @@ -122,247 +122,247 @@ macro(add_fail_test name source reason) endmacro() # Step 1 — unexpected ill-formed instantiations [expected.un.general] -add_fail_test(unexpected_array_fail unexpected_array_fail.cpp +add_fail_test(unexpected_array_fail unexpected_array_fail.test.cpp "E must not be an array type" ) -add_fail_test(unexpected_cvref_fail unexpected_cvref_fail.cpp +add_fail_test(unexpected_cvref_fail unexpected_cvref_fail.test.cpp "E must not be cv-qualified" ) -add_fail_test(unexpected_self_fail unexpected_self_fail.cpp +add_fail_test(unexpected_self_fail unexpected_self_fail.test.cpp "E must not be a specialization of unexpected" ) # Step 3 — expected ill-formed T/E [expected.object.general] -add_fail_test(expected_t_ref_fail expected_t_ref_fail.cpp +add_fail_test(expected_t_ref_fail expected_t_ref_fail.test.cpp "no default constructor|use of deleted function|call to deleted|attempting to reference" ) # Note: expected_e_ref_fail removed — expected is now valid via expected -add_fail_test(expected_t_array_fail expected_t_array_fail.cpp +add_fail_test(expected_t_array_fail expected_t_array_fail.test.cpp "T must not be an array type" ) # Step 3 — expected emplace Mandates: nothrow_constructible_v -add_fail_test(expected_emplace_throwing_fail expected_emplace_throwing_fail.cpp +add_fail_test(expected_emplace_throwing_fail expected_emplace_throwing_fail.test.cpp "is_nothrow_constructible|no matching overloaded function found" ) # Step 4 — expected ill-formed E [expected.void.general] # Note: expected_void_ref_fail.cpp is removed — expected is now valid via # the expected specialization added in Step 10. -add_fail_test(expected_void_array_fail expected_void_array_fail.cpp +add_fail_test(expected_void_array_fail expected_void_array_fail.test.cpp "E must not be an array type" ) # Step 5 — monadic Mandates [expected.object.monadic] -add_fail_test(and_then_wrong_error_type_fail and_then_wrong_error_type_fail.cpp +add_fail_test(and_then_wrong_error_type_fail and_then_wrong_error_type_fail.test.cpp "F must return expected with the same error_type" ) -add_fail_test(and_then_not_expected_fail and_then_not_expected_fail.cpp +add_fail_test(and_then_not_expected_fail and_then_not_expected_fail.test.cpp "F must return a specialization of expected" ) -add_fail_test(or_else_wrong_value_type_fail or_else_wrong_value_type_fail.cpp +add_fail_test(or_else_wrong_value_type_fail or_else_wrong_value_type_fail.test.cpp "F must return expected with the same value_type" ) -add_fail_test(transform_error_ref_result_fail transform_error_ref_result_fail.cpp +add_fail_test(transform_error_ref_result_fail transform_error_ref_result_fail.test.cpp "G must be an object type" ) # Step 6 — void monadic Mandates [expected.void.monadic] -add_fail_test(void_and_then_wrong_error_type_fail void_and_then_wrong_error_type_fail.cpp +add_fail_test(void_and_then_wrong_error_type_fail void_and_then_wrong_error_type_fail.test.cpp "F must return expected with the same error_type" ) -add_fail_test(void_or_else_wrong_value_type_fail void_or_else_wrong_value_type_fail.cpp +add_fail_test(void_or_else_wrong_value_type_fail void_or_else_wrong_value_type_fail.test.cpp "F must return expected with the same value_type" ) # Fix 1 — constraint 23.6: value ctor blocked for T=bool, U=expected specialization -add_fail_test(expected_bool_value_ctor_from_expected_fail expected_bool_value_ctor_from_expected_fail.cpp +add_fail_test(expected_bool_value_ctor_from_expected_fail expected_bool_value_ctor_from_expected_fail.test.cpp "no matching function|no matching constructor|no overloaded function could convert" ) # Fix 4 — Mandates: T must not be a specialization of unexpected -add_fail_test(expected_unexpected_value_type_fail expected_unexpected_value_type_fail.cpp +add_fail_test(expected_unexpected_value_type_fail expected_unexpected_value_type_fail.test.cpp "T must not be a specialization of unexpected" ) # Step 7 — expected reference specialization: constructor constraints -add_fail_test(expected_ref_temporary_fail expected_ref_temporary_fail.cpp +add_fail_test(expected_ref_temporary_fail expected_ref_temporary_fail.test.cpp "binding a temporary to T& creates a dangling reference|use of deleted function|call to deleted|no matching function|no matching constructor|no overloaded function could convert|attempting to reference" ) -add_fail_test(expected_ref_no_default_fail expected_ref_no_default_fail.cpp +add_fail_test(expected_ref_no_default_fail expected_ref_no_default_fail.test.cpp "no default constructor|use of deleted function|call to deleted|attempting to reference" ) -add_fail_test(expected_ref_inplace_value_fail expected_ref_inplace_value_fail.cpp +add_fail_test(expected_ref_inplace_value_fail expected_ref_inplace_value_fail.test.cpp "no in_place value constructor|use of deleted function|call to deleted|attempting to reference" ) # Step 8 — expected reference error: dangling prevention -add_fail_test(expected_ref_e_temporary_error_fail expected_ref_e_temporary_error_fail.cpp +add_fail_test(expected_ref_e_temporary_error_fail expected_ref_e_temporary_error_fail.test.cpp "cannot bind to non-const E&|use of deleted function|call to deleted|attempting to reference" ) -add_fail_test(expected_ref_e_const_lvalue_fail expected_ref_e_const_lvalue_fail.cpp +add_fail_test(expected_ref_e_const_lvalue_fail expected_ref_e_const_lvalue_fail.test.cpp "cannot bind to non-const E&|use of deleted function|call to deleted|attempting to reference" ) # Step 8 — expected: no constructor or assignment from unexpected # (would bind E& to storage inside the temporary unexpected — dangling) add_fail_test(expected_ref_e_construct_from_unexpected_fail - expected_ref_e_construct_from_unexpected_fail.cpp + expected_ref_e_construct_from_unexpected_fail.test.cpp "no constructor from unexpected|use of deleted function|call to deleted|invokes a deleted function|attempting to reference" ) add_fail_test(expected_ref_e_assign_unexpected_fail - expected_ref_e_assign_unexpected_fail.cpp + expected_ref_e_assign_unexpected_fail.test.cpp "no assignment from unexpected|use of deleted function|call to deleted|selected deleted operator|attempting to reference" ) # Step 7/8 parity — expected or_else value_type mandate (added in Step 8 review) -add_fail_test(expected_ref_or_else_wrong_value_type_fail expected_ref_or_else_wrong_value_type_fail.cpp +add_fail_test(expected_ref_or_else_wrong_value_type_fail expected_ref_or_else_wrong_value_type_fail.test.cpp "F must return expected with the same value_type" ) # Step 9 — expected dangling prevention and no-default constraint -add_fail_test(expected_ref_both_temporary_val_fail expected_ref_both_temporary_val_fail.cpp +add_fail_test(expected_ref_both_temporary_val_fail expected_ref_both_temporary_val_fail.test.cpp "binding a temporary to T& creates a dangling reference|use of deleted function|call to deleted|no matching function|no matching constructor|no overloaded function could convert|attempting to reference" ) -add_fail_test(expected_ref_both_temporary_err_fail expected_ref_both_temporary_err_fail.cpp +add_fail_test(expected_ref_both_temporary_err_fail expected_ref_both_temporary_err_fail.test.cpp "cannot bind to non-const E&|use of deleted function|call to deleted|attempting to reference" ) -add_fail_test(expected_ref_both_no_default_fail expected_ref_both_no_default_fail.cpp +add_fail_test(expected_ref_both_no_default_fail expected_ref_both_no_default_fail.test.cpp "no default constructor|use of deleted function|call to deleted|attempting to reference" ) # Step 9 — expected: no constructor or assignment from unexpected # (would bind E& to storage inside the temporary unexpected — dangling) add_fail_test(expected_ref_both_construct_from_unexpected_fail - expected_ref_both_construct_from_unexpected_fail.cpp + expected_ref_both_construct_from_unexpected_fail.test.cpp "no constructor from unexpected|use of deleted function|call to deleted|invokes a deleted function|attempting to reference" ) add_fail_test(expected_ref_both_assign_unexpected_fail - expected_ref_both_assign_unexpected_fail.cpp + expected_ref_both_assign_unexpected_fail.test.cpp "no assignment from unexpected|use of deleted function|call to deleted|selected deleted operator|attempting to reference" ) # Step 9 — expected: or_else value_type mandate add_fail_test(expected_ref_both_or_else_wrong_value_type_fail - expected_ref_both_or_else_wrong_value_type_fail.cpp + expected_ref_both_or_else_wrong_value_type_fail.test.cpp "F must return expected with the same value_type" ) # Step 7 — expected Mandates: E constraints -add_fail_test(expected_ref_e_ref_fail expected_ref_e_ref_fail.cpp +add_fail_test(expected_ref_e_ref_fail expected_ref_e_ref_fail.test.cpp "E must not be an rvalue reference" ) -add_fail_test(expected_ref_e_void_fail expected_ref_e_void_fail.cpp +add_fail_test(expected_ref_e_void_fail expected_ref_e_void_fail.test.cpp "E must not be void" ) -add_fail_test(expected_ref_e_array_fail expected_ref_e_array_fail.cpp +add_fail_test(expected_ref_e_array_fail expected_ref_e_array_fail.test.cpp "E must not be an array type" ) -add_fail_test(expected_ref_e_cv_fail expected_ref_e_cv_fail.cpp +add_fail_test(expected_ref_e_cv_fail expected_ref_e_cv_fail.test.cpp "E must not be cv-qualified" ) # Step 7 — expected monadic mandates add_fail_test(expected_ref_and_then_wrong_error_type_fail - expected_ref_and_then_wrong_error_type_fail.cpp + expected_ref_and_then_wrong_error_type_fail.test.cpp "F must return expected with the same error_type" ) add_fail_test(expected_ref_transform_error_ref_result_fail - expected_ref_transform_error_ref_result_fail.cpp + expected_ref_transform_error_ref_result_fail.test.cpp "G must be an object type" ) # Step 8 — expected Mandates: T and E type constraints add_fail_test(expected_ref_e_t_array_fail - expected_ref_e_t_array_fail.cpp + expected_ref_e_t_array_fail.test.cpp "T must not be an array type" ) add_fail_test(expected_ref_e_e_array_fail - expected_ref_e_e_array_fail.cpp + expected_ref_e_e_array_fail.test.cpp "E must not be an array type" ) add_fail_test(expected_ref_e_t_inplace_fail - expected_ref_e_t_inplace_fail.cpp + expected_ref_e_t_inplace_fail.test.cpp "T must not be in_place_t" ) add_fail_test(expected_ref_e_t_unexpect_fail - expected_ref_e_t_unexpect_fail.cpp + expected_ref_e_t_unexpect_fail.test.cpp "T must not be unexpect_t" ) add_fail_test(expected_ref_e_t_unexpected_fail - expected_ref_e_t_unexpected_fail.cpp + expected_ref_e_t_unexpected_fail.test.cpp "T must not be a specialization of unexpected" ) # Step 8 — expected monadic mandates add_fail_test(expected_ref_e_and_then_wrong_error_type_fail - expected_ref_e_and_then_wrong_error_type_fail.cpp + expected_ref_e_and_then_wrong_error_type_fail.test.cpp "F must return expected with the same error_type" ) add_fail_test(expected_ref_e_or_else_wrong_value_type_fail - expected_ref_e_or_else_wrong_value_type_fail.cpp + expected_ref_e_or_else_wrong_value_type_fail.test.cpp "F must return expected with the same value_type" ) add_fail_test(expected_ref_e_transform_error_ref_result_fail - expected_ref_e_transform_error_ref_result_fail.cpp + expected_ref_e_transform_error_ref_result_fail.test.cpp "G must be an object type" ) # Step 9 — expected Mandates: T and E type constraints add_fail_test(expected_ref_both_t_array_fail - expected_ref_both_t_array_fail.cpp + expected_ref_both_t_array_fail.test.cpp "T must not be an array type" ) add_fail_test(expected_ref_both_e_array_fail - expected_ref_both_e_array_fail.cpp + expected_ref_both_e_array_fail.test.cpp "E must not be an array type" ) add_fail_test(expected_ref_both_t_inplace_fail - expected_ref_both_t_inplace_fail.cpp + expected_ref_both_t_inplace_fail.test.cpp "T must not be in_place_t" ) add_fail_test(expected_ref_both_t_unexpect_fail - expected_ref_both_t_unexpect_fail.cpp + expected_ref_both_t_unexpect_fail.test.cpp "T must not be unexpect_t" ) add_fail_test(expected_ref_both_t_unexpected_fail - expected_ref_both_t_unexpected_fail.cpp + expected_ref_both_t_unexpected_fail.test.cpp "T must not be a specialization of unexpected" ) add_fail_test(expected_ref_both_inplace_value_fail - expected_ref_both_inplace_value_fail.cpp + expected_ref_both_inplace_value_fail.test.cpp "no in_place value constructor|use of deleted function|call to deleted|attempting to reference" ) # Step 9 — expected monadic mandates add_fail_test(expected_ref_both_and_then_wrong_error_type_fail - expected_ref_both_and_then_wrong_error_type_fail.cpp + expected_ref_both_and_then_wrong_error_type_fail.test.cpp "F must return expected with the same error_type" ) add_fail_test(expected_ref_both_transform_error_ref_result_fail - expected_ref_both_transform_error_ref_result_fail.cpp + expected_ref_both_transform_error_ref_result_fail.test.cpp "G must be an object type" ) # Step 10 — expected dangling prevention and no value_or add_fail_test(expected_void_ref_e_temporary_fail - expected_void_ref_e_temporary_fail.cpp + expected_void_ref_e_temporary_fail.test.cpp "cannot bind to non-const E&|use of deleted function|call to deleted|attempting to reference" ) add_fail_test(expected_void_ref_e_const_lvalue_fail - expected_void_ref_e_const_lvalue_fail.cpp + expected_void_ref_e_const_lvalue_fail.test.cpp "cannot bind to non-const E&|use of deleted function|call to deleted|attempting to reference" ) add_fail_test(expected_void_ref_e_no_value_or_fail - expected_void_ref_e_no_value_or_fail.cpp + expected_void_ref_e_no_value_or_fail.test.cpp "no value_or for void|use of deleted function|call to deleted|attempting to reference" ) add_fail_test(expected_void_ref_e_construct_from_unexpected_fail - expected_void_ref_e_construct_from_unexpected_fail.cpp + expected_void_ref_e_construct_from_unexpected_fail.test.cpp "no constructor from unexpected|use of deleted function|call to deleted|invokes a deleted function|attempting to reference" ) add_fail_test(expected_void_ref_e_assign_unexpected_fail - expected_void_ref_e_assign_unexpected_fail.cpp + expected_void_ref_e_assign_unexpected_fail.test.cpp "no assignment from unexpected|use of deleted function|call to deleted|invokes a deleted function|selected deleted operator|attempting to reference" ) diff --git a/tests/beman/expected/and_then_not_expected_fail.cpp b/tests/beman/expected/and_then_not_expected_fail.test.cpp similarity index 100% rename from tests/beman/expected/and_then_not_expected_fail.cpp rename to tests/beman/expected/and_then_not_expected_fail.test.cpp diff --git a/tests/beman/expected/and_then_wrong_error_type_fail.cpp b/tests/beman/expected/and_then_wrong_error_type_fail.test.cpp similarity index 100% rename from tests/beman/expected/and_then_wrong_error_type_fail.cpp rename to tests/beman/expected/and_then_wrong_error_type_fail.test.cpp diff --git a/tests/beman/expected/expected_bool_value_ctor_from_expected_fail.cpp b/tests/beman/expected/expected_bool_value_ctor_from_expected_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_bool_value_ctor_from_expected_fail.cpp rename to tests/beman/expected/expected_bool_value_ctor_from_expected_fail.test.cpp diff --git a/tests/beman/expected/expected_emplace_throwing_fail.cpp b/tests/beman/expected/expected_emplace_throwing_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_emplace_throwing_fail.cpp rename to tests/beman/expected/expected_emplace_throwing_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_and_then_wrong_error_type_fail.cpp b/tests/beman/expected/expected_ref_and_then_wrong_error_type_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_and_then_wrong_error_type_fail.cpp rename to tests/beman/expected/expected_ref_and_then_wrong_error_type_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_and_then_wrong_error_type_fail.cpp b/tests/beman/expected/expected_ref_both_and_then_wrong_error_type_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_and_then_wrong_error_type_fail.cpp rename to tests/beman/expected/expected_ref_both_and_then_wrong_error_type_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_assign_unexpected_fail.cpp b/tests/beman/expected/expected_ref_both_assign_unexpected_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_assign_unexpected_fail.cpp rename to tests/beman/expected/expected_ref_both_assign_unexpected_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_construct_from_unexpected_fail.cpp b/tests/beman/expected/expected_ref_both_construct_from_unexpected_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_construct_from_unexpected_fail.cpp rename to tests/beman/expected/expected_ref_both_construct_from_unexpected_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_e_array_fail.cpp b/tests/beman/expected/expected_ref_both_e_array_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_e_array_fail.cpp rename to tests/beman/expected/expected_ref_both_e_array_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_inplace_value_fail.cpp b/tests/beman/expected/expected_ref_both_inplace_value_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_inplace_value_fail.cpp rename to tests/beman/expected/expected_ref_both_inplace_value_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_no_default_fail.cpp b/tests/beman/expected/expected_ref_both_no_default_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_no_default_fail.cpp rename to tests/beman/expected/expected_ref_both_no_default_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_or_else_wrong_value_type_fail.cpp b/tests/beman/expected/expected_ref_both_or_else_wrong_value_type_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_or_else_wrong_value_type_fail.cpp rename to tests/beman/expected/expected_ref_both_or_else_wrong_value_type_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_t_array_fail.cpp b/tests/beman/expected/expected_ref_both_t_array_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_t_array_fail.cpp rename to tests/beman/expected/expected_ref_both_t_array_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_t_inplace_fail.cpp b/tests/beman/expected/expected_ref_both_t_inplace_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_t_inplace_fail.cpp rename to tests/beman/expected/expected_ref_both_t_inplace_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_t_unexpect_fail.cpp b/tests/beman/expected/expected_ref_both_t_unexpect_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_t_unexpect_fail.cpp rename to tests/beman/expected/expected_ref_both_t_unexpect_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_t_unexpected_fail.cpp b/tests/beman/expected/expected_ref_both_t_unexpected_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_t_unexpected_fail.cpp rename to tests/beman/expected/expected_ref_both_t_unexpected_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_temporary_err_fail.cpp b/tests/beman/expected/expected_ref_both_temporary_err_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_temporary_err_fail.cpp rename to tests/beman/expected/expected_ref_both_temporary_err_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_temporary_val_fail.cpp b/tests/beman/expected/expected_ref_both_temporary_val_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_temporary_val_fail.cpp rename to tests/beman/expected/expected_ref_both_temporary_val_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_both_transform_error_ref_result_fail.cpp b/tests/beman/expected/expected_ref_both_transform_error_ref_result_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_both_transform_error_ref_result_fail.cpp rename to tests/beman/expected/expected_ref_both_transform_error_ref_result_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_and_then_wrong_error_type_fail.cpp b/tests/beman/expected/expected_ref_e_and_then_wrong_error_type_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_and_then_wrong_error_type_fail.cpp rename to tests/beman/expected/expected_ref_e_and_then_wrong_error_type_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_array_fail.cpp b/tests/beman/expected/expected_ref_e_array_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_array_fail.cpp rename to tests/beman/expected/expected_ref_e_array_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_assign_unexpected_fail.cpp b/tests/beman/expected/expected_ref_e_assign_unexpected_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_assign_unexpected_fail.cpp rename to tests/beman/expected/expected_ref_e_assign_unexpected_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_const_lvalue_fail.cpp b/tests/beman/expected/expected_ref_e_const_lvalue_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_const_lvalue_fail.cpp rename to tests/beman/expected/expected_ref_e_const_lvalue_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_construct_from_unexpected_fail.cpp b/tests/beman/expected/expected_ref_e_construct_from_unexpected_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_construct_from_unexpected_fail.cpp rename to tests/beman/expected/expected_ref_e_construct_from_unexpected_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_cv_fail.cpp b/tests/beman/expected/expected_ref_e_cv_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_cv_fail.cpp rename to tests/beman/expected/expected_ref_e_cv_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_e_array_fail.cpp b/tests/beman/expected/expected_ref_e_e_array_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_e_array_fail.cpp rename to tests/beman/expected/expected_ref_e_e_array_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_or_else_wrong_value_type_fail.cpp b/tests/beman/expected/expected_ref_e_or_else_wrong_value_type_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_or_else_wrong_value_type_fail.cpp rename to tests/beman/expected/expected_ref_e_or_else_wrong_value_type_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_ref_fail.cpp b/tests/beman/expected/expected_ref_e_ref_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_ref_fail.cpp rename to tests/beman/expected/expected_ref_e_ref_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_t_array_fail.cpp b/tests/beman/expected/expected_ref_e_t_array_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_t_array_fail.cpp rename to tests/beman/expected/expected_ref_e_t_array_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_t_inplace_fail.cpp b/tests/beman/expected/expected_ref_e_t_inplace_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_t_inplace_fail.cpp rename to tests/beman/expected/expected_ref_e_t_inplace_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_t_unexpect_fail.cpp b/tests/beman/expected/expected_ref_e_t_unexpect_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_t_unexpect_fail.cpp rename to tests/beman/expected/expected_ref_e_t_unexpect_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_t_unexpected_fail.cpp b/tests/beman/expected/expected_ref_e_t_unexpected_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_t_unexpected_fail.cpp rename to tests/beman/expected/expected_ref_e_t_unexpected_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_temporary_error_fail.cpp b/tests/beman/expected/expected_ref_e_temporary_error_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_temporary_error_fail.cpp rename to tests/beman/expected/expected_ref_e_temporary_error_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_transform_error_ref_result_fail.cpp b/tests/beman/expected/expected_ref_e_transform_error_ref_result_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_transform_error_ref_result_fail.cpp rename to tests/beman/expected/expected_ref_e_transform_error_ref_result_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_e_void_fail.cpp b/tests/beman/expected/expected_ref_e_void_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_e_void_fail.cpp rename to tests/beman/expected/expected_ref_e_void_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_inplace_value_fail.cpp b/tests/beman/expected/expected_ref_inplace_value_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_inplace_value_fail.cpp rename to tests/beman/expected/expected_ref_inplace_value_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_no_default_fail.cpp b/tests/beman/expected/expected_ref_no_default_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_no_default_fail.cpp rename to tests/beman/expected/expected_ref_no_default_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_or_else_wrong_value_type_fail.cpp b/tests/beman/expected/expected_ref_or_else_wrong_value_type_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_or_else_wrong_value_type_fail.cpp rename to tests/beman/expected/expected_ref_or_else_wrong_value_type_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_temporary_fail.cpp b/tests/beman/expected/expected_ref_temporary_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_temporary_fail.cpp rename to tests/beman/expected/expected_ref_temporary_fail.test.cpp diff --git a/tests/beman/expected/expected_ref_transform_error_ref_result_fail.cpp b/tests/beman/expected/expected_ref_transform_error_ref_result_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_ref_transform_error_ref_result_fail.cpp rename to tests/beman/expected/expected_ref_transform_error_ref_result_fail.test.cpp diff --git a/tests/beman/expected/expected_t_array_fail.cpp b/tests/beman/expected/expected_t_array_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_t_array_fail.cpp rename to tests/beman/expected/expected_t_array_fail.test.cpp diff --git a/tests/beman/expected/expected_t_ref_fail.cpp b/tests/beman/expected/expected_t_ref_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_t_ref_fail.cpp rename to tests/beman/expected/expected_t_ref_fail.test.cpp diff --git a/tests/beman/expected/expected_unexpected_value_type_fail.cpp b/tests/beman/expected/expected_unexpected_value_type_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_unexpected_value_type_fail.cpp rename to tests/beman/expected/expected_unexpected_value_type_fail.test.cpp diff --git a/tests/beman/expected/expected_void_array_fail.cpp b/tests/beman/expected/expected_void_array_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_void_array_fail.cpp rename to tests/beman/expected/expected_void_array_fail.test.cpp diff --git a/tests/beman/expected/expected_void_ref_e_assign_unexpected_fail.cpp b/tests/beman/expected/expected_void_ref_e_assign_unexpected_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_void_ref_e_assign_unexpected_fail.cpp rename to tests/beman/expected/expected_void_ref_e_assign_unexpected_fail.test.cpp diff --git a/tests/beman/expected/expected_void_ref_e_const_lvalue_fail.cpp b/tests/beman/expected/expected_void_ref_e_const_lvalue_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_void_ref_e_const_lvalue_fail.cpp rename to tests/beman/expected/expected_void_ref_e_const_lvalue_fail.test.cpp diff --git a/tests/beman/expected/expected_void_ref_e_construct_from_unexpected_fail.cpp b/tests/beman/expected/expected_void_ref_e_construct_from_unexpected_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_void_ref_e_construct_from_unexpected_fail.cpp rename to tests/beman/expected/expected_void_ref_e_construct_from_unexpected_fail.test.cpp diff --git a/tests/beman/expected/expected_void_ref_e_no_value_or_fail.cpp b/tests/beman/expected/expected_void_ref_e_no_value_or_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_void_ref_e_no_value_or_fail.cpp rename to tests/beman/expected/expected_void_ref_e_no_value_or_fail.test.cpp diff --git a/tests/beman/expected/expected_void_ref_e_temporary_fail.cpp b/tests/beman/expected/expected_void_ref_e_temporary_fail.test.cpp similarity index 100% rename from tests/beman/expected/expected_void_ref_e_temporary_fail.cpp rename to tests/beman/expected/expected_void_ref_e_temporary_fail.test.cpp diff --git a/tests/beman/expected/or_else_wrong_value_type_fail.cpp b/tests/beman/expected/or_else_wrong_value_type_fail.test.cpp similarity index 100% rename from tests/beman/expected/or_else_wrong_value_type_fail.cpp rename to tests/beman/expected/or_else_wrong_value_type_fail.test.cpp diff --git a/tests/beman/expected/transform_error_ref_result_fail.cpp b/tests/beman/expected/transform_error_ref_result_fail.test.cpp similarity index 100% rename from tests/beman/expected/transform_error_ref_result_fail.cpp rename to tests/beman/expected/transform_error_ref_result_fail.test.cpp diff --git a/tests/beman/expected/unexpected_array_fail.cpp b/tests/beman/expected/unexpected_array_fail.test.cpp similarity index 100% rename from tests/beman/expected/unexpected_array_fail.cpp rename to tests/beman/expected/unexpected_array_fail.test.cpp diff --git a/tests/beman/expected/unexpected_cvref_fail.cpp b/tests/beman/expected/unexpected_cvref_fail.test.cpp similarity index 100% rename from tests/beman/expected/unexpected_cvref_fail.cpp rename to tests/beman/expected/unexpected_cvref_fail.test.cpp diff --git a/tests/beman/expected/unexpected_self_fail.cpp b/tests/beman/expected/unexpected_self_fail.test.cpp similarity index 100% rename from tests/beman/expected/unexpected_self_fail.cpp rename to tests/beman/expected/unexpected_self_fail.test.cpp diff --git a/tests/beman/expected/void_and_then_wrong_error_type_fail.cpp b/tests/beman/expected/void_and_then_wrong_error_type_fail.test.cpp similarity index 100% rename from tests/beman/expected/void_and_then_wrong_error_type_fail.cpp rename to tests/beman/expected/void_and_then_wrong_error_type_fail.test.cpp diff --git a/tests/beman/expected/void_or_else_wrong_value_type_fail.cpp b/tests/beman/expected/void_or_else_wrong_value_type_fail.test.cpp similarity index 100% rename from tests/beman/expected/void_or_else_wrong_value_type_fail.cpp rename to tests/beman/expected/void_or_else_wrong_value_type_fail.test.cpp From 1d4400ef028299569b1b3f0ff1cba654b887bdec Mon Sep 17 00:00:00 2001 From: Steve Downey Date: Fri, 10 Jul 2026 10:18:51 -0400 Subject: [PATCH 2/4] Add missing SPDX-License-Identifier headers The Beman Standard's [file.license_id] check requires an SPDX header in the first 25 lines of every commentable file. Add the project's Apache-2.0 WITH LLVM-exception identifier to the CMake toolchain files, GitHub workflow/dependabot configs, and the remaining example/paper source files that were missing it. --- .github/dependabot.yml | 1 + .github/workflows/codeql.yml | 1 + .github/workflows/doxygen-gh-pages.yml | 1 + .github/workflows/ossf-scorecard-analysis.yml | 1 + cmake/ci-clang-toolchain.cmake | 3 +++ cmake/clang-16-toolchain.cmake | 3 +++ cmake/clang-17-toolchain.cmake | 3 +++ cmake/clang-18-toolchain.cmake | 3 +++ cmake/clang-19-toolchain.cmake | 3 +++ cmake/clang-flags.cmake | 3 +++ cmake/gcc-12-toolchain.cmake | 3 +++ cmake/gcc-13-toolchain.cmake | 3 +++ cmake/gcc-14-toolchain.cmake | 3 +++ cmake/gcc-15-toolchain.cmake | 3 +++ cmake/gcc-16-toolchain.cmake | 3 +++ cmake/gcc-flags.cmake | 3 +++ cmake/gcc-toolchain.cmake | 3 +++ cmake/llvm-16-toolchain.cmake | 3 +++ cmake/llvm-master-toolchain.cmake | 3 +++ cmake/llvm-toolchain.cmake | 3 +++ cmake/toolchain.cmake | 3 +++ cmake/use-fetch-content.cmake | 3 +++ cmake/x64-linux-custom.cmake | 3 +++ examples/expected.cpp | 1 + papers/wg21-latex/implementation.hpp | 2 ++ papers/wg21-latex/ldiff.sh | 1 + 26 files changed, 65 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7ce9081..dfb30a7 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # To get started with Dependabot version updates, you'll need to specify which # package ecosystems to update and where the package manifests are located. # Please see the documentation for all configuration options: diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index a425224..16d0bec 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --- # For most projects, this workflow file will not need changing; you simply need # to commit it to your repository. diff --git a/.github/workflows/doxygen-gh-pages.yml b/.github/workflows/doxygen-gh-pages.yml index 367b29d..c0d330e 100644 --- a/.github/workflows/doxygen-gh-pages.yml +++ b/.github/workflows/doxygen-gh-pages.yml @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception name: Doxygen GitHub Pages Deploy Action on: diff --git a/.github/workflows/ossf-scorecard-analysis.yml b/.github/workflows/ossf-scorecard-analysis.yml index 0f0ad65..33cc8c4 100644 --- a/.github/workflows/ossf-scorecard-analysis.yml +++ b/.github/workflows/ossf-scorecard-analysis.yml @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception name: Scorecard analysis workflow on: push: diff --git a/cmake/ci-clang-toolchain.cmake b/cmake/ci-clang-toolchain.cmake index 8158594..bc2a485 100644 --- a/cmake/ci-clang-toolchain.cmake +++ b/cmake/ci-clang-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/ci-clang-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) set(CMAKE_C_COMPILER clang) diff --git a/cmake/clang-16-toolchain.cmake b/cmake/clang-16-toolchain.cmake index 4de4ca0..2a81ace 100644 --- a/cmake/clang-16-toolchain.cmake +++ b/cmake/clang-16-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/clang-16-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) set(CMAKE_C_COMPILER clang-16) diff --git a/cmake/clang-17-toolchain.cmake b/cmake/clang-17-toolchain.cmake index 549eb4b..a8d7465 100644 --- a/cmake/clang-17-toolchain.cmake +++ b/cmake/clang-17-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/clang-17-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) set(CMAKE_C_COMPILER clang-17) diff --git a/cmake/clang-18-toolchain.cmake b/cmake/clang-18-toolchain.cmake index ef6be51..b33f27e 100644 --- a/cmake/clang-18-toolchain.cmake +++ b/cmake/clang-18-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/clang-18-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) set(CMAKE_C_COMPILER clang-18) diff --git a/cmake/clang-19-toolchain.cmake b/cmake/clang-19-toolchain.cmake index 25e6fc1..30cdad9 100644 --- a/cmake/clang-19-toolchain.cmake +++ b/cmake/clang-19-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/clang-19-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) set(CMAKE_C_COMPILER clang-19) diff --git a/cmake/clang-flags.cmake b/cmake/clang-flags.cmake index 36ec05a..536896e 100644 --- a/cmake/clang-flags.cmake +++ b/cmake/clang-flags.cmake @@ -1,3 +1,6 @@ +# cmake/clang-flags.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) set(CMAKE_CXX_STANDARD 20) diff --git a/cmake/gcc-12-toolchain.cmake b/cmake/gcc-12-toolchain.cmake index 3c1bd8d..ea14b03 100644 --- a/cmake/gcc-12-toolchain.cmake +++ b/cmake/gcc-12-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/gcc-12-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) include("${CMAKE_CURRENT_LIST_DIR}/gcc-flags.cmake") diff --git a/cmake/gcc-13-toolchain.cmake b/cmake/gcc-13-toolchain.cmake index 4dc22ee..6a84e80 100644 --- a/cmake/gcc-13-toolchain.cmake +++ b/cmake/gcc-13-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/gcc-13-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) include("${CMAKE_CURRENT_LIST_DIR}/gcc-flags.cmake") diff --git a/cmake/gcc-14-toolchain.cmake b/cmake/gcc-14-toolchain.cmake index 8089027..d795a29 100644 --- a/cmake/gcc-14-toolchain.cmake +++ b/cmake/gcc-14-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/gcc-14-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) include("${CMAKE_CURRENT_LIST_DIR}/gcc-flags.cmake") diff --git a/cmake/gcc-15-toolchain.cmake b/cmake/gcc-15-toolchain.cmake index 63874b3..c10d727 100644 --- a/cmake/gcc-15-toolchain.cmake +++ b/cmake/gcc-15-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/gcc-15-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) include("${CMAKE_CURRENT_LIST_DIR}/gcc-flags.cmake") diff --git a/cmake/gcc-16-toolchain.cmake b/cmake/gcc-16-toolchain.cmake index 8dea3ff..ae1bb01 100644 --- a/cmake/gcc-16-toolchain.cmake +++ b/cmake/gcc-16-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/gcc-16-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) include("${CMAKE_CURRENT_LIST_DIR}/gcc-flags.cmake") diff --git a/cmake/gcc-flags.cmake b/cmake/gcc-flags.cmake index 2debc9c..75df9d0 100644 --- a/cmake/gcc-flags.cmake +++ b/cmake/gcc-flags.cmake @@ -1,3 +1,6 @@ +# cmake/gcc-flags.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) set(CMAKE_CXX_STANDARD 26) diff --git a/cmake/gcc-toolchain.cmake b/cmake/gcc-toolchain.cmake index 635c9d5..0fa7f37 100644 --- a/cmake/gcc-toolchain.cmake +++ b/cmake/gcc-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/gcc-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) set(CMAKE_C_COMPILER gcc) diff --git a/cmake/llvm-16-toolchain.cmake b/cmake/llvm-16-toolchain.cmake index 317eb15..5752be4 100644 --- a/cmake/llvm-16-toolchain.cmake +++ b/cmake/llvm-16-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/llvm-16-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) set(CMAKE_C_COMPILER clang-16) diff --git a/cmake/llvm-master-toolchain.cmake b/cmake/llvm-master-toolchain.cmake index 9f1ff60..459ed09 100644 --- a/cmake/llvm-master-toolchain.cmake +++ b/cmake/llvm-master-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/llvm-master-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + set(LLVM_ROOT "$ENV{LLVM_ROOT}" CACHE PATH "Path to LLVM installation") set(CMAKE_C_COMPILER ${LLVM_ROOT}/bin/clang) diff --git a/cmake/llvm-toolchain.cmake b/cmake/llvm-toolchain.cmake index b0cbfbd..456b7d5 100644 --- a/cmake/llvm-toolchain.cmake +++ b/cmake/llvm-toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/llvm-toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) set(CMAKE_C_COMPILER clang-14) diff --git a/cmake/toolchain.cmake b/cmake/toolchain.cmake index 046d332..77475e2 100644 --- a/cmake/toolchain.cmake +++ b/cmake/toolchain.cmake @@ -1,3 +1,6 @@ +# cmake/toolchain.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + include_guard(GLOBAL) include("${CMAKE_CURRENT_LIST_DIR}/gcc-flags.cmake") diff --git a/cmake/use-fetch-content.cmake b/cmake/use-fetch-content.cmake index 407b660..9dc475d 100644 --- a/cmake/use-fetch-content.cmake +++ b/cmake/use-fetch-content.cmake @@ -1,3 +1,6 @@ +# cmake/use-fetch-content.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + cmake_minimum_required(VERSION 3.24) include(FetchContent) diff --git a/cmake/x64-linux-custom.cmake b/cmake/x64-linux-custom.cmake index 1d8ba8d..26fe71d 100644 --- a/cmake/x64-linux-custom.cmake +++ b/cmake/x64-linux-custom.cmake @@ -1,3 +1,6 @@ +# cmake/x64-linux-custom.cmake -*-cmake-*- +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + set(VCPKG_TARGET_ARCHITECTURE x64) set(VCPKG_CRT_LINKAGE dynamic) set(VCPKG_LIBRARY_LINKAGE static) diff --git a/examples/expected.cpp b/examples/expected.cpp index 538e906..ff4d48c 100644 --- a/examples/expected.cpp +++ b/examples/expected.cpp @@ -1,4 +1,5 @@ // examples/expected.cpp -*-C++-*- +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #include int main(int /*argc*/, char** /*argv*/) { return 0; } diff --git a/papers/wg21-latex/implementation.hpp b/papers/wg21-latex/implementation.hpp index 4c73798..a0dcc7c 100644 --- a/papers/wg21-latex/implementation.hpp +++ b/papers/wg21-latex/implementation.hpp @@ -1,3 +1,5 @@ +// papers/wg21-latex/implementation.hpp -*-C++-*- +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // ---------------------- // BASE AND DETAILS ELIDED // ---------------------- diff --git a/papers/wg21-latex/ldiff.sh b/papers/wg21-latex/ldiff.sh index 603e6e5..c10f595 100755 --- a/papers/wg21-latex/ldiff.sh +++ b/papers/wg21-latex/ldiff.sh @@ -1,4 +1,5 @@ #!/bin/env sh +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception export SAFECMDS=Rplus,Cpp,CppIII,opt,shl,shr,dcr,exor,bigoh,tilde,bitand,bitor,xor,rightshift,enternote,enterexample,exitexample,required,requires,effects,postconditions,postcondition,preconditions,precondition,returns,throws,default,complexity,remark,remarks,note,notes,realnote,realnotes,errors,sync,implimits,replaceable,exceptionsafety,returntype,cvalue,ctype,ctypes,dtype,ctemplate,templalias,xref,xsee,ntbs,ntmbs,ntwcs,ntcxvis,ntcxxxiis,expos,impdef,notdef,unspec,unspecbool,seebelow,unspecuniqtype,unspecalloctype,unun,change,rationale,effect,difficulty,howwide,uniquens,cv,seebelow From 0fb01048f20c1c9daa3b960f2aa1eaa8a0d119a4 Mon Sep 17 00:00:00 2001 From: Steve Downey Date: Fri, 10 Jul 2026 10:18:56 -0400 Subject: [PATCH 3/4] Link the README library-status badge per the Beman Standard [readme.badges] requires the library-status badge to be wrapped in a link to the maturity model doc; the plain image badge doesn't match any of the four required exact forms. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 002d004..ae7e3c3 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --> -![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/steve-downey/sandbox-expected/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/steve-downey/sandbox-expected/actions/workflows/pre-commit-check.yml/badge.svg) [![Coverage](https://coveralls.io/repos/github/steve-downey/sandbox-expected/badge.svg?branch=main)](https://coveralls.io/github/steve-downey/sandbox-expected?branch=main) ![Standard Target](https://github.com/bemanproject/beman/blob/main/images/badges/cpp29.svg) +[![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg)](https://github.com/bemanproject/beman/blob/main/docs/beman_library_maturity_model.md#the-beman-library-maturity-model) ![Continuous Integration Tests](https://github.com/steve-downey/sandbox-expected/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/steve-downey/sandbox-expected/actions/workflows/pre-commit-check.yml/badge.svg) [![Coverage](https://coveralls.io/repos/github/steve-downey/sandbox-expected/badge.svg?branch=main)](https://coveralls.io/github/steve-downey/sandbox-expected?branch=main) ![Standard Target](https://github.com/bemanproject/beman/blob/main/images/badges/cpp29.svg) `beman.expected` is a C++ library implementing the std::expected specification conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/beman_standard.md). From 1fd2336b50f23507cce57bf5b76258ef27072968 Mon Sep 17 00:00:00 2001 From: Steve Downey Date: Fri, 10 Jul 2026 10:19:05 -0400 Subject: [PATCH 4/4] Fix codespell failures in papers/wg21-latex Fix genuine typos (souces, intializers) and add the legitimate technical tokens "FitH" (a PDF pdfstartview keyword) and "ist" (the makeindex style-file extension) to codespell's ignore list, since they're false positives rather than misspellings. --- papers/wg21-latex/README.md | 2 +- papers/wg21-latex/xrefdelta.tex | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/papers/wg21-latex/README.md b/papers/wg21-latex/README.md index 670f835..2b497bd 100644 --- a/papers/wg21-latex/README.md +++ b/papers/wg21-latex/README.md @@ -8,7 +8,7 @@ SPDX-License-Identifier: 2.0 license with LLVM exceptions Compiling the paper requires a working LaTeX installation. See instructions for configuring your system at [C++ Standard Draft Sources](https://github.com/cplusplus/draft/blob/main/README.rst) -The papers/ subdirectory has the LaTeX souces for P2988 and the supporting macro definitions. To build, run +The papers/ subdirectory has the LaTeX sources for P2988 and the supporting macro definitions. To build, run ```shell make papers diff --git a/papers/wg21-latex/xrefdelta.tex b/papers/wg21-latex/xrefdelta.tex index b0ed29a..cf5479a 100644 --- a/papers/wg21-latex/xrefdelta.tex +++ b/papers/wg21-latex/xrefdelta.tex @@ -454,7 +454,7 @@ % CWG 2843 removed [uaxid.def.rfmt] \removedxref{uaxid.def.rfmt} -% P3016R6 Resolve inconsistencies in begin/end for valarray and braced intializers +% P3016R6 Resolve inconsistencies in begin/end for valarray and braced initializers \removedxref{support.initlist.range} %%% Renamed sections. diff --git a/pyproject.toml b/pyproject.toml index 06c555a..4a17346 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,4 +15,4 @@ dev = [ ] [tool.codespell] -ignore-words-list = 'unexpect' +ignore-words-list = 'unexpect,fith,ist'