|
welder 0.1.0
Bindings for annotated C++ types, from C++26 reflection
|
welder's consteval diagnostics, collected in one place: every hand-rolled compile-time error the library raises beyond a static_assert is one of the exception types below, thrown during constant evaluation (a C++26 constexpr exception). More...
Go to the source code of this file.
Classes | |
| struct | welder::diag::lang_out_of_mask_range |
| Thrown by lang_bit (<welder/annotations.hpp>) when a lang value lies past the 32-bit language-mask width — instead of an opaque shift-overflow error. More... | |
| struct | welder::diag::dangling_return_policy |
| Thrown by validate_return_policy (<welder/reflect.hpp>) — every rod runs it at its per-overload bind site — when a reference-category return_policy meets a by-value return. More... | |
| struct | welder::diag::bare_mark_only |
| Thrown by member_bound (<welder/reflect.hpp>) when a member carries a bare [[=welder::mark::only]] — "only, for every language" restricts nothing, so the mark must be called. More... | |
| struct | welder::diag::no_matching_virtual_slot |
| Thrown by virtual_slot (<welder/rods/python/trampoline.hpp>, reached through WELDER_PY_OVERRIDE_AS) when no overridable virtual of the class matches the requested name and function type. More... | |
| struct | welder::diag::stale_hook_signature |
| Thrown by member_access_admitted (<welder/bind_traits.hpp>) when a resolution still declares its optional protected_participates hook under the superseded two-argument signature — which would otherwise be silently ignored (the detection is a requires probe). More... | |
| struct | welder::diag::marked_move_constructor |
| Thrown by validate_move_ctor_marks (<welder/bind_traits.hpp>) — the carriage runs it for every welded class — when a move constructor carries an include/only mark. More... | |
| struct | welder::diag::accessor_name_too_long |
| Thrown by the accessor_name factory helper (<welder/annotations.hpp>) when a getter/setter explicit property name exceeds the spec's inline capacity (the spec is deliberately not length-templated — see accessor_name_capacity). More... | |
| struct | welder::diag::malformed_getter |
| Thrown by property_entries (<welder/bind_traits.hpp>) when a [[=welder::getter]] sits on a function that is not a getter shape: it must be a const member function taking no parameters and returning a value. More... | |
| struct | welder::diag::malformed_setter |
| Thrown by property_entries (<welder/bind_traits.hpp>) when a [[=welder::setter]] sits on a function that is not a setter shape: it must be a member function taking exactly one parameter. More... | |
| struct | welder::diag::accessor_role_conflict |
| Thrown by property_entries (<welder/bind_traits.hpp>) when one function carries both a getter and a setter mark for the same language — a function supplies one property half, never both. More... | |
| struct | welder::diag::duplicate_property_accessor |
| Thrown by property_entries (<welder/bind_traits.hpp>) when two getters (or two setters) resolve to the same property name for one language — a property has exactly one function per half. More... | |
| struct | welder::diag::setter_without_getter |
| Thrown by property_entries (<welder/bind_traits.hpp>) when a participating setter's property has no participating getter in that language — welder binds no write-only properties. More... | |
| struct | welder::diag::accessor_weld_as_conflict |
| Thrown by property_entries (<welder/bind_traits.hpp>) when an accessor-marked function also carries a weld_as — the accessor's explicit name is the property's rename tool, so the two would fight. More... | |
| struct | welder::diag::static_property_accessor |
| Thrown by property_entries (<welder/bind_traits.hpp>) on an accessor-marked static member function: static properties are not supported yet (deferred — the Python frameworks have def_property_static, the Lua rods have no equivalent surface). More... | |
| struct | welder::diag::virtual_property_accessor |
| Thrown by property_entries (<welder/bind_traits.hpp>) on an accessor-marked virtual member function: both Python rods dispatch overrides through a by-name attribute lookup, and a property object under that name would silently break the override protocol — rejected rather than bound subtly wrong. More... | |
| struct | welder::diag::property_name_collision |
| Thrown by property_entries (<welder/bind_traits.hpp>) when a resolved property name collides with a bound data member or a (non-accessor) method of the same class surface. More... | |
Namespaces | |
| namespace | welder |
| namespace | welder::diag |
welder's consteval diagnostics, collected in one place: every hand-rolled compile-time error the library raises beyond a static_assert is one of the exception types below, thrown during constant evaluation (a C++26 constexpr exception).
An uncaught constexpr exception renders the program ill-formed with the exception's type and the carried what prose verbatim in the compiler's uncaught exception '…' diagnostic — one error, a greppable type name, and a real punctuation-and-spaces message, where the older undefined-function-anchor idiom produced two errors with the message crammed into an identifier.
Each type carries its canonical message as a default member initializer, so a raise site is just throw diag::bare_mark_only{}; — the message has a single source of truth here.
Like the vocabulary headers (lang.hpp, annotations.hpp), this header is std-include-free — the messages are plain const char*, core language only — so the vocabulary may include it and a future import welder; module wrapper can re-export it without leaking std into importers.
Definition in file diag.hpp.