Skip to main content

Module validity

Module validity 

Source
Expand description

Check the validity invariant of a given value, and tell the user where in the value it got violated. In const context, this goes even further and tries to approximate const safety. That’s useful because it means other passes (e.g. promotion) can rely on consts to be const-safe.

MacrosΒ§

err_validation_failure πŸ”’
throw_validation_failure πŸ”’
try_validation πŸ”’
If $e throws an error matching the pattern, throw a validation failure. Other errors are passed back to the caller, unchanged – and if they reach the root of the visitor, we make sure only validation errors and InvalidProgram errors are left. This lets you use the patterns as a kind of validation list, asserting which errors can possibly happen:

StructsΒ§

RangeSet
Represents a set of Size values as a sorted list of ranges.
RefTracking
State for tracking recursive validation of references
ValidityVisitor πŸ”’

EnumsΒ§

CtfeValidationMode
Extra things to check for during validation of CTFE results.
ExpectedKind πŸ”’
PathElem
We want to show a nice path to the invalid field for diagnostics, but avoid string operations in the happy case where no error happens. So we track a Vec<PathElem> where PathElem contains all the data we need to later print something for the user.
PointerKind πŸ”’
ValidationErrorKind πŸ”’
Validation errors that can be emitted in one than one place get a variant here so that we format them consistently. Everything else uses the String fallback.

FunctionsΒ§

fmt_range πŸ”’
write_path πŸ”’
Format a path