RESOLVED FIXED307581
REGRESSION(307222@main): Cannot build with Clang 18
https://bugs.webkit.org/show_bug.cgi?id=307581
Summary REGRESSION(307222@main): Cannot build with Clang 18
Adrian Perez
Reported 2026-02-11 12:08:08 PST
Full build log: https://build.webkit.org/#/builders/629/builds/22638 ---- FAILED: Tools/TestWebKitAPI/CMakeFiles/TestWTF.dir/Tests/WTF/GenerationalSet.cpp.o /usr/bin/ccache /usr/local/bin/clang++ -DBUILDING_GTK__=1 -DBUILDING_TestWTF -DBUILDING_WEBKIT=1 -DBUILDING_WITH_CMAKE=1 -DBWRAP_EXECUTABLE=\"/usr/bin/bwrap\" -DDBUS_PROXY_EXECUTABLE=\"/usr/bin/xdg-dbus-proxy\" -DGETTEXT_PACKAGE=\"WebKitGTK-6.0\" -DGTEST_CREATE_SHARED_LIBRARY=1 -DGTEST_HAS_PTHREAD=1 -DGTEST_HAS_RTTI=0 -DHAVE_CONFIG_H=1 -DJSC_GLIB_API_ENABLED -DPAS_BMALLOC=1 -DSTATICALLY_LINKED_WITH_WTF -DSTATICALLY_LINKED_WITH_bmalloc -D_GLIBCXX_ASSERTIONS=1 -I/sdk/webkit/WebKitBuild/GTK/Release -I/sdk/webkit/Tools/TestWebKitAPI -I/sdk/webkit/Source/ThirdParty/gtest/include -I/sdk/webkit/WebKitBuild/GTK/Release/WTF/Headers -I/sdk/webkit/WebKitBuild/GTK/Release/bmalloc/Headers -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/libmount -isystem /usr/include/blkid -isystem /jhbuild/install/include/sysprof-6 -fdiagnostics-color=always -fcolor-diagnostics -Wextra -Wall -Werror=undefined-internal -Werror=undefined-inline -pipe -Wno-noexcept-type -Wno-nullability-completeness -Wno-psabi -Wno-misleading-indentation -Wno-parentheses-equality -Qunused-arguments -Wundef -Wpointer-arith -Wmissing-format-attribute -Wformat-security -Wcast-align -Wno-tautological-compare -fasynchronous-unwind-tables -fdebug-types-section -fno-omit-frame-pointer -fno-strict-aliasing -fno-exceptions -fno-rtti -fcoroutines -ffunction-sections -fdata-sections -O3 -DNDEBUG -std=c++23 -fPIE -fvisibility=hidden -Wno-dangling-else -Wno-sign-compare -Wno-undef -Wno-unused-parameter -I/usr/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/libmount -I/usr/include/blkid -MD -MT Tools/TestWebKitAPI/CMakeFiles/TestWTF.dir/Tests/WTF/GenerationalSet.cpp.o -MF Tools/TestWebKitAPI/CMakeFiles/TestWTF.dir/Tests/WTF/GenerationalSet.cpp.o.d -o Tools/TestWebKitAPI/CMakeFiles/TestWTF.dir/Tests/WTF/GenerationalSet.cpp.o -c /sdk/webkit/Tools/TestWebKitAPI/Tests/WTF/GenerationalSet.cpp In file included from ../../../Tools/TestWebKitAPI/Tests/WTF/GenerationalSet.cpp:27: WTF/Headers/wtf/GenerationalSet.h:36:76: error: template template argument has different template parameters than its corresponding template template parameter 36 | template<typename GenerationType, template<typename> typename VectorType = Vector> | ^ ../../../Tools/TestWebKitAPI/Tests/WTF/GenerationalSet.cpp:35:28: note: while checking a default template argument used here 35 | GenerationalSet<uint8_t> set(100); | ~~~~~~~~~~~~~~~~~~~~~~~^ WTF/Headers/wtf/Vector.h:574:1: note: too many template parameters in template template argument 574 | template<typename T, size_t inlineCapacity, typename OverflowHandler, size_t minCapacity, typename Malloc> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WTF/Headers/wtf/GenerationalSet.h:36:35: note: previous template template parameter is here 36 | template<typename GenerationType, template<typename> typename VectorType = Vector> | ^~~~~~~~~~~~~~~~~~ WTF/Headers/wtf/GenerationalSet.h:36:76: error: template template argument has different template parameters than its corresponding template template parameter 36 | template<typename GenerationType, template<typename> typename VectorType = Vector> | ^ ../../../Tools/TestWebKitAPI/Tests/WTF/GenerationalSet.cpp:60:28: note: while checking a default template argument used here 60 | GenerationalSet<uint8_t> set(10); | ~~~~~~~~~~~~~~~~~~~~~~~^ WTF/Headers/wtf/Vector.h:574:1: note: too many template parameters in template template argument 574 | template<typename T, size_t inlineCapacity, typename OverflowHandler, size_t minCapacity, typename Malloc> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WTF/Headers/wtf/GenerationalSet.h:36:35: note: previous template template parameter is here 36 | template<typename GenerationType, template<typename> typename VectorType = Vector> | ^~~~~~~~~~~~~~~~~~ WTF/Headers/wtf/GenerationalSet.h:36:76: error: template template argument has different template parameters than its corresponding template template parameter 36 | template<typename GenerationType, template<typename> typename VectorType = Vector> | ^ ../../../Tools/TestWebKitAPI/Tests/WTF/GenerationalSet.cpp:83:28: note: while checking a default template argument used here 83 | GenerationalSet<uint8_t> set(10); | ~~~~~~~~~~~~~~~~~~~~~~~^ WTF/Headers/wtf/Vector.h:574:1: note: too many template parameters in template template argument 574 | template<typename T, size_t inlineCapacity, typename OverflowHandler, size_t minCapacity, typename Malloc> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WTF/Headers/wtf/GenerationalSet.h:36:35: note: previous template template parameter is here 36 | template<typename GenerationType, template<typename> typename VectorType = Vector> | ^~~~~~~~~~~~~~~~~~ WTF/Headers/wtf/GenerationalSet.h:36:76: error: template template argument has different template parameters than its corresponding template template parameter 36 | template<typename GenerationType, template<typename> typename VectorType = Vector> | ^ ../../../Tools/TestWebKitAPI/Tests/WTF/GenerationalSet.cpp:126:29: note: while checking a default template argument used here 126 | GenerationalSet<uint16_t> set16(50); | ~~~~~~~~~~~~~~~~~~~~~~~~^ WTF/Headers/wtf/Vector.h:574:1: note: too many template parameters in template template argument 574 | template<typename T, size_t inlineCapacity, typename OverflowHandler, size_t minCapacity, typename Malloc> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WTF/Headers/wtf/GenerationalSet.h:36:35: note: previous template template parameter is here 36 | template<typename GenerationType, template<typename> typename VectorType = Vector> | ^~~~~~~~~~~~~~~~~~ WTF/Headers/wtf/GenerationalSet.h:36:76: error: template template argument has different template parameters than its corresponding template template parameter 36 | template<typename GenerationType, template<typename> typename VectorType = Vector> | ^ ../../../Tools/TestWebKitAPI/Tests/WTF/GenerationalSet.cpp:132:29: note: while checking a default template argument used here 132 | GenerationalSet<uint64_t> set64(50); | ~~~~~~~~~~~~~~~~~~~~~~~~^ WTF/Headers/wtf/Vector.h:574:1: note: too many template parameters in template template argument 574 | template<typename T, size_t inlineCapacity, typename OverflowHandler, size_t minCapacity, typename Malloc> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WTF/Headers/wtf/GenerationalSet.h:36:35: note: previous template template parameter is here 36 | template<typename GenerationType, template<typename> typename VectorType = Vector> | ^~~~~~~~~~~~~~~~~~ 5 errors generated.
Attachments
Adrian Perez
Comment 1 2026-02-11 12:09:00 PST
The GTK/WPE/JSCOnly EWS builders use GCC and that's why this went unnoticed until it hit the post-commit bots.
Adrian Perez
Comment 2 2026-02-11 12:11:56 PST
For the record, Clang 21 is able to build this source file, so it could be that this may need some workaround for Clang 18, while we still need to support it for the GTK and WPE ports.
Adrian Perez
Comment 3 2026-02-11 12:43:19 PST
Digging a bit further, the discussion in https://github.com/llvm/llvm-project/issues/56373 points to -frelaxed-template-template-args, which indeed has been turned on by default for C++17 (and up) starting with Clang 19: https://releases.llvm.org/19.1.0/tools/clang/docs/ReleaseNotes.html#c-specific-potentially-breaking-changes I am testing a build with the flag added, and if that works I think we can have CMake add it for Clang <19.
Adrian Perez
Comment 4 2026-02-11 15:52:22 PST
EWS
Comment 5 2026-02-11 17:28:31 PST
Committed 307325@main (ffcf808e34af): <https://commits.webkit.org/307325@main> Reviewed commits have been landed. Closing PR #58445 and removing active labels.
Radar WebKit Bug Importer
Comment 6 2026-02-11 17:29:12 PST
Note You need to log in before you can comment on or make changes to this bug.