The scalar and primitive validity core from pinned
rustc_const_eval::interpret::validity. It preserves the source distinction
between invalid integer bits, a possibly-null relative pointer, and a pointer
whose absolute address is unknown. Allocation reads and pointer/null checks
remain explicit inputs; aggregate and metadata validation return delegation
steps rather than being treated as successful values.
- size : ABI.Size
- validRange : ABI.WrappingRange
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
- boolean : ExpectedValue
- character : ExpectedValue
- float : ExpectedValue
- integer : ExpectedValue
- functionPointer : ExpectedValue
- rawPointer : ExpectedValue
- reference : ExpectedValue
- box : ExpectedValue
- string : ExpectedValue
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- reference (mutable : Bool) : SafePointerKind
- box : SafePointerKind
Instances For
Equations
- Miri.Memory.instDecidableEqSafePointerKind.decEq (Miri.Memory.SafePointerKind.reference a) (Miri.Memory.SafePointerKind.reference b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.Memory.instDecidableEqSafePointerKind.decEq (Miri.Memory.SafePointerKind.reference mutable) Miri.Memory.SafePointerKind.box = isFalse ⋯
- Miri.Memory.instDecidableEqSafePointerKind.decEq Miri.Memory.SafePointerKind.box (Miri.Memory.SafePointerKind.reference mutable) = isFalse ⋯
- Miri.Memory.instDecidableEqSafePointerKind.decEq Miri.Memory.SafePointerKind.box Miri.Memory.SafePointerKind.box = isTrue ⋯
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
- field (name : String) : PathElem
- variant (name : String) : PathElem
- coroutineState (index : Nat) : PathElem
- capturedVar (name : String) : PathElem
- arrayElem (index : Nat) : PathElem
- tupleElem (index : Nat) : PathElem
- deref : PathElem
- enumTag : PathElem
- coroutineTag : PathElem
- dynDowncast (typeName : String) : PathElem
- vtable : PathElem
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Miri.Memory.instReprPathElem = { reprPrec := Miri.Memory.instReprPathElem.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- path.push projection = { originalType := path.originalType, projections := path.projections.push projection }
Instances For
Instances For
Equations
- (Miri.Memory.PathElem.field a).render = toString "." ++ toString a
- (Miri.Memory.PathElem.variant a).render = toString ".<enum-variant(" ++ toString a ++ toString ")>"
- (Miri.Memory.PathElem.coroutineState a).render = toString ".<coroutine-state(" ++ toString a ++ toString ")>"
- (Miri.Memory.PathElem.capturedVar a).render = toString ".<captured-var(" ++ toString a ++ toString ")>"
- (Miri.Memory.PathElem.arrayElem a).render = toString "[" ++ toString a ++ toString "]"
- (Miri.Memory.PathElem.tupleElem a).render = toString "." ++ toString a
- Miri.Memory.PathElem.deref.render = ".<deref>"
- Miri.Memory.PathElem.enumTag.render = ".<enum-tag>"
- Miri.Memory.PathElem.coroutineTag.render = ".<coroutine-tag>"
- (Miri.Memory.PathElem.dynDowncast a).render = toString ".<dyn-downcast(" ++ toString a ++ toString ")>"
- Miri.Memory.PathElem.vtable.render = ".<vtable>"
Instances For
Render projections with the same spelling and order as validity.rs's
write_path; originalType is kept separately, as in the source Path.
Equations
- path.render = String.join (List.map Miri.Memory.PathElem.render path.projections.toList)
Instances For
- memory (reason : MemoryError) : RangeSetError
- malformedRangeSet : RangeSetError
Instances For
Equations
- Miri.Memory.instDecidableEqRangeSetError.decEq (Miri.Memory.RangeSetError.memory a) (Miri.Memory.RangeSetError.memory b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.Memory.instDecidableEqRangeSetError.decEq (Miri.Memory.RangeSetError.memory reason) Miri.Memory.RangeSetError.malformedRangeSet = isFalse ⋯
- Miri.Memory.instDecidableEqRangeSetError.decEq Miri.Memory.RangeSetError.malformedRangeSet (Miri.Memory.RangeSetError.memory reason) = isFalse ⋯
- Miri.Memory.instDecidableEqRangeSetError.decEq Miri.Memory.RangeSetError.malformedRangeSet Miri.Memory.RangeSetError.malformedRangeSet = isTrue ⋯
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
- memory (reason : MemoryError) : PaddingPlanError
- invalidDataRangeOrder (previousEnd nextStart : ABI.Size) : PaddingPlanError
- finalCoverageMismatch (expectedEnd actualEnd : ABI.Size) : PaddingPlanError
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.instDecidableEqPaddingPlanError.decEq (Miri.Memory.PaddingPlanError.memory a) (Miri.Memory.PaddingPlanError.memory b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.Memory.instDecidableEqPaddingPlanError.decEq (Miri.Memory.PaddingPlanError.memory reason) (Miri.Memory.PaddingPlanError.invalidDataRangeOrder previousEnd nextStart) = isFalse ⋯
- Miri.Memory.instDecidableEqPaddingPlanError.decEq (Miri.Memory.PaddingPlanError.memory reason) (Miri.Memory.PaddingPlanError.finalCoverageMismatch expectedEnd actualEnd) = isFalse ⋯
- Miri.Memory.instDecidableEqPaddingPlanError.decEq (Miri.Memory.PaddingPlanError.invalidDataRangeOrder previousEnd nextStart) (Miri.Memory.PaddingPlanError.memory reason) = isFalse ⋯
- Miri.Memory.instDecidableEqPaddingPlanError.decEq (Miri.Memory.PaddingPlanError.finalCoverageMismatch expectedEnd actualEnd) (Miri.Memory.PaddingPlanError.memory reason) = isFalse ⋯
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
- multipleTagOnNonVariantType (typeName : String) : AggregatePathError
- emptyEnumField : AggregatePathError
- multipleEnumFieldWithoutActiveVariant : AggregatePathError
- missingFieldName (typeName : String) (field : Nat) : AggregatePathError
- missingVariantName (typeName : String) (variant : Nat) : AggregatePathError
- dynamicFieldIndex (field : Nat) : AggregatePathError
- unexpectedVariantType (typeName : String) : AggregatePathError
- unsupportedAggregate (typeName : String) : AggregatePathError
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.multipleTagOnNonVariantType typeName) Miri.Memory.AggregatePathError.emptyEnumField = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq Miri.Memory.AggregatePathError.emptyEnumField (Miri.Memory.AggregatePathError.multipleTagOnNonVariantType typeName) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq Miri.Memory.AggregatePathError.emptyEnumField Miri.Memory.AggregatePathError.emptyEnumField = isTrue ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq Miri.Memory.AggregatePathError.emptyEnumField (Miri.Memory.AggregatePathError.missingFieldName typeName field) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq Miri.Memory.AggregatePathError.emptyEnumField (Miri.Memory.AggregatePathError.missingVariantName typeName variant) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq Miri.Memory.AggregatePathError.emptyEnumField (Miri.Memory.AggregatePathError.dynamicFieldIndex field) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq Miri.Memory.AggregatePathError.emptyEnumField (Miri.Memory.AggregatePathError.unexpectedVariantType typeName) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq Miri.Memory.AggregatePathError.emptyEnumField (Miri.Memory.AggregatePathError.unsupportedAggregate typeName) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq Miri.Memory.AggregatePathError.multipleEnumFieldWithoutActiveVariant (Miri.Memory.AggregatePathError.dynamicFieldIndex field) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.missingFieldName typeName field) Miri.Memory.AggregatePathError.emptyEnumField = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.missingFieldName typeName field) (Miri.Memory.AggregatePathError.dynamicFieldIndex field_1) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.missingFieldName typeName field) (Miri.Memory.AggregatePathError.unsupportedAggregate typeName_1) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.missingVariantName typeName variant) Miri.Memory.AggregatePathError.emptyEnumField = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.missingVariantName typeName variant) (Miri.Memory.AggregatePathError.dynamicFieldIndex field) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.dynamicFieldIndex field) (Miri.Memory.AggregatePathError.multipleTagOnNonVariantType typeName) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.dynamicFieldIndex field) Miri.Memory.AggregatePathError.emptyEnumField = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.dynamicFieldIndex field) Miri.Memory.AggregatePathError.multipleEnumFieldWithoutActiveVariant = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.dynamicFieldIndex field) (Miri.Memory.AggregatePathError.missingFieldName typeName field_1) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.dynamicFieldIndex field) (Miri.Memory.AggregatePathError.missingVariantName typeName variant) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.dynamicFieldIndex field) (Miri.Memory.AggregatePathError.unexpectedVariantType typeName) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.dynamicFieldIndex field) (Miri.Memory.AggregatePathError.unsupportedAggregate typeName) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.unexpectedVariantType typeName) Miri.Memory.AggregatePathError.emptyEnumField = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.unexpectedVariantType typeName) (Miri.Memory.AggregatePathError.dynamicFieldIndex field) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.unexpectedVariantType typeName) (Miri.Memory.AggregatePathError.unsupportedAggregate typeName_1) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.unsupportedAggregate typeName) Miri.Memory.AggregatePathError.emptyEnumField = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.unsupportedAggregate typeName) (Miri.Memory.AggregatePathError.missingFieldName typeName_1 field) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.unsupportedAggregate typeName) (Miri.Memory.AggregatePathError.dynamicFieldIndex field) = isFalse ⋯
- Miri.Memory.instDecidableEqAggregatePathError.decEq (Miri.Memory.AggregatePathError.unsupportedAggregate typeName) (Miri.Memory.AggregatePathError.unexpectedVariantType typeName_1) = isFalse ⋯
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
- invalidNodeIndex (index available : Nat) : UnionDataRangeError
- recursiveLayout (node : Nat) : UnionDataRangeError
- malformedFieldOffsets (children offsets : Nat) : UnionDataRangeError
- memory (reason : MemoryError) : UnionDataRangeError
- rangeSet (reason : RangeSetError) : UnionDataRangeError
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.invalidNodeIndex index available) (Miri.Memory.UnionDataRangeError.recursiveLayout node) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.invalidNodeIndex index available) (Miri.Memory.UnionDataRangeError.memory reason) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.invalidNodeIndex index available) (Miri.Memory.UnionDataRangeError.rangeSet reason) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.recursiveLayout node) (Miri.Memory.UnionDataRangeError.invalidNodeIndex index available) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.recursiveLayout node) (Miri.Memory.UnionDataRangeError.malformedFieldOffsets children offsets) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.recursiveLayout node) (Miri.Memory.UnionDataRangeError.memory reason) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.recursiveLayout node) (Miri.Memory.UnionDataRangeError.rangeSet reason) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.malformedFieldOffsets children offsets) (Miri.Memory.UnionDataRangeError.memory reason) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.malformedFieldOffsets children offsets) (Miri.Memory.UnionDataRangeError.rangeSet reason) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.memory reason) (Miri.Memory.UnionDataRangeError.invalidNodeIndex index available) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.memory reason) (Miri.Memory.UnionDataRangeError.recursiveLayout node) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.memory reason) (Miri.Memory.UnionDataRangeError.malformedFieldOffsets children offsets) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.memory a) (Miri.Memory.UnionDataRangeError.memory b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.memory reason) (Miri.Memory.UnionDataRangeError.rangeSet reason_1) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.rangeSet reason) (Miri.Memory.UnionDataRangeError.invalidNodeIndex index available) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.rangeSet reason) (Miri.Memory.UnionDataRangeError.recursiveLayout node) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.rangeSet reason) (Miri.Memory.UnionDataRangeError.malformedFieldOffsets children offsets) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.rangeSet reason) (Miri.Memory.UnionDataRangeError.memory reason_1) = isFalse ⋯
- Miri.Memory.instDecidableEqUnionDataRangeError.decEq (Miri.Memory.UnionDataRangeError.rangeSet a) (Miri.Memory.UnionDataRangeError.rangeSet b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- uninitialized (expected : ExpectedValue) (info : Option BadBytesAccess) : ValidityFailure
- pointerAsInt (expected : ExpectedValue) (info : Option BadBytesAccess) : ValidityFailure
- partialPointer (offset : ABI.Size) : ValidityFailure
- invalidBool (value : UInt8) : ValidityFailure
- invalidChar (value : UInt32) : ValidityFailure
- invalidScalarBits (bits : ABI.U128) (layout : ScalarValidityLayout) : ValidityFailure
- maybeNullPointer : ValidityFailure
- unknownAbsoluteAddress (layout : ScalarValidityLayout) : ValidityFailure
- nullSafePointer (kind : SafePointerKind) (maybe : Bool) : ValidityFailure
- uninhabitedPointee (kind : SafePointerKind) : ValidityFailure
- addressTooClose (kind : SafePointerKind) (size : ABI.Size) : ValidityFailure
- readOnlyPointer (kind : SafePointerKind) : ValidityFailure
- unsafeCellInReadOnlyMemory : ValidityFailure
- nullFunctionPointer (maybe : Bool) : ValidityFailure
- danglingSafePointer (kind : SafePointerKind) : ValidityFailure
- mutablePointerToReadOnly (kind : SafePointerKind) : ValidityFailure
- neverValue : ValidityFailure
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
- failure {MachineError : Type} (reason : ValidityFailure) : ValidityError MachineError
- pathFailure {MachineError : Type} (path : ValidationPath) (reason : ValidityFailure) : ValidityError MachineError
- scalar {MachineError : Type} (reason : ScalarError) : ValidityError MachineError
- range {MachineError : Type} (reason : ABI.WrappingRangeError) : ValidityError MachineError
- rangeSet {MachineError : Type} (reason : RangeSetError) : ValidityError MachineError
- padding {MachineError : Type} (reason : PaddingPlanError) : ValidityError MachineError
- pathInvariant {MachineError : Type} (reason : AggregatePathError) : ValidityError MachineError
- unionRange {MachineError : Type} (reason : UnionDataRangeError) : ValidityError MachineError
- walkInvariant {MachineError : Type} (reason : String) : ValidityError MachineError
- rangeInvariant {MachineError : Type} (reason : String) : ValidityError MachineError
- machine {MachineError : Type} (reason : MachineError) : ValidityError MachineError
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- boolean : PrimitiveKind
- character : PrimitiveKind
- scalar : PrimitiveKind
- never : PrimitiveKind
- foreign : PrimitiveKind
- functionDefinition : PrimitiveKind
- rawPointer (pointeeSized : Bool) : PrimitiveKind
- safeReference : PrimitiveKind
- box : PrimitiveKind
- functionPointer : PrimitiveKind
- aggregate : PrimitiveKind
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Non-scalar work is returned to the caller as a required validation step. The caller must supply the matching recursive, metadata, or pointer hooks.
- valid : PrimitiveStep
- recurse : PrimitiveStep
- rawPointerMetadata : PrimitiveStep
- safePointer : PrimitiveStep
- boxPointer : PrimitiveStep
- functionPointer : PrimitiveStep
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Sorted, disjoint, non-adjacent set of data-byte ranges used by the source visitor's padding reset. Its constructor is private so malformed interval arrays cannot enter the visitor through this API.
- ranges : Array Miri.Memory.AllocRange
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
- ranges.toArray = Miri.Memory.Validity.DataRangeSet.ranges✝ ranges
Instances For
Source RangeSet::add_range: zero-sized ranges are ignored; overlapping
and adjacent ranges coalesce, preserving sorted disjoint storage.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ranges.containsRange range = (Miri.Memory.Validity.DataRangeSet.ranges✝ ranges).any fun (x : Miri.Memory.AllocRange) => x == range
Instances For
- primitive : UnionFieldsShape
- unionFields (children : Array Nat) : UnionFieldsShape
- array (element : Nat) (stride : ABI.Size) (count : UInt64) (elementIsScalar : Bool) : UnionFieldsShape
- arbitrary (children : Array Nat) (offsets : Array ABI.Size) : UnionFieldsShape
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.Validity.instDecidableEqUnionFieldsShape.decEq Miri.Memory.Validity.UnionFieldsShape.primitive Miri.Memory.Validity.UnionFieldsShape.primitive = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqUnionFieldsShape.decEq Miri.Memory.Validity.UnionFieldsShape.primitive (Miri.Memory.Validity.UnionFieldsShape.unionFields children) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqUnionFieldsShape.decEq Miri.Memory.Validity.UnionFieldsShape.primitive (Miri.Memory.Validity.UnionFieldsShape.arbitrary children offsets) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqUnionFieldsShape.decEq (Miri.Memory.Validity.UnionFieldsShape.unionFields children) Miri.Memory.Validity.UnionFieldsShape.primitive = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqUnionFieldsShape.decEq (Miri.Memory.Validity.UnionFieldsShape.arbitrary children offsets) Miri.Memory.Validity.UnionFieldsShape.primitive = isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- single : UnionVariantsShape
- empty : UnionVariantsShape
- multiple (variants : Array Nat) : UnionVariantsShape
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.Validity.instDecidableEqUnionVariantsShape.decEq Miri.Memory.Validity.UnionVariantsShape.single Miri.Memory.Validity.UnionVariantsShape.single = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqUnionVariantsShape.decEq Miri.Memory.Validity.UnionVariantsShape.single (Miri.Memory.Validity.UnionVariantsShape.multiple variants) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqUnionVariantsShape.decEq Miri.Memory.Validity.UnionVariantsShape.empty Miri.Memory.Validity.UnionVariantsShape.empty = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqUnionVariantsShape.decEq Miri.Memory.Validity.UnionVariantsShape.empty (Miri.Memory.Validity.UnionVariantsShape.multiple variants) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqUnionVariantsShape.decEq (Miri.Memory.Validity.UnionVariantsShape.multiple variants) Miri.Memory.Validity.UnionVariantsShape.single = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqUnionVariantsShape.decEq (Miri.Memory.Validity.UnionVariantsShape.multiple variants) Miri.Memory.Validity.UnionVariantsShape.empty = isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
A finite, indexed description of one TyAndLayout node for the pure
union_data_range_uncached traversal. Child indices deliberately remain
checked at runtime: malformed synthetic layouts cannot be mistaken for an
empty union. elementIsScalar is the upstream backend-representation
fast-path fact for array elements.
- size : ABI.Size
- fields : UnionFieldsShape
- variants : UnionVariantsShape
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
- root : Nat
- nodes : Array UnionLayoutNode
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Exact recursive layout walk from ValidityVisitor::union_data_range.
The work stack implements its depth-first recursion while detecting malformed
cycles and checking each source Size operation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Miri.Memory.Validity.instDecidableEqCtfeMode.decEq (Miri.Memory.Validity.CtfeMode.static a) (Miri.Memory.Validity.CtfeMode.static b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.Memory.Validity.instDecidableEqCtfeMode.decEq (Miri.Memory.Validity.CtfeMode.static mutable) Miri.Memory.Validity.CtfeMode.promoted = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqCtfeMode.decEq (Miri.Memory.Validity.CtfeMode.static mutable) (Miri.Memory.Validity.CtfeMode.constant allowImmutableUnsafeCell) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqCtfeMode.decEq Miri.Memory.Validity.CtfeMode.promoted (Miri.Memory.Validity.CtfeMode.static mutable) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqCtfeMode.decEq Miri.Memory.Validity.CtfeMode.promoted Miri.Memory.Validity.CtfeMode.promoted = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqCtfeMode.decEq Miri.Memory.Validity.CtfeMode.promoted (Miri.Memory.Validity.CtfeMode.constant allowImmutableUnsafeCell) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqCtfeMode.decEq (Miri.Memory.Validity.CtfeMode.constant allowImmutableUnsafeCell) (Miri.Memory.Validity.CtfeMode.static mutable) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqCtfeMode.decEq (Miri.Memory.Validity.CtfeMode.constant allowImmutableUnsafeCell) Miri.Memory.Validity.CtfeMode.promoted = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqCtfeMode.decEq (Miri.Memory.Validity.CtfeMode.constant a) (Miri.Memory.Validity.CtfeMode.constant b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
Instances For
Source visit_value's UnsafeCell check for the current ADT node. The
memory mutability query is required only after CTFE policy, dynamic ZST, and
the type predicate establish that it matters.
Equations
- One or more equations did not get rendered due to their size.
Instances For
- dynamicSize : HookState → EStateM.Result (ValidityError MachineError) HookState (Option ABI.Size)
- isFreeze : HookState → EStateM.Result (ValidityError MachineError) HookState Bool
- isMutableMemory : HookState → EStateM.Result (ValidityError MachineError) HookState Bool
- dataRangeOffset : HookState → EStateM.Result (ValidityError MachineError) HookState ABI.Size
Instances For
Source ValueVisitor::visit_union: CTFE checks !Freeze before data
range collection, and only tracked typed copies query the containing offset.
Union layout/range failures remain distinct from validation UB and machine
lookup failures.
Equations
- One or more equations did not get rendered due to their size.
Instances For
- closure : AggregateTypeKind
- coroutine : AggregateTypeKind
- coroutineClosure : AggregateTypeKind
- tuple : AggregateTypeKind
- enum : AggregateTypeKind
- struct : AggregateTypeKind
- array : AggregateTypeKind
- slice : AggregateTypeKind
- dynamic : AggregateTypeKind
- other (typeName : String) : AggregateTypeKind
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- multiple (tagField : Nat) : VariantLayoutKind
- single : VariantLayoutKind
- empty : VariantLayoutKind
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.Validity.instDecidableEqVariantLayoutKind.decEq (Miri.Memory.Validity.VariantLayoutKind.multiple tagField) Miri.Memory.Validity.VariantLayoutKind.single = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqVariantLayoutKind.decEq (Miri.Memory.Validity.VariantLayoutKind.multiple tagField) Miri.Memory.Validity.VariantLayoutKind.empty = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqVariantLayoutKind.decEq Miri.Memory.Validity.VariantLayoutKind.single (Miri.Memory.Validity.VariantLayoutKind.multiple tagField) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqVariantLayoutKind.decEq Miri.Memory.Validity.VariantLayoutKind.single Miri.Memory.Validity.VariantLayoutKind.single = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqVariantLayoutKind.decEq Miri.Memory.Validity.VariantLayoutKind.empty (Miri.Memory.Validity.VariantLayoutKind.multiple tagField) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqVariantLayoutKind.decEq Miri.Memory.Validity.VariantLayoutKind.empty Miri.Memory.Validity.VariantLayoutKind.empty = isTrue ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- typeName : String
- kind : AggregateTypeKind
- variants : VariantLayoutKind
- field : Nat
- fieldTypeName : String
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Port of aggregate_field_path_elem. Layout and HIR lookup facts are
explicit inputs; closure captures fall back to the source's numeric symbol.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Source visit_field path scoping. The projection lookup is evaluated
before the child visitor, and only that child sees the extended path.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Source visit_variant path selection for ADTs and coroutines.
Equations
- Miri.Memory.Validity.variantPathElem typeName Miri.Memory.Validity.AggregateTypeKind.enum variant (some name_1) = pure (Miri.Memory.PathElem.variant name_1)
- Miri.Memory.Validity.variantPathElem typeName Miri.Memory.Validity.AggregateTypeKind.enum variant none = throw (Miri.Memory.AggregatePathError.missingVariantName typeName variant)
- Miri.Memory.Validity.variantPathElem typeName Miri.Memory.Validity.AggregateTypeKind.coroutine variant name = pure (Miri.Memory.PathElem.coroutineState variant)
- Miri.Memory.Validity.variantPathElem typeName kind variant name = throw (Miri.Memory.AggregatePathError.unexpectedVariantType typeName)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Compute source reset_padding writes. The final zero-length sentinel
closes the last gap; malformed/out-of-object ranges return explicit
invariant failures instead of relying on rustc assertions or Size panics.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Execute the planned padding writes in source order. The allocation lookup
and byte-mask mutations stay on explicit machine callbacks; a failed write
retains all earlier callback state. none data tracking and ZST places are
source no-ops.
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.Validity.resetPadding data allocationRange writeUninit initialState = (pure (EStateM.Result.ok () initialState)).run
Instances For
- sized : MetadataKind
- dynamic : MetadataKind
- slice : MetadataKind
- string : MetadataKind
- foreign : MetadataKind
- unexpected (description : String) : MetadataKind
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq Miri.Memory.Validity.MetadataKind.sized Miri.Memory.Validity.MetadataKind.sized = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq Miri.Memory.Validity.MetadataKind.sized (Miri.Memory.Validity.MetadataKind.unexpected description) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq Miri.Memory.Validity.MetadataKind.dynamic Miri.Memory.Validity.MetadataKind.dynamic = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq Miri.Memory.Validity.MetadataKind.dynamic (Miri.Memory.Validity.MetadataKind.unexpected description) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq Miri.Memory.Validity.MetadataKind.slice Miri.Memory.Validity.MetadataKind.slice = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq Miri.Memory.Validity.MetadataKind.slice (Miri.Memory.Validity.MetadataKind.unexpected description) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq Miri.Memory.Validity.MetadataKind.string Miri.Memory.Validity.MetadataKind.string = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq Miri.Memory.Validity.MetadataKind.string (Miri.Memory.Validity.MetadataKind.unexpected description) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq Miri.Memory.Validity.MetadataKind.foreign Miri.Memory.Validity.MetadataKind.foreign = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq Miri.Memory.Validity.MetadataKind.foreign (Miri.Memory.Validity.MetadataKind.unexpected description) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq (Miri.Memory.Validity.MetadataKind.unexpected description) Miri.Memory.Validity.MetadataKind.sized = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq (Miri.Memory.Validity.MetadataKind.unexpected description) Miri.Memory.Validity.MetadataKind.dynamic = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq (Miri.Memory.Validity.MetadataKind.unexpected description) Miri.Memory.Validity.MetadataKind.slice = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq (Miri.Memory.Validity.MetadataKind.unexpected description) Miri.Memory.Validity.MetadataKind.string = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqMetadataKind.decEq (Miri.Memory.Validity.MetadataKind.unexpected description) Miri.Memory.Validity.MetadataKind.foreign = isFalse ⋯
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
- static (nested foreignItem : Bool) : GlobalAllocationKind
- other : GlobalAllocationKind
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.Validity.instDecidableEqGlobalAllocationKind.decEq Miri.Memory.Validity.GlobalAllocationKind.other (Miri.Memory.Validity.GlobalAllocationKind.static nested foreignItem) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqGlobalAllocationKind.decEq Miri.Memory.Validity.GlobalAllocationKind.other Miri.Memory.Validity.GlobalAllocationKind.other = isTrue ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Machine lookup facts needed by the source CTFE recursion policy. The allocation identity/global query itself belongs to the interpreter callback; the policy decisions are performed here.
- noAllocationId : PointerAllocLookup
- missingGlobal (stillInMemory : Bool) : PointerAllocLookup
- global (size : ABI.Size) (mutability : Mutability) (kind : GlobalAllocationKind) : PointerAllocLookup
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.Validity.instDecidableEqPointerAllocLookup.decEq Miri.Memory.Validity.PointerAllocLookup.noAllocationId Miri.Memory.Validity.PointerAllocLookup.noAllocationId = isTrue ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Source CTFE-only allocation and mutability checks performed before adding
a safe pointer to the recursive worklist. The true result means skip the
descent (including the source's delayed-bug/missing-interning early return).
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.Validity.ctfeRecursionDecision mode kind Miri.Memory.Validity.PointerAllocLookup.noAllocationId = pure false
- Miri.Memory.Validity.ctfeRecursionDecision mode kind (Miri.Memory.Validity.PointerAllocLookup.missingGlobal true) = pure true
- Miri.Memory.Validity.ctfeRecursionDecision mode kind (Miri.Memory.Validity.PointerAllocLookup.missingGlobal false) = throw (Miri.Memory.ValidityFailure.danglingSafePointer kind)
Instances For
Persistent visitor flags. withMaybeDangling scopes the source's
may_dangle |= is_like_maybe_dangling() update and restores the old value on
successful return. Errors unwind the visitor just as the source macro does.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Mutation and machine-resolution boundary used by
ValidityVisitor::try_visit_primitive.
- clearProvenance : HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- resetPointerProvenance : Scalar Prov → HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- addDataRange : HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- checkRawPointerMetadata : Scalar Prov → HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- checkFunctionPointer : Scalar Prov → HookState → EStateM.Result (ValidityError MachineError) HookState Unit
Instances For
Facts returned by the machine's imm_ptr_to_mplace boundary. Dynamic
size/alignment and pointer access remain separate callbacks so their ordering
matches the pinned visitor.
- original : Scalar Prov
- pointer : Scalar Prov
- metadataKind : MetadataKind
- layoutSize : ABI.Size
- layoutAlign : ABI.Align
- key : Key
Instances For
A small, explicit recursive-reference worklist matching rustc's
RefTracking: seen persists after an item is popped, and todo is LIFO.
- seen : Array Key
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
Instances For
Duplicate references are ignored; makePath is only evaluated on the
first visit, matching the source's lazy path construction.
Equations
- One or more equations did not get rendered due to their size.
Instances For
- primitive : ValueWalkFields
- union (fieldCount : Nat) : ValueWalkFields
- arbitrary (inMemoryOrder fields : Array Nat) : ValueWalkFields
- array (elements : Array Nat) : ValueWalkFields
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.Validity.instDecidableEqValueWalkFields.decEq Miri.Memory.Validity.ValueWalkFields.primitive Miri.Memory.Validity.ValueWalkFields.primitive = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkFields.decEq Miri.Memory.Validity.ValueWalkFields.primitive (Miri.Memory.Validity.ValueWalkFields.union fieldCount) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkFields.decEq Miri.Memory.Validity.ValueWalkFields.primitive (Miri.Memory.Validity.ValueWalkFields.arbitrary inMemoryOrder fields) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkFields.decEq Miri.Memory.Validity.ValueWalkFields.primitive (Miri.Memory.Validity.ValueWalkFields.array elements) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkFields.decEq (Miri.Memory.Validity.ValueWalkFields.union fieldCount) Miri.Memory.Validity.ValueWalkFields.primitive = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkFields.decEq (Miri.Memory.Validity.ValueWalkFields.union fieldCount) (Miri.Memory.Validity.ValueWalkFields.array elements) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkFields.decEq (Miri.Memory.Validity.ValueWalkFields.arbitrary inMemoryOrder fields) Miri.Memory.Validity.ValueWalkFields.primitive = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkFields.decEq (Miri.Memory.Validity.ValueWalkFields.array elements) Miri.Memory.Validity.ValueWalkFields.primitive = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkFields.decEq (Miri.Memory.Validity.ValueWalkFields.array elements) (Miri.Memory.Validity.ValueWalkFields.union fieldCount) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkFields.decEq (Miri.Memory.Validity.ValueWalkFields.array elements) (Miri.Memory.Validity.ValueWalkFields.arbitrary inMemoryOrder fields) = isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- single : ValueWalkVariants
- empty : ValueWalkVariants
- multiple (variants : Array Nat) : ValueWalkVariants
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.Validity.instDecidableEqValueWalkVariants.decEq Miri.Memory.Validity.ValueWalkVariants.single Miri.Memory.Validity.ValueWalkVariants.single = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkVariants.decEq Miri.Memory.Validity.ValueWalkVariants.single (Miri.Memory.Validity.ValueWalkVariants.multiple variants) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkVariants.decEq Miri.Memory.Validity.ValueWalkVariants.empty Miri.Memory.Validity.ValueWalkVariants.empty = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkVariants.decEq Miri.Memory.Validity.ValueWalkVariants.empty (Miri.Memory.Validity.ValueWalkVariants.multiple variants) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkVariants.decEq (Miri.Memory.Validity.ValueWalkVariants.multiple variants) Miri.Memory.Validity.ValueWalkVariants.single = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkVariants.decEq (Miri.Memory.Validity.ValueWalkVariants.multiple variants) Miri.Memory.Validity.ValueWalkVariants.empty = isFalse ⋯
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
- none : ValueWalkSpecial
- dynamic (inner : Nat) : ValueWalkSpecial
- box (pointer allocator : Nat) : ValueWalkSpecial
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.Validity.instDecidableEqValueWalkSpecial.decEq Miri.Memory.Validity.ValueWalkSpecial.none Miri.Memory.Validity.ValueWalkSpecial.none = isTrue ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkSpecial.decEq Miri.Memory.Validity.ValueWalkSpecial.none (Miri.Memory.Validity.ValueWalkSpecial.dynamic inner) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkSpecial.decEq Miri.Memory.Validity.ValueWalkSpecial.none (Miri.Memory.Validity.ValueWalkSpecial.box pointer allocator) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkSpecial.decEq (Miri.Memory.Validity.ValueWalkSpecial.dynamic inner) Miri.Memory.Validity.ValueWalkSpecial.none = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkSpecial.decEq (Miri.Memory.Validity.ValueWalkSpecial.dynamic inner) (Miri.Memory.Validity.ValueWalkSpecial.box pointer allocator) = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkSpecial.decEq (Miri.Memory.Validity.ValueWalkSpecial.box pointer allocator) Miri.Memory.Validity.ValueWalkSpecial.none = isFalse ⋯
- Miri.Memory.Validity.instDecidableEqValueWalkSpecial.decEq (Miri.Memory.Validity.ValueWalkSpecial.box pointer allocator) (Miri.Memory.Validity.ValueWalkSpecial.dynamic inner) = isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Resolved projection facts for the generic ValueVisitor::walk_value
engine. The machine/layout adapter supplies child handles in source projection
order; each index and field/variant lookup is validated before traversal.
- typeName : String
- pathInfo : AggregatePathInfo
- fields : ValueWalkFields
- variants : ValueWalkVariants
- special : ValueWalkSpecial
- isLikeMaybeDangling : Bool
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- root : Nat
- nodes : Array ValueWalkNode
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
- tryVisitPrimitive : Nat → ValidationPath → VisitorFlags → HookState → EStateM.Result (ValidityError MachineError) HookState Bool
- checkUnsafeCell : Nat → ValidationPath → VisitorFlags → HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- tryVisitSpecialCase : Nat → ValidationPath → VisitorFlags → HookState → EStateM.Result (ValidityError MachineError) HookState Bool
- visitUnion : Nat → Nat → ValidationPath → VisitorFlags → HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- visitBox : Nat → Nat → ValidationPath → VisitorFlags → HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- readDiscriminant : Nat → HookState → EStateM.Result (ValidityError MachineError) HookState Nat
- visitVariantless : Nat → ValidationPath → HookState → EStateM.Result (ValidityError MachineError) HookState Unit
Instances For
Source ValueVisitor::walk_value traversal order, composed with the
validity-specific primitive, UnsafeCell, optimized-case, union, and Box hooks.
The finite graph contains layout projections supplied by the interpreter;
missing projection or machine operations remain explicit failures.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Per-invocation state passed through the source visit_value traversal.
The path is a value so child scopes can push a projection and restore it on
return; data tracking and recursive-reference discovery are returned by the
visitor rather than hidden in a default-success operation.
- path : ValidationPath
- flags : VisitorFlags
- refTracking : Option (RefTracking Key ValidationPath)
- dataBytes : Option DataRangeSet
Instances For
- isStoredInMemory : Place → HookState → EStateM.Result (ValidityError MachineError) HookState Bool
- visitValue : Place → ValidationSession Key → HookState → EStateM.Result (ValidityError MachineError) HookState (ValidationSession Key)
- allocationRange : Place → HookState → EStateM.Result (ValidityError MachineError) HookState (Option (ABI.Size × ABI.Size))
- writeUninit : Place → AllocRange → HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- trackedPlace : Key → HookState → EStateM.Result (ValidityError MachineError) HookState Place
Instances For
The pinned validate_place_internal orchestration. The actual MIR place
projection and recursive type walk are an explicit callback because they
depend on rustc's PlaceTy/layout engine; this driver preserves the source
setup, mutation order, padding finalizer, and recursive RefTracking drain.
Each tracked pointee is visited without provenance reset, with no further
tracking, and under may_dangle, as in validate_place.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Required operations for the source check_safe_pointer path. Each
callback stands at a real machine/layout boundary; absent semantics cannot be
silently interpreted as success. Callbacks return a ValidityError when the
source maps an underlying UB category to a validation failure.
- readImmediate : HookState → EStateM.Result (ValidityError MachineError) HookState (Scalar Prov)
- resolvePlace : Scalar Prov → HookState → EStateM.Result (ValidityError MachineError) HookState (SafePointerTarget Prov Key)
- checkWideMetadata : SafePointerTarget Prov Key → HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- sizeAndAlign : SafePointerTarget Prov Key → HookState → EStateM.Result (ValidityError MachineError) HookState (Option (ABI.Size × ABI.Align))
- checkAccess : Scalar Prov → ABI.Size → HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- retagPointer : Scalar Prov → SafePointerKind → HookState → EStateM.Result (ValidityError MachineError) HookState (Option (Scalar Prov))
- writeAdjustedPointer : Scalar Prov → HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- resetPointerProvenance : Scalar Prov → HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- markPointerData : HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- scalarMayBeNull : Scalar Prov → HookState → EStateM.Result (ValidityError MachineError) HookState Bool
- checkInhabited : SafePointerTarget Prov Key → HookState → EStateM.Result (ValidityError MachineError) HookState Bool
- checkAlignment : Scalar Prov → ABI.Align → HookState → EStateM.Result (ValidityError MachineError) HookState Unit
- ctfePointerAllocLookup : SafePointerTarget Prov Key → CtfeMode → HookState → EStateM.Result (ValidityError MachineError) HookState PointerAllocLookup
Instances For
Run source-ordered safe-reference/Box validation. The optional tracker,
CTFE policy, and reset/may-dangle flags are explicit visitor state. A source
machine error or validation failure preserves callback state at the exact
failing step. targetUsizeMax is the machine target's maximum address.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Port of validity.rs::fmt_range, retaining its invariant failures as
explicit errors instead of Lean/Rust panics.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.Validity.formatFailure (Miri.Memory.ValidityFailure.uninitialized a a_1) = pure (toString "encountered uninitialized memory, but " ++ toString (reprStr a))
- Miri.Memory.Validity.formatFailure (Miri.Memory.ValidityFailure.pointerAsInt a a_1) = pure (toString "encountered a pointer, but " ++ toString (reprStr a))
- Miri.Memory.Validity.formatFailure (Miri.Memory.ValidityFailure.partialPointer a) = pure "encountered a partial pointer or a mix of pointers"
- Miri.Memory.Validity.formatFailure (Miri.Memory.ValidityFailure.invalidBool a) = pure (toString "invalid boolean byte " ++ toString a.toNat)
- Miri.Memory.Validity.formatFailure (Miri.Memory.ValidityFailure.invalidChar a) = pure (toString "encountered " ++ toString a.toNat ++ toString ", but expected a valid Unicode scalar value")
- Miri.Memory.Validity.formatFailure Miri.Memory.ValidityFailure.maybeNullPointer = pure "encountered a maybe-null pointer, but expected something that is definitely non-zero"
- Miri.Memory.Validity.formatFailure Miri.Memory.ValidityFailure.unsafeCellInReadOnlyMemory = pure "encountered `UnsafeCell` in read-only memory"
- Miri.Memory.Validity.formatFailure Miri.Memory.ValidityFailure.neverValue = pure "encountered a value of the never type `!`"
Instances For
Equations
- Miri.Memory.Validity.classifyReadError expected (Miri.Memory.AllocError.invalidUninitBytes info) = some (Miri.Memory.ValidityFailure.uninitialized expected info)
- Miri.Memory.Validity.classifyReadError expected (Miri.Memory.AllocError.readPointerAsInt info) = some (Miri.Memory.ValidityFailure.pointerAsInt expected info)
- Miri.Memory.Validity.classifyReadError expected (Miri.Memory.AllocError.readPartialPointer offset) = some (Miri.Memory.ValidityFailure.partialPointer offset)
- Miri.Memory.Validity.classifyReadError expected error = none
Instances For
Source ValidityVisitor::visit_scalar, with scalar_may_be_null as a
required machine callback. Callback errors pass through unchanged, while the
result state is retained on callback failure.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Source primitive classification after the memory read. The integer/float
case only requires initialized scalar bytes here; valid-range checking is the
separate visitScalar operation used by the higher-level visitor when needed.
Pointer-specific operations remain explicit delegation steps.
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.Validity.checkPrimitive Miri.Memory.PrimitiveKind.scalar _layout scalar _scalarMayBeNull state = (pure (EStateM.Result.ok Miri.Memory.PrimitiveStep.valid state)).run
- Miri.Memory.Validity.checkPrimitive Miri.Memory.PrimitiveKind.foreign _layout scalar _scalarMayBeNull state = (pure (EStateM.Result.ok Miri.Memory.PrimitiveStep.valid state)).run
- Miri.Memory.Validity.checkPrimitive Miri.Memory.PrimitiveKind.functionDefinition _layout scalar _scalarMayBeNull state = (pure (EStateM.Result.ok Miri.Memory.PrimitiveStep.valid state)).run
- Miri.Memory.Validity.checkPrimitive (Miri.Memory.PrimitiveKind.rawPointer true) _layout scalar _scalarMayBeNull state = (pure (EStateM.Result.ok Miri.Memory.PrimitiveStep.valid state)).run
- Miri.Memory.Validity.checkPrimitive Miri.Memory.PrimitiveKind.safeReference _layout scalar _scalarMayBeNull state = (pure (EStateM.Result.ok Miri.Memory.PrimitiveStep.safePointer state)).run
- Miri.Memory.Validity.checkPrimitive Miri.Memory.PrimitiveKind.box _layout scalar _scalarMayBeNull state = (pure (EStateM.Result.ok Miri.Memory.PrimitiveStep.boxPointer state)).run
- Miri.Memory.Validity.checkPrimitive Miri.Memory.PrimitiveKind.functionPointer _layout scalar _scalarMayBeNull state = (pure (EStateM.Result.ok Miri.Memory.PrimitiveStep.functionPointer state)).run
- Miri.Memory.Validity.checkPrimitive Miri.Memory.PrimitiveKind.aggregate _layout scalar _scalarMayBeNull state = (pure (EStateM.Result.ok Miri.Memory.PrimitiveStep.recurse state)).run
Instances For
Execute the stateful portion of try_visit_primitive. The caller has
already read the scalar/immediate at the expected type. This preserves the
source order for pointer reset, data-byte tracking, wide-pointer metadata, and
function-pointer validation. Safe references and Box delegate to
checkSafePointer through distinct explicit steps.
Equations
- One or more equations did not get rendered due to their size.