[dawn][common] Slightly improve check failure message in consteval
DAWN_CHECK already works correctly in consteval, but the error message
is obtuse. It works because HandleAssertionFailure is not valid to call
in consteval, and if the assert fails, it tries to call that.
This simply calls a different non-constexpr function whose name explains
what's going on. According to my online research this is really the only
to produce a custom error message in this case (at least until C++26).
Example error message:
../../src/dawn/tests/unittests/TypedIntegerTests.cpp:60:15: error: constexpr variable 'k' must be initialized by a constant expression
60 | constexpr int k = f();
| ^ ~~~
../../src/dawn/tests/unittests/TypedIntegerTests.cpp:56:5: note: non-constexpr function 'XXXXXXXXXX_CheckFailedInConsteval_XXXXXXXXXX' cannot be used in a constant expression
56 | DAWN_CHECK(false);
| ^
../../src/dawn/common/Assert.h:115:31: note: expanded from macro 'DAWN_CHECK'
115 | #define DAWN_CHECK(condition) DAWN_CHECK_CALLSITE_HELPER(__FILE__, __func__, __LINE__, condition)
| ^
../../src/dawn/common/Assert.h:65:17: note: expanded from macro 'DAWN_CHECK_CALLSITE_HELPER'
65 | ::dawn::XXXXXXXXXX_CheckFailedInConsteval_XXXXXXXXXX(); \
| ^
../../src/dawn/tests/unittests/TypedIntegerTests.cpp:60:19: note: in call to 'f()'
60 | constexpr int k = f();
| ^~~
../../src/dawn/common/Assert.h:138:13: note: declared here
138 | inline void XXXXXXXXXX_CheckFailedInConsteval_XXXXXXXXXX() {}
| ^
Bug: 515563577
Change-Id: I300e1d2c4a39fea65fd2aabcd3a83a02a8d03263
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/310655
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Dawn is an open-source and cross-platform implementation of the WebGPU standard. More precisely it implements webgpu.h that is a one-to-one mapping with the WebGPU IDL. Dawn is meant to be integrated as part of a larger system and is the underlying implementation of WebGPU in Chromium.
Dawn provides several WebGPU building blocks:
webgpu.h version that Dawn implements.webgpu.h.Helpful links:
Developer documentation:
User documentation: (TODO, figure out what overlaps with the webgpu.h docs)
BSD 3-Clause License, please see LICENSE.
This is not an officially supported Google product.