WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
307581
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
Add attachment
proposed patch, testcase, etc.
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
Pull request:
https://github.com/WebKit/WebKit/pull/58445
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
<
rdar://problem/170189356
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug