Date: Fri, 13 Mar 2026 08:33:38 +0000 From: Dimitry Andric <dim@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: a080335cdc0d - main - devel/catch: fix build with clang 21 Message-ID: <69b3cbe2.39b5b.558d2f2b@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/ports/commit/?id=a080335cdc0d1c38ab913096650e4b0cbcd9454e commit a080335cdc0d1c38ab913096650e4b0cbcd9454e Author: Dimitry Andric <dim@FreeBSD.org> AuthorDate: 2026-02-25 19:21:07 +0000 Commit: Dimitry Andric <dim@FreeBSD.org> CommitDate: 2026-03-13 08:33:17 +0000 devel/catch: fix build with clang 21 With clang 21 devel/catch fails to build, with errors similar to: /wrkdirs/usr/ports/devel/catch/work/Catch2-2.13.10/include/internal/catch_stringref.h:95:32: error: identifier '_sr' preceded by whitespace in a literal operator declaration is deprecated [-Werror,-Wdeprecated-literal-operator] 95 | constexpr auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef { | ~~~~~~~~~~~~^~~ | operator""_sr /wrkdirs/usr/ports/devel/catch/work/Catch2-2.13.10/include/internal/catch_stringref.h:100:28: error: identifier '_catch_sr' preceded by whitespace in a literal operator declaration is deprecated [-Werror,-Wdeprecated-literal-operator] 100 | constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef { | ~~~~~~~~~~~~^~~~~~~~~ | operator""_catch_sr /wrkdirs/usr/ports/devel/catch/work/Catch2-2.13.10/projects/SelfTest/IntrospectiveTests/String.tests.cpp:144:33: error: identifier '_sr' preceded by whitespace in a literal operator declaration is deprecated [-Werror,-Wdeprecated-literal-operator] 144 | using Catch::operator"" _sr; | ~~~~~~~~~~~^~~ | operator""_sr and later: /wrkdirs/usr/ports/devel/catch/work/Catch2-2.13.10/projects/SelfTest/UsageTests/ToStringVariant.tests.cpp:13:14: error: function 'operator=' could be declared with attribute 'noreturn' [-Werror,-Wmissing-noreturn] 13 | MyType1& operator=(MyType1 const&) { throw 3; } | ^ /wrkdirs/usr/ports/devel/catch/work/Catch2-2.13.10/projects/SelfTest/UsageTests/ToStringVariant.tests.cpp:18:14: error: function 'operator=' could be declared with attribute 'noreturn' [-Werror,-Wmissing-noreturn] 18 | MyType2& operator=(MyType2 const&) { throw 4; } | ^ The former can be fixed by removing the space between the identifier and the double quotes, the latter by declaring the functions with [[noreturn]]. PR: 293446 Approved by: maintainer timeout (2 weeks) MFH: 2026Q1 --- .../files/patch-include_internal_catch__approx.cpp | 15 +++++++++++++++ .../catch/files/patch-include_internal_catch__approx.h | 13 +++++++++++++ .../files/patch-include_internal_catch__stringref.h | 17 +++++++++++++++++ ...rojects_SelfTest_IntrospectiveTests_String.tests.cpp | 11 +++++++++++ ...ojects_SelfTest_UsageTests_ToStringVariant.tests.cpp | 17 +++++++++++++++++ 5 files changed, 73 insertions(+) diff --git a/devel/catch/files/patch-include_internal_catch__approx.cpp b/devel/catch/files/patch-include_internal_catch__approx.cpp new file mode 100644 index 000000000000..a552a75312a2 --- /dev/null +++ b/devel/catch/files/patch-include_internal_catch__approx.cpp @@ -0,0 +1,15 @@ +--- include/internal/catch_approx.cpp.orig 2022-10-16 09:02:17 UTC ++++ include/internal/catch_approx.cpp +@@ -73,10 +73,10 @@ namespace literals { + } // end namespace Detail + + namespace literals { +- Detail::Approx operator "" _a(long double val) { ++ Detail::Approx operator ""_a(long double val) { + return Detail::Approx(val); + } +- Detail::Approx operator "" _a(unsigned long long val) { ++ Detail::Approx operator ""_a(unsigned long long val) { + return Detail::Approx(val); + } + } // end namespace literals diff --git a/devel/catch/files/patch-include_internal_catch__approx.h b/devel/catch/files/patch-include_internal_catch__approx.h new file mode 100644 index 000000000000..4ac587fd402d --- /dev/null +++ b/devel/catch/files/patch-include_internal_catch__approx.h @@ -0,0 +1,13 @@ +--- include/internal/catch_approx.h.orig 2022-10-16 09:02:17 UTC ++++ include/internal/catch_approx.h +@@ -118,8 +118,8 @@ namespace literals { + } // end namespace Detail + + namespace literals { +- Detail::Approx operator "" _a(long double val); +- Detail::Approx operator "" _a(unsigned long long val); ++ Detail::Approx operator ""_a(long double val); ++ Detail::Approx operator ""_a(unsigned long long val); + } // end namespace literals + + template<> diff --git a/devel/catch/files/patch-include_internal_catch__stringref.h b/devel/catch/files/patch-include_internal_catch__stringref.h new file mode 100644 index 000000000000..cf80b6057a02 --- /dev/null +++ b/devel/catch/files/patch-include_internal_catch__stringref.h @@ -0,0 +1,17 @@ +--- include/internal/catch_stringref.h.orig 2022-10-16 09:02:17 UTC ++++ include/internal/catch_stringref.h +@@ -92,12 +92,12 @@ namespace Catch { + auto operator << ( std::ostream& os, StringRef const& sr ) -> std::ostream&; + + +- constexpr auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef { ++ constexpr auto operator ""_sr( char const* rawChars, std::size_t size ) noexcept -> StringRef { + return StringRef( rawChars, size ); + } + } // namespace Catch + +-constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef { ++constexpr auto operator ""_catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef { + return Catch::StringRef( rawChars, size ); + } + diff --git a/devel/catch/files/patch-projects_SelfTest_IntrospectiveTests_String.tests.cpp b/devel/catch/files/patch-projects_SelfTest_IntrospectiveTests_String.tests.cpp new file mode 100644 index 000000000000..34e1af72ce42 --- /dev/null +++ b/devel/catch/files/patch-projects_SelfTest_IntrospectiveTests_String.tests.cpp @@ -0,0 +1,11 @@ +--- projects/SelfTest/IntrospectiveTests/String.tests.cpp.orig 2022-10-16 09:02:17 UTC ++++ projects/SelfTest/IntrospectiveTests/String.tests.cpp +@@ -141,7 +141,7 @@ TEST_CASE("StringRef at compilation time", "[Strings][ + STATIC_REQUIRE(sr1.size() == 3); + STATIC_REQUIRE(sr1.isNullTerminated()); + +- using Catch::operator"" _sr; ++ using Catch::operator""_sr; + constexpr auto sr2 = ""_sr; + STATIC_REQUIRE(sr2.empty()); + STATIC_REQUIRE(sr2.size() == 0); diff --git a/devel/catch/files/patch-projects_SelfTest_UsageTests_ToStringVariant.tests.cpp b/devel/catch/files/patch-projects_SelfTest_UsageTests_ToStringVariant.tests.cpp new file mode 100644 index 000000000000..7da71b26f779 --- /dev/null +++ b/devel/catch/files/patch-projects_SelfTest_UsageTests_ToStringVariant.tests.cpp @@ -0,0 +1,17 @@ +--- projects/SelfTest/UsageTests/ToStringVariant.tests.cpp.orig 2022-10-16 09:02:17 UTC ++++ projects/SelfTest/UsageTests/ToStringVariant.tests.cpp +@@ -10,12 +10,12 @@ struct MyType1 { + struct MyType1 { + MyType1() = default; + [[noreturn]] MyType1(MyType1 const&) { throw 1; } +- MyType1& operator=(MyType1 const&) { throw 3; } ++ [[noreturn]] MyType1& operator=(MyType1 const&) { throw 3; } + }; + struct MyType2 { + MyType2() = default; + [[noreturn]] MyType2(MyType2 const&) { throw 2; } +- MyType2& operator=(MyType2 const&) { throw 4; } ++ [[noreturn]] MyType2& operator=(MyType2 const&) { throw 4; } + }; + + TEST_CASE( "variant<std::monostate>", "[toString][variant][approvals]")home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69b3cbe2.39b5b.558d2f2b>
