diff --git a/.clang-format b/.clang-format
index 01fb3677..aab677f7 100644
--- a/.clang-format
+++ b/.clang-format
@@ -4,6 +4,11 @@ Language: Json
IndentWidth: 2
UseTab: Never
---
+BasedOnStyle: LLVM
+Language: JavaScript
+IndentWidth: 4
+UseTab: Never
+---
Language: Cpp
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
index 2b19e029..63057b9f 100644
--- a/.github/workflows/pre-commit.yml
+++ b/.github/workflows/pre-commit.yml
@@ -41,4 +41,4 @@ jobs:
tool_name: pre-commit
level: warning
reviewdog_flags: "-fail-level=error"
- githubt_token: ${{ secrets.GITHUB_TOKEN }}
+ github_token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/docs/TODO.json b/docs/TODO.json
index fac8e31e..a75b63a6 100644
--- a/docs/TODO.json
+++ b/docs/TODO.json
@@ -1,66 +1,346 @@
{
- "allocator.requirements.general": { "code":true, "test":true, "doc":false },
- "execution": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "execution.queries": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "execution.queryable": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "execution.queryable.general]": { "code":true, "test":true, "doc":false, "comment":"nothing testable" },
- "execution.forwarding_query": { "code":true, "test":true, "doc":false },
- "execution.get_allocator": { "code":true, "test":true, "doc":false },
- "execution.get_stop_token": { "code":true, "test":true, "doc":false },
- "execution.environment.get_env": { "code":true, "test":true, "doc":false },
- "execution.get_domain": { "code":true, "test":true, "doc":false },
- "execution.queryable.concepts": { "code":true, "test":true, "doc":false },
- "execution.receivers": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "execution.senders": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "execution.senders.factories": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "execution.senders.adapt": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "execution.senders.consumers": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "execution.snd_rec_utils": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "execution.contexts": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "execution.coro_utils": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "execution.receivers.set_value": { "code":true, "test":true, "doc":false },
- "execution.receivers.set_error": { "code":true, "test":true, "doc":false },
- "execution.receivers.set_stopped": { "code":true, "test":true, "doc":false },
- "execution.opstate.start": { "code":true, "test":true, "doc":false },
- "execution.opstate": { "code":true, "test":true, "doc":false },
- "execution.general": { "code":true, "test":true, "doc":false },
- "except": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "except.special": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "library": { "code":true, "test":true, "doc":true, "comment":"term definition only" },
- "support": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "support.limits": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "utilities": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "function.objects": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "functional.syn": { "code":true, "test":true, "doc":false },
- "thread": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "thread.stoptoken": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "thread.stoptoken.intro": { "code":true, "test":true, "doc":false },
- "thread.stoptoken.syn": { "code":true, "test":true, "doc":false },
- "stoptoken.nonmembers": { "code":true, "test":true, "doc":true, "comment":"removed" },
- "stoptoken.concepts": { "code":true, "test":true, "doc":false },
- "stoptoken": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "stoptoken.cons": { "removed":true },
- "stoptoken.general": { "code":true, "test":true, "doc":false },
- "stoptoken.mem": { "code":true, "test":true, "doc":false },
- "stopsource": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "stopsource.general": { "code":true, "test":true, "doc":false },
- "stopsource.cons": { "code":true, "test":true, "doc":false },
- "stopsource.mem": { "code":true, "test":true, "doc":false },
- "stopsource.nonmembers": { "code":true, "test":true, "doc":true, "comment":"removed" },
- "stopcallback": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "stopcallback.general": { "code":true, "test":true, "doc":false },
- "stopcallback.cons": { "code":true, "test":true, "doc":false },
- "stoptoken.never": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "stoptoken.never.general": { "code":true, "test":true, "doc":false },
- "stoptoken.inplace": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "stoptoken.inplace.general": { "code":true, "test":true, "doc":false },
- "stoptoken.inplace.members": { "code":true, "test":true, "doc":false },
- "stopsource.inplace": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "stopsource.inplace.general": { "code":true, "test":true, "doc":false },
- "stopsource.inplace.cons": { "code":true, "test":true, "doc":false },
- "stopsource.inplace.mem": { "code":true, "test":true, "doc":false },
- "stopcallback.inplace": { "code":true, "test":true, "doc":true, "comment":"empty" },
- "stopcallback.inplace.general": { "code":true, "test":true, "doc":false },
- "stopcallback.inplace.cons": { "code":true, "test":true, "doc":false },
- "": {}
+ "allocator.requirements.general": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "execution": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "execution.queries": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "execution.queryable": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "execution.queryable.general]": {
+ "code": true,
+ "test": true,
+ "doc": false,
+ "comment": "nothing testable"
+ },
+ "execution.forwarding_query": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "execution.get_allocator": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "execution.get_stop_token": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "execution.environment.get_env": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "execution.get_domain": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "execution.queryable.concepts": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "execution.receivers": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "execution.senders": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "execution.senders.factories": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "execution.senders.adapt": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "execution.senders.consumers": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "execution.snd_rec_utils": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "execution.contexts": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "execution.coro_utils": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "execution.receivers.set_value": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "execution.receivers.set_error": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "execution.receivers.set_stopped": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "execution.opstate.start": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "execution.opstate": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "execution.general": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "except": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "except.special": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "library": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "term definition only"
+ },
+ "support": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "support.limits": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "utilities": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "function.objects": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "functional.syn": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "thread": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "thread.stoptoken": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "thread.stoptoken.intro": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "thread.stoptoken.syn": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stoptoken.nonmembers": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "removed"
+ },
+ "stoptoken.concepts": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stoptoken": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "stoptoken.cons": {
+ "removed": true
+ },
+ "stoptoken.general": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stoptoken.mem": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stopsource": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "stopsource.general": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stopsource.cons": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stopsource.mem": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stopsource.nonmembers": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "removed"
+ },
+ "stopcallback": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "stopcallback.general": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stopcallback.cons": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stoptoken.never": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "stoptoken.never.general": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stoptoken.inplace": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "stoptoken.inplace.general": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stoptoken.inplace.members": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stopsource.inplace": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "stopsource.inplace.general": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stopsource.inplace.cons": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stopsource.inplace.mem": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stopcallback.inplace": {
+ "code": true,
+ "test": true,
+ "doc": true,
+ "comment": "empty"
+ },
+ "stopcallback.inplace.general": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "stopcallback.inplace.cons": {
+ "code": true,
+ "test": true,
+ "doc": false
+ },
+ "": {}
}
diff --git a/docs/doxygen-awesome-darkmode-toggle.js b/docs/doxygen-awesome-darkmode-toggle.js
index 9c5875d5..5fe8cc70 100644
--- a/docs/doxygen-awesome-darkmode-toggle.js
+++ b/docs/doxygen-awesome-darkmode-toggle.js
@@ -31,51 +31,60 @@ class DoxygenAwesomeDarkModeToggle extends HTMLElement {
// SVG icons from https://fonts.google.com/icons
// Licensed under the Apache 2.0 license:
// https://www.apache.org/licenses/LICENSE-2.0.html
- static lightModeIcon = ``
- static darkModeIcon = ``
- static title = "Toggle Light/Dark Mode"
-
- static prefersLightModeInDarkModeKey = "prefers-light-mode-in-dark-mode"
- static prefersDarkModeInLightModeKey = "prefers-dark-mode-in-light-mode"
-
- static _staticConstructor = function () {
- DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.userPreference)
- // Update the color scheme when the browsers preference changes
- // without user interaction on the website.
- window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
- DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged()
- })
- // Update the color scheme when the tab is made visible again.
- // It is possible that the appearance was changed in another tab
- // while this tab was in the background.
- document.addEventListener("visibilitychange", visibilityState => {
- if (document.visibilityState === 'visible') {
- DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged()
- }
- });
- }()
-
- static init() {
- $(function () {
- $(document).ready(function () {
- const toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
+ static lightModeIcon =
+ `` static darkModeIcon =
+ `` static title =
+ "Toggle Light/Dark Mode"
+
+ static prefersLightModeInDarkModeKey =
+ "prefers-light-mode-in-dark-mode" static prefersDarkModeInLightModeKey =
+ "prefers-dark-mode-in-light-mode"
+
+ static _staticConstructor =
+ function() {
+ DoxygenAwesomeDarkModeToggle.enableDarkMode(
+ DoxygenAwesomeDarkModeToggle.userPreference)
+ // Update the color scheme when the browsers preference changes
+ // without user interaction on the website.
+ window.matchMedia('(prefers-color-scheme: dark)')
+ .addEventListener('change',
+ event => {DoxygenAwesomeDarkModeToggle
+ .onSystemPreferenceChanged()})
+ // Update the color scheme when the tab is made visible again.
+ // It is possible that the appearance was changed in another tab
+ // while this tab was in the background.
+ document.addEventListener("visibilitychange", visibilityState => {
+ if (document.visibilityState === 'visible') {
+ DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged()
+ }
+ });
+ }()
+
+ static init() {
+ $(function() {
+ $(document).ready(function() {
+ const toggleButton =
+ document.createElement('doxygen-awesome-dark-mode-toggle')
toggleButton.title = DoxygenAwesomeDarkModeToggle.title
toggleButton.updateIcon()
- window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
- toggleButton.updateIcon()
+ window.matchMedia('(prefers-color-scheme: dark)')
+ .addEventListener('change',
+ event => {toggleButton.updateIcon()})
+ document.addEventListener(
+ "visibilitychange", visibilityState => {
+ if (document.visibilityState === 'visible') {
+ toggleButton.updateIcon()
+ }
+ });
+
+ $(document).ready(function() {
+ document.getElementById("MSearchBox")
+ .parentNode.appendChild(toggleButton)
})
- document.addEventListener("visibilitychange", visibilityState => {
- if (document.visibilityState === 'visible') {
- toggleButton.updateIcon()
- }
- });
-
- $(document).ready(function () {
- document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
- })
- $(window).resize(function () {
- document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
+ $(window).resize(function() {
+ document.getElementById("MSearchBox")
+ .parentNode.appendChild(toggleButton)
})
})
})
@@ -97,23 +106,34 @@ class DoxygenAwesomeDarkModeToggle extends HTMLElement {
* @returns `true` for dark-mode, `false` for light-mode user preference
*/
static get userPreference() {
- return (!DoxygenAwesomeDarkModeToggle.systemPreference && localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)) ||
- (DoxygenAwesomeDarkModeToggle.systemPreference && !localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey))
+ return (!DoxygenAwesomeDarkModeToggle.systemPreference &&
+ localStorage.getItem(DoxygenAwesomeDarkModeToggle
+ .prefersDarkModeInLightModeKey)) ||
+ (DoxygenAwesomeDarkModeToggle.systemPreference &&
+ !localStorage.getItem(
+ DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey))
}
static set userPreference(userPreference) {
DoxygenAwesomeDarkModeToggle.darkModeEnabled = userPreference
if (!userPreference) {
if (DoxygenAwesomeDarkModeToggle.systemPreference) {
- localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey, true)
+ localStorage.setItem(
+ DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey,
+ true)
} else {
- localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)
+ localStorage.removeItem(
+ DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)
}
- } else {
+ }
+ else {
if (!DoxygenAwesomeDarkModeToggle.systemPreference) {
- localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey, true)
+ localStorage.setItem(
+ DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey,
+ true)
} else {
- localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey)
+ localStorage.removeItem(
+ DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey)
}
}
DoxygenAwesomeDarkModeToggle.onUserPreferenceChanged()
@@ -132,17 +152,20 @@ class DoxygenAwesomeDarkModeToggle extends HTMLElement {
}
static onSystemPreferenceChanged() {
- DoxygenAwesomeDarkModeToggle.darkModeEnabled = DoxygenAwesomeDarkModeToggle.userPreference
- DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled)
+ DoxygenAwesomeDarkModeToggle.darkModeEnabled =
+ DoxygenAwesomeDarkModeToggle.userPreference
+ DoxygenAwesomeDarkModeToggle.enableDarkMode(
+ DoxygenAwesomeDarkModeToggle.darkModeEnabled)
}
static onUserPreferenceChanged() {
- DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled)
+ DoxygenAwesomeDarkModeToggle.enableDarkMode(
+ DoxygenAwesomeDarkModeToggle.darkModeEnabled)
}
toggleDarkMode() {
- DoxygenAwesomeDarkModeToggle.userPreference = !DoxygenAwesomeDarkModeToggle.userPreference
- this.updateIcon()
+ DoxygenAwesomeDarkModeToggle.userPreference =
+ !DoxygenAwesomeDarkModeToggle.userPreference this.updateIcon()
}
updateIcon() {
@@ -154,4 +177,5 @@ class DoxygenAwesomeDarkModeToggle extends HTMLElement {
}
}
-customElements.define("doxygen-awesome-dark-mode-toggle", DoxygenAwesomeDarkModeToggle);
+customElements.define("doxygen-awesome-dark-mode-toggle",
+ DoxygenAwesomeDarkModeToggle);
diff --git a/include/beman/execution/detail/as_awaitable.hpp b/include/beman/execution/detail/as_awaitable.hpp
index 50345227..9ffd2439 100644
--- a/include/beman/execution/detail/as_awaitable.hpp
+++ b/include/beman/execution/detail/as_awaitable.hpp
@@ -31,7 +31,7 @@ struct as_awaitable_t {
return ::std::forward(expr).as_awaitable(promise);
} else if constexpr (::beman::execution::detail::
is_awaitable ||
- not::beman::execution::detail::awaitable_sender) {
+ !::beman::execution::detail::awaitable_sender) {
return ::std::forward(expr);
} else {
return ::beman::execution::detail::sender_awaitable{::std::forward(expr), promise};
diff --git a/include/beman/execution/detail/basic_sender.hpp b/include/beman/execution/detail/basic_sender.hpp
index 2b2c597e..7884cbb2 100644
--- a/include/beman/execution/detail/basic_sender.hpp
+++ b/include/beman/execution/detail/basic_sender.hpp
@@ -39,7 +39,7 @@ struct basic_sender : ::beman::execution::detail::product_type
- requires(not::beman::execution::receiver)
+ requires(!::beman::execution::receiver)
auto connect(Receiver receiver) = BEMAN_EXECUTION_DELETE("the passed receiver doesn't model receiver");
private:
diff --git a/include/beman/execution/detail/bulk.hpp b/include/beman/execution/detail/bulk.hpp
index 0f8786f0..cbb7d778 100644
--- a/include/beman/execution/detail/bulk.hpp
+++ b/include/beman/execution/detail/bulk.hpp
@@ -54,7 +54,7 @@ struct impls_for : ::beman::execution::detail::default_impls {
Rcvr& rcvr,
Tag,
Args&&... args) noexcept -> void
- requires(not::std::same_as || std::is_invocable_v)
+ requires(!::std::same_as || std::is_invocable_v)
{
if constexpr (std::same_as) {
auto& [shape, f] = state;
@@ -92,8 +92,8 @@ struct fixed_completions_helper> {
struct may_throw;
template
struct may_throw {
- static constexpr bool value = std::same_as &&
- not::std::is_nothrow_invocable();
+ static constexpr bool value =
+ std::same_as && !::std::is_nothrow_invocable();
};
template
struct may_throw> {
diff --git a/include/beman/execution/detail/fwd_env.hpp b/include/beman/execution/detail/fwd_env.hpp
index 877ed4ab..d0ef2d0b 100644
--- a/include/beman/execution/detail/fwd_env.hpp
+++ b/include/beman/execution/detail/fwd_env.hpp
@@ -28,7 +28,7 @@ class fwd_env {
explicit fwd_env(Env&& e) : env(::std::forward(e)) {}
template
- requires(not::beman::execution::forwarding_query(::std::remove_cvref_t()))
+ requires(!::beman::execution::forwarding_query(::std::remove_cvref_t()))
constexpr auto query(Query&& q,
Args&&... args) const = BEMAN_EXECUTION_DELETE("the used query is not forwardable");
diff --git a/include/beman/execution/detail/get_completion_signatures.hpp b/include/beman/execution/detail/get_completion_signatures.hpp
index b9af4954..23d5e94a 100644
--- a/include/beman/execution/detail/get_completion_signatures.hpp
+++ b/include/beman/execution/detail/get_completion_signatures.hpp
@@ -53,9 +53,9 @@ struct get_completion_signatures_t {
public:
template
- requires(not::std::same_as(),
- ::std::declval()))>)
+ requires(!::std::same_as(),
+ ::std::declval()))>)
auto operator()(Sender&& sender, Env&& env) const noexcept {
return this->get(::std::forward(sender), ::std::forward(env));
}
diff --git a/include/beman/execution/detail/get_domain_late.hpp b/include/beman/execution/detail/get_domain_late.hpp
index d19c49ff..c2a3f954 100644
--- a/include/beman/execution/detail/get_domain_late.hpp
+++ b/include/beman/execution/detail/get_domain_late.hpp
@@ -17,7 +17,7 @@
namespace beman::execution::detail {
template
-concept not_void = not::std::same_as;
+concept not_void = !::std::same_as;
template
struct get_domain_late_helper {
diff --git a/include/beman/execution/detail/just.hpp b/include/beman/execution/detail/just.hpp
index 0869937a..6486e298 100644
--- a/include/beman/execution/detail/just.hpp
+++ b/include/beman/execution/detail/just.hpp
@@ -8,6 +8,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -22,12 +23,13 @@
namespace beman::execution::detail {
template
-concept just_size = (not::std::same_as or 1u == sizeof...(T)) &&
- (not::std::same_as or 0u == sizeof...(T));
+concept just_size = (!::std::same_as or 1u == sizeof...(T)) &&
+ (!::std::same_as or 0u == sizeof...(T));
template
struct just_t {
template
- requires ::beman::execution::detail::just_size && (::std::movable<::std::decay_t> && ...)
+ requires ::beman::execution::detail::just_size &&
+ (::beman::execution::detail::movable_value && ...)
auto operator()(T&&... arg) const {
return ::beman::execution::detail::make_sender(
*this, ::beman::execution::detail::product_type{::std::forward(arg)...});
diff --git a/include/beman/execution/detail/movable_value.hpp b/include/beman/execution/detail/movable_value.hpp
index 14a064ba..7dd0a214 100644
--- a/include/beman/execution/detail/movable_value.hpp
+++ b/include/beman/execution/detail/movable_value.hpp
@@ -13,7 +13,7 @@ namespace beman::execution::detail {
template
concept movable_value =
::std::move_constructible<::std::decay_t> && ::std::constructible_from<::std::decay_t, T> &&
- (not::std::is_array_v<::std::remove_reference_t>);
+ (!::std::is_array_v<::std::remove_reference_t>);
}
// ----------------------------------------------------------------------------
diff --git a/include/beman/execution/detail/receiver.hpp b/include/beman/execution/detail/receiver.hpp
index 969b1891..e1eb259b 100644
--- a/include/beman/execution/detail/receiver.hpp
+++ b/include/beman/execution/detail/receiver.hpp
@@ -20,8 +20,7 @@ concept receiver =
requires(const ::std::remove_cvref_t& rcvr) {
{ ::beman::execution::get_env(rcvr) } -> ::beman::execution::detail::queryable;
} && ::std::move_constructible<::std::remove_cvref_t> &&
- ::std::constructible_from<::std::remove_cvref_t, Rcvr> &&
- (not::std::is_final_v<::std::remove_cvref_t>);
+ ::std::constructible_from<::std::remove_cvref_t, Rcvr> && (!::std::is_final_v<::std::remove_cvref_t>);
} // namespace beman::execution
// ----------------------------------------------------------------------------
diff --git a/include/beman/execution/detail/schedule_from.hpp b/include/beman/execution/detail/schedule_from.hpp
index d2f930bf..1a6fb95a 100644
--- a/include/beman/execution/detail/schedule_from.hpp
+++ b/include/beman/execution/detail/schedule_from.hpp
@@ -83,7 +83,7 @@ struct impls_for<::beman::execution::detail::schedule_from_t> : ::beman::executi
try {
::std::visit(
[this](Tuple& result) noexcept -> void {
- if constexpr (not::std::same_as<::std::monostate, Tuple>) {
+ if constexpr (!::std::same_as<::std::monostate, Tuple>) {
::std::apply(
[this](auto&& tag, auto&&... args) {
tag(::std::move(this->state->receiver), ::std::move(args)...);
diff --git a/include/beman/execution/detail/sender_adaptor_closure.hpp b/include/beman/execution/detail/sender_adaptor_closure.hpp
index 04b8a21d..8f82aa05 100644
--- a/include/beman/execution/detail/sender_adaptor_closure.hpp
+++ b/include/beman/execution/detail/sender_adaptor_closure.hpp
@@ -31,7 +31,7 @@ concept is_sender_adaptor_closure =
namespace beman::execution::detail::pipeable {
template <::beman::execution::sender Sender, typename Adaptor>
- requires(not::beman::execution::sender) &&
+ requires(!::beman::execution::sender) &&
::std::derived_from<::std::decay_t,
::beman::execution::sender_adaptor_closure<::std::decay_t>> &&
requires(Sender&& sender, Adaptor&& adaptor) {
diff --git a/include/beman/execution/detail/sends_stopped.hpp b/include/beman/execution/detail/sends_stopped.hpp
index 28d16d81..b94daae1 100644
--- a/include/beman/execution/detail/sends_stopped.hpp
+++ b/include/beman/execution/detail/sends_stopped.hpp
@@ -17,7 +17,7 @@
namespace beman::execution {
template
requires ::beman::execution::sender_in
-inline constexpr bool sends_stopped{not::std::same_as<
+inline constexpr bool sends_stopped{!::std::same_as<
::beman::execution::detail::type_list<>,
::beman::execution::detail::gather_signatures< ::beman::execution::set_stopped_t,
::beman::execution::completion_signatures_of_t,
diff --git a/include/beman/execution/detail/single_sender_value_type.hpp b/include/beman/execution/detail/single_sender_value_type.hpp
index 84aae97d..4bbffa41 100644
--- a/include/beman/execution/detail/single_sender_value_type.hpp
+++ b/include/beman/execution/detail/single_sender_value_type.hpp
@@ -38,8 +38,8 @@ template
requires(not requires {
typename ::beman::execution::value_types_of_t;
}) &&
- (not::std::same_as<::std::variant<::std::tuple<>>,
- ::beman::execution::value_types_of_t>) &&
+ (!::std::same_as<::std::variant<::std::tuple<>>,
+ ::beman::execution::value_types_of_t>) &&
requires {
typename ::beman::execution::
value_types_of_t;
diff --git a/include/beman/execution/detail/split.hpp b/include/beman/execution/detail/split.hpp
index a62c0cb8..f72e51a5 100644
--- a/include/beman/execution/detail/split.hpp
+++ b/include/beman/execution/detail/split.hpp
@@ -246,7 +246,7 @@ struct impls_for : ::beman::execution::detail::default_impls {
try {
::std::visit(
[&](const Arg& arg) noexcept -> void {
- if constexpr (not::std::same_as<::std::decay_t, ::std::monostate>) {
+ if constexpr (!::std::same_as<::std::decay_t, ::std::monostate>) {
::std::apply(
[&](auto tag, const auto&... args) noexcept -> void {
tag(::std::move(*receiver), args...);
diff --git a/include/beman/execution/detail/transform_sender.hpp b/include/beman/execution/detail/transform_sender.hpp
index 5564902b..2a69659a 100644
--- a/include/beman/execution/detail/transform_sender.hpp
+++ b/include/beman/execution/detail/transform_sender.hpp
@@ -28,9 +28,9 @@ template
requires(Domain dom, Sender&& sender, const Env&... env) {
dom.transform_sender(::std::forward(sender), env...);
} &&
- (not::std::same_as<::std::remove_cvref_t,
- std::remove_cvref_t().transform_sender(
- ::std::declval(), ::std::declval()...))>>)
+ (!::std::same_as<::std::remove_cvref_t,
+ std::remove_cvref_t().transform_sender(
+ ::std::declval(), ::std::declval()...))>>)
constexpr auto transform_sender(Domain dom, Sender&& sender, const Env&... env) noexcept -> ::beman::execution::sender
decltype(auto) {
return ::beman::execution::detail::transform_sender(
@@ -53,9 +53,9 @@ template
requires(not requires(Domain dom, Sender&& sender, const Env&... env) {
dom.transform_sender(::std::forward(sender), env...);
}) &&
- (not::std::same_as<::std::remove_cvref_t,
- ::std::remove_cvref_t(), ::std::declval()...))>>)
+ (!::std::same_as<::std::remove_cvref_t,
+ ::std::remove_cvref_t(), ::std::declval()...))>>)
constexpr auto transform_sender(Domain dom, Sender&& sender, const Env&... env) noexcept(noexcept(
::beman::execution::default_domain{}.transform_sender(::std::declval(), ::std::declval()...)))
-> ::beman::execution::sender decltype(auto) {
@@ -83,9 +83,9 @@ template
requires(Domain dom, Sender&& sender, const Env&... env) {
dom.transform_sender(::std::forward(sender), env...);
} &&
- (not::std::same_as<::std::remove_cvref_t,
- std::remove_cvref_t().transform_sender(
- ::std::declval(), ::std::declval()...))>>)
+ (!::std::same_as<::std::remove_cvref_t,
+ std::remove_cvref_t().transform_sender(
+ ::std::declval(), ::std::declval()...))>>)
constexpr auto transform_sender(Domain dom, Sender&& sender, const Env&... env) noexcept -> ::beman::execution::sender
auto {
return ::beman::execution::detail::transform_sender(
@@ -110,9 +110,9 @@ template
requires(sizeof...(Env) < 2) && (not requires(Domain dom, Sender&& sender, const Env&... env) {
dom.transform_sender(::std::forward(sender), env...);
}) &&
- (not::std::same_as<::std::remove_cvref_t,
- ::std::remove_cvref_t(), ::std::declval()...))>>)
+ (!::std::same_as<::std::remove_cvref_t,
+ ::std::remove_cvref_t(), ::std::declval()...))>>)
constexpr auto transform_sender(Domain dom, Sender&& sender, const Env&... env) noexcept(
noexcept(::beman::execution::detail::transform_sender(
dom,
diff --git a/tests/beman/execution/CMakeLists.txt b/tests/beman/execution/CMakeLists.txt
index c6e28865..d66fbf45 100644
--- a/tests/beman/execution/CMakeLists.txt
+++ b/tests/beman/execution/CMakeLists.txt
@@ -11,6 +11,7 @@ endif()
list(
APPEND
execution_tests
+ issue-144.test
exec-on.test
notify.test
exec-scounting.test
diff --git a/tests/beman/execution/exec-general.test.cpp b/tests/beman/execution/exec-general.test.cpp
index 4dfd21e5..9f4f3cff 100644
--- a/tests/beman/execution/exec-general.test.cpp
+++ b/tests/beman/execution/exec-general.test.cpp
@@ -37,8 +37,10 @@ auto test_movable_value() -> void {
static_assert(not test_detail::movable_value);
static_assert(not test_detail::movable_value);
+ // clang-format off
static_assert(not test_detail::movable_value); // NOLINT(hicpp-avoid-c-arrays)
static_assert(not test_detail::movable_value); // NOLINT(hicpp-avoid-c-arrays)
+ // clang-format on
}
auto test_matching_sig() -> void {
diff --git a/tests/beman/execution/exec-set-error.test.cpp b/tests/beman/execution/exec-set-error.test.cpp
index 54b87c8b..bd528c02 100644
--- a/tests/beman/execution/exec-set-error.test.cpp
+++ b/tests/beman/execution/exec-set-error.test.cpp
@@ -25,10 +25,14 @@ struct receiver {
template
void test_callable() {
static_assert(requires { test_std::set_error(std::declval(), 42); });
+ // clang-format off
static_assert(requires { test_std::set_error(std::declval(), 42); });
+ // clang-format on
static_assert(not requires { test_std::set_error(std::declval(), 42); });
+ // clang-format off
static_assert(not requires { test_std::set_error(std::declval(), 42); });
+ // clang-format on
static_assert(not requires { test_std::set_error(std::declval(), 42); });
static_assert(not requires { test_std::set_error(std::declval(), 42); });
static_assert(not requires { test_std::set_error(std::declval(), 42); });
diff --git a/tests/beman/execution/exec-set-stopped.test.cpp b/tests/beman/execution/exec-set-stopped.test.cpp
index b8aa2530..ea7aa720 100644
--- a/tests/beman/execution/exec-set-stopped.test.cpp
+++ b/tests/beman/execution/exec-set-stopped.test.cpp
@@ -20,11 +20,15 @@ template
auto test_callable() -> void {
// can be called with non-const rvalue receiver
static_assert(requires { test_std::set_stopped(std::declval()); });
+ // clang-format off
static_assert(requires { test_std::set_stopped(std::declval()); });
+ // clang-format on
// cannot be called with const or lvalue receiver
static_assert(not requires { test_std::set_stopped(std::declval()); });
+ // clang-format off
static_assert(not requires { test_std::set_stopped(std::declval()); });
+ // clang-format on
static_assert(not requires { test_std::set_stopped(std::declval()); });
static_assert(not requires { test_std::set_stopped(std::declval()); });
static_assert(not requires { test_std::set_stopped(std::declval()); });
diff --git a/tests/beman/execution/exec-set-value.test.cpp b/tests/beman/execution/exec-set-value.test.cpp
index 6ca5415f..292347e9 100644
--- a/tests/beman/execution/exec-set-value.test.cpp
+++ b/tests/beman/execution/exec-set-value.test.cpp
@@ -33,11 +33,15 @@ template
auto test_callable(Args&&... args) -> void {
// can be called with non-const rvalue receiver
static_assert(requires { test_std::set_value(std::declval(), args...); });
+ // clang-format off
static_assert(requires { test_std::set_value(std::declval(), args...); });
+ // clang-format on
// cannot be called with const or lvalue receiver
static_assert(not requires { test_std::set_value(std::declval(), args...); });
+ // clang-format off
static_assert(not requires { test_std::set_value(std::declval(), args...); });
+ // clang-format on
static_assert(not requires { test_std::set_value(std::declval(), args...); });
static_assert(not requires { test_std::set_value(std::declval(), args...); });
static_assert(not requires { test_std::set_value(std::declval(), args...); });
diff --git a/tests/beman/execution/issue-144.test.cpp b/tests/beman/execution/issue-144.test.cpp
new file mode 100644
index 00000000..6f45afcb
--- /dev/null
+++ b/tests/beman/execution/issue-144.test.cpp
@@ -0,0 +1,11 @@
+// tests/beman/execution/issue-144.test.cpp -*-C++-*-
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+#include
+
+namespace bex = beman::execution;
+
+int main() {
+ double d = 19.0;
+ bex::just([d](auto) { return d; });
+}
diff --git a/tests/beman/execution/stopcallback-cons.test.cpp b/tests/beman/execution/stopcallback-cons.test.cpp
index d460710a..7580951e 100644
--- a/tests/beman/execution/stopcallback-cons.test.cpp
+++ b/tests/beman/execution/stopcallback-cons.test.cpp
@@ -21,9 +21,9 @@ TEST(stopcallback_cons) {
};
static_assert(::std::is_constructible_v<::test_std::stop_callback, const ::test_std::stop_token&, int*>);
static_assert(
- not::std::is_constructible_v<::test_std::stop_callback, const ::test_std::stop_token&, bool*>);
+ !::std::is_constructible_v<::test_std::stop_callback, const ::test_std::stop_token&, bool*>);
static_assert(::std::is_constructible_v<::test_std::stop_callback, ::test_std::stop_token&&, int*>);
- static_assert(not::std::is_constructible_v<::test_std::stop_callback, ::test_std::stop_token&&, bool*>);
+ static_assert(!::std::is_constructible_v<::test_std::stop_callback, ::test_std::stop_token&&, bool*>);
// Reference: [stopcallback.cons] p2, p3
// Plan:
diff --git a/tests/beman/execution/stopcallback-general.test.cpp b/tests/beman/execution/stopcallback-general.test.cpp
index e0260cf4..bc13593e 100644
--- a/tests/beman/execution/stopcallback-general.test.cpp
+++ b/tests/beman/execution/stopcallback-general.test.cpp
@@ -29,10 +29,10 @@ auto test_stop_callback_interface() -> void {
CB ccb(ctoken, ThrowInit());
CB tcb{::test_std::stop_token(), ThrowInit()};
- static_assert(not::std::is_copy_constructible_v);
- static_assert(not::std::is_move_constructible_v);
- static_assert(not::std::is_copy_assignable_v);
- static_assert(not::std::is_move_assignable_v);
+ static_assert(!::std::is_copy_constructible_v);
+ static_assert(!::std::is_move_constructible_v);
+ static_assert(!::std::is_copy_assignable_v);
+ static_assert(!::std::is_move_assignable_v);
::test_std::stop_callback cb(ctoken, Callback(ThrowInit()));
}
diff --git a/tests/beman/execution/stopcallback-inplace-general.test.cpp b/tests/beman/execution/stopcallback-inplace-general.test.cpp
index feed1681..accbcd92 100644
--- a/tests/beman/execution/stopcallback-inplace-general.test.cpp
+++ b/tests/beman/execution/stopcallback-inplace-general.test.cpp
@@ -16,10 +16,10 @@ TEST(stopcallback_inplace_general) {
using CB = ::test_std::inplace_stop_callback;
static_assert(::std::same_as);
static_assert(::std::destructible);
- static_assert(not::std::move_constructible);
- static_assert(not::std::copy_constructible);
- static_assert(not::std::is_move_assignable_v);
- static_assert(not::std::is_copy_assignable_v);
+ static_assert(!::std::move_constructible);
+ static_assert(!::std::copy_constructible);
+ static_assert(!::std::is_move_assignable_v);
+ static_assert(!::std::is_copy_assignable_v);
Callback callback;
::test_std::inplace_stop_callback cb(::test_std::inplace_stop_token(), callback);
diff --git a/tests/beman/execution/stoptoken-concepts.test.cpp b/tests/beman/execution/stoptoken-concepts.test.cpp
index 2eb4969d..fa7bdeaa 100644
--- a/tests/beman/execution/stoptoken-concepts.test.cpp
+++ b/tests/beman/execution/stoptoken-concepts.test.cpp
@@ -183,10 +183,10 @@ auto test_unstoppable_token() -> void {
// Reference: [stoptoken.concepts] p4
static_assert(::test_std::unstoppable_token<::unstoppable_token::token>);
- static_assert(not::test_std::stoppable_token<::unstoppable_token::token>);
- static_assert(not::test_std::unstoppable_token<::unstoppable_token::token>);
+ static_assert(!::test_std::stoppable_token<::unstoppable_token::token>);
+ static_assert(!::test_std::unstoppable_token<::unstoppable_token::token>);
static_assert(::test_std::stoppable_token<::unstoppable_token::token>);
- static_assert(not::test_std::unstoppable_token<::unstoppable_token::token>);
+ static_assert(!::test_std::unstoppable_token<::unstoppable_token::token>);
}
namespace stoppable_source {
@@ -228,12 +228,12 @@ auto test_detail_stoppable_source() -> void {
// Reference: [stoptoken.concepts] p6
static_assert(::test_detail::stoppable_source<::stoppable_source::source>);
- static_assert(not::test_detail::stoppable_source<::stoppable_source::source>);
- static_assert(not::test_detail::stoppable_source<::stoppable_source::source>);
- static_assert(not::test_detail::stoppable_source<::stoppable_source::source>);
- static_assert(not::test_detail::stoppable_source<::stoppable_source::source>);
- static_assert(not::test_detail::stoppable_source<::stoppable_source::source>);
- static_assert(not::test_detail::stoppable_source<::stoppable_source::source>);
+ static_assert(!::test_detail::stoppable_source<::stoppable_source::source>);
+ static_assert(!::test_detail::stoppable_source<::stoppable_source::source>);
+ static_assert(!::test_detail::stoppable_source<::stoppable_source::source>);
+ static_assert(!::test_detail::stoppable_source<::stoppable_source::source>);
+ static_assert(!::test_detail::stoppable_source<::stoppable_source::source>);
+ static_assert(!::test_detail::stoppable_source<::stoppable_source::source>);
}
} // namespace
diff --git a/tests/beman/execution/thread-stoptoken-syn.compile.test.cpp b/tests/beman/execution/thread-stoptoken-syn.compile.test.cpp
index 80a83e50..0c1bfef0 100644
--- a/tests/beman/execution/thread-stoptoken-syn.compile.test.cpp
+++ b/tests/beman/execution/thread-stoptoken-syn.compile.test.cpp
@@ -21,11 +21,11 @@ TEST(thread_stoptoken_syn) {
// - Then the compiler should OK doing so.
// Reference: [thread.stoptoken.syn]
- static_assert((not::test_detail::stoppable_callback_for));
- static_assert((not::test_detail::stoppable_source));
+ static_assert((!::test_detail::stoppable_callback_for));
+ static_assert((!::test_detail::stoppable_source));
- static_assert((not::test_std::stoppable_token));
- static_assert((not::test_std::unstoppable_token));
+ static_assert((!::test_std::stoppable_token));
+ static_assert((!::test_std::unstoppable_token));
type_exists<::test_std::stop_token>();
type_exists<::test_std::stop_source>();