Source-shaped rustc_abi layout records and checked observation methods. No type layout computation or type-system metadata is inferred here.
- fieldOutOfBounds (index count : Nat) : LayoutError
- invalidUnionCount : LayoutError
- invalidMemoryOrder : LayoutError
- size (error : SizeError) : LayoutError
- expectedArbitraryVariant : LayoutError
- missingField (index : Nat) : LayoutError
- missingVariant (index : Nat) : LayoutError
- missingPointee : LayoutError
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.fieldOutOfBounds index count) Miri.ABI.LayoutError.invalidUnionCount = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.fieldOutOfBounds index count) Miri.ABI.LayoutError.invalidMemoryOrder = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.fieldOutOfBounds index count) (Miri.ABI.LayoutError.size error) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.fieldOutOfBounds index count) Miri.ABI.LayoutError.expectedArbitraryVariant = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.fieldOutOfBounds index count) (Miri.ABI.LayoutError.missingField index_1) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.fieldOutOfBounds index count) (Miri.ABI.LayoutError.missingVariant index_1) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.fieldOutOfBounds index count) Miri.ABI.LayoutError.missingPointee = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidUnionCount (Miri.ABI.LayoutError.fieldOutOfBounds index count) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidUnionCount Miri.ABI.LayoutError.invalidUnionCount = isTrue ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidUnionCount Miri.ABI.LayoutError.invalidMemoryOrder = isFalse Miri.ABI.instDecidableEqLayoutError.decEq._proof_12
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidUnionCount (Miri.ABI.LayoutError.size error) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidUnionCount Miri.ABI.LayoutError.expectedArbitraryVariant = isFalse Miri.ABI.instDecidableEqLayoutError.decEq._proof_14
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidUnionCount (Miri.ABI.LayoutError.missingField index) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidUnionCount (Miri.ABI.LayoutError.missingVariant index) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidUnionCount Miri.ABI.LayoutError.missingPointee = isFalse Miri.ABI.instDecidableEqLayoutError.decEq._proof_17
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidMemoryOrder (Miri.ABI.LayoutError.fieldOutOfBounds index count) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidMemoryOrder Miri.ABI.LayoutError.invalidUnionCount = isFalse Miri.ABI.instDecidableEqLayoutError.decEq._proof_19
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidMemoryOrder Miri.ABI.LayoutError.invalidMemoryOrder = isTrue ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidMemoryOrder (Miri.ABI.LayoutError.size error) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidMemoryOrder Miri.ABI.LayoutError.expectedArbitraryVariant = isFalse Miri.ABI.instDecidableEqLayoutError.decEq._proof_21
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidMemoryOrder (Miri.ABI.LayoutError.missingField index) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidMemoryOrder (Miri.ABI.LayoutError.missingVariant index) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.invalidMemoryOrder Miri.ABI.LayoutError.missingPointee = isFalse Miri.ABI.instDecidableEqLayoutError.decEq._proof_24
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.size error) (Miri.ABI.LayoutError.fieldOutOfBounds index count) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.size error) Miri.ABI.LayoutError.invalidUnionCount = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.size error) Miri.ABI.LayoutError.invalidMemoryOrder = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.size a) (Miri.ABI.LayoutError.size b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.size error) Miri.ABI.LayoutError.expectedArbitraryVariant = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.size error) (Miri.ABI.LayoutError.missingField index) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.size error) (Miri.ABI.LayoutError.missingVariant index) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.size error) Miri.ABI.LayoutError.missingPointee = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.expectedArbitraryVariant (Miri.ABI.LayoutError.fieldOutOfBounds index count) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.expectedArbitraryVariant Miri.ABI.LayoutError.invalidUnionCount = isFalse Miri.ABI.instDecidableEqLayoutError.decEq._proof_35
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.expectedArbitraryVariant Miri.ABI.LayoutError.invalidMemoryOrder = isFalse Miri.ABI.instDecidableEqLayoutError.decEq._proof_36
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.expectedArbitraryVariant (Miri.ABI.LayoutError.size error) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.expectedArbitraryVariant Miri.ABI.LayoutError.expectedArbitraryVariant = isTrue ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.expectedArbitraryVariant (Miri.ABI.LayoutError.missingField index) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.expectedArbitraryVariant (Miri.ABI.LayoutError.missingVariant index) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.expectedArbitraryVariant Miri.ABI.LayoutError.missingPointee = isFalse Miri.ABI.instDecidableEqLayoutError.decEq._proof_40
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingField index) (Miri.ABI.LayoutError.fieldOutOfBounds index_1 count) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingField index) Miri.ABI.LayoutError.invalidUnionCount = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingField index) Miri.ABI.LayoutError.invalidMemoryOrder = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingField index) (Miri.ABI.LayoutError.size error) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingField index) Miri.ABI.LayoutError.expectedArbitraryVariant = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingField a) (Miri.ABI.LayoutError.missingField b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingField index) (Miri.ABI.LayoutError.missingVariant index_1) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingField index) Miri.ABI.LayoutError.missingPointee = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingVariant index) (Miri.ABI.LayoutError.fieldOutOfBounds index_1 count) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingVariant index) Miri.ABI.LayoutError.invalidUnionCount = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingVariant index) Miri.ABI.LayoutError.invalidMemoryOrder = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingVariant index) (Miri.ABI.LayoutError.size error) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingVariant index) Miri.ABI.LayoutError.expectedArbitraryVariant = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingVariant index) (Miri.ABI.LayoutError.missingField index_1) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingVariant a) (Miri.ABI.LayoutError.missingVariant b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq (Miri.ABI.LayoutError.missingVariant index) Miri.ABI.LayoutError.missingPointee = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.missingPointee (Miri.ABI.LayoutError.fieldOutOfBounds index count) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.missingPointee Miri.ABI.LayoutError.invalidUnionCount = isFalse Miri.ABI.instDecidableEqLayoutError.decEq._proof_60
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.missingPointee Miri.ABI.LayoutError.invalidMemoryOrder = isFalse Miri.ABI.instDecidableEqLayoutError.decEq._proof_61
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.missingPointee (Miri.ABI.LayoutError.size error) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.missingPointee Miri.ABI.LayoutError.expectedArbitraryVariant = isFalse Miri.ABI.instDecidableEqLayoutError.decEq._proof_63
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.missingPointee (Miri.ABI.LayoutError.missingField index) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.missingPointee (Miri.ABI.LayoutError.missingVariant index) = isFalse ⋯
- Miri.ABI.instDecidableEqLayoutError.decEq Miri.ABI.LayoutError.missingPointee Miri.ABI.LayoutError.missingPointee = isTrue ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- Miri.ABI.instReprLayoutError = { reprPrec := Miri.ABI.instReprLayoutError.repr }
- Primitive : FieldsShape
- Union (count : Nat) : FieldsShape
- Array (stride : Size) (count : UInt64) : FieldsShape
- Arbitrary (offsets : _root_.Array Size) (inMemoryOrder : _root_.Array Nat) : FieldsShape
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
- Miri.ABI.instDecidableEqFieldsShape.decEq Miri.ABI.FieldsShape.Primitive Miri.ABI.FieldsShape.Primitive = isTrue ⋯
- Miri.ABI.instDecidableEqFieldsShape.decEq Miri.ABI.FieldsShape.Primitive (Miri.ABI.FieldsShape.Union count) = isFalse ⋯
- Miri.ABI.instDecidableEqFieldsShape.decEq Miri.ABI.FieldsShape.Primitive (Miri.ABI.FieldsShape.Array stride count) = isFalse ⋯
- Miri.ABI.instDecidableEqFieldsShape.decEq Miri.ABI.FieldsShape.Primitive (Miri.ABI.FieldsShape.Arbitrary offsets inMemoryOrder) = isFalse ⋯
- Miri.ABI.instDecidableEqFieldsShape.decEq (Miri.ABI.FieldsShape.Union count) Miri.ABI.FieldsShape.Primitive = isFalse ⋯
- Miri.ABI.instDecidableEqFieldsShape.decEq (Miri.ABI.FieldsShape.Union a) (Miri.ABI.FieldsShape.Union b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.ABI.instDecidableEqFieldsShape.decEq (Miri.ABI.FieldsShape.Union count) (Miri.ABI.FieldsShape.Array stride count_1) = isFalse ⋯
- Miri.ABI.instDecidableEqFieldsShape.decEq (Miri.ABI.FieldsShape.Union count) (Miri.ABI.FieldsShape.Arbitrary offsets inMemoryOrder) = isFalse ⋯
- Miri.ABI.instDecidableEqFieldsShape.decEq (Miri.ABI.FieldsShape.Array stride count) Miri.ABI.FieldsShape.Primitive = isFalse ⋯
- Miri.ABI.instDecidableEqFieldsShape.decEq (Miri.ABI.FieldsShape.Array stride count) (Miri.ABI.FieldsShape.Union count_1) = isFalse ⋯
- Miri.ABI.instDecidableEqFieldsShape.decEq (Miri.ABI.FieldsShape.Array stride count) (Miri.ABI.FieldsShape.Arbitrary offsets inMemoryOrder) = isFalse ⋯
- Miri.ABI.instDecidableEqFieldsShape.decEq (Miri.ABI.FieldsShape.Arbitrary offsets inMemoryOrder) Miri.ABI.FieldsShape.Primitive = isFalse ⋯
- Miri.ABI.instDecidableEqFieldsShape.decEq (Miri.ABI.FieldsShape.Arbitrary offsets inMemoryOrder) (Miri.ABI.FieldsShape.Union count) = isFalse ⋯
- Miri.ABI.instDecidableEqFieldsShape.decEq (Miri.ABI.FieldsShape.Arbitrary offsets inMemoryOrder) (Miri.ABI.FieldsShape.Array stride count) = isFalse ⋯
Instances For
@[instance_reducible]
Equations
- Miri.ABI.instReprFieldsShape = { reprPrec := Miri.ABI.instReprFieldsShape.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Miri.ABI.FieldsShape.Primitive.count = 0
- (Miri.ABI.FieldsShape.Union a).count = a
- (Miri.ABI.FieldsShape.Array a a_1).count = a_1.toNat
- (Miri.ABI.FieldsShape.Arbitrary a a_1).count = a.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.
- (Miri.ABI.FieldsShape.Union 0).validate = Except.error Miri.ABI.LayoutError.invalidUnionCount
- x✝.validate = Except.ok ()
Instances For
Primitive deliberately yields the source's single pseudo-field.
Equations
- Miri.ABI.FieldsShape.Primitive.indexByIncreasingOffset = do Miri.ABI.FieldsShape.Primitive.validate pure #[0]
- (Miri.ABI.FieldsShape.Arbitrary offsets order).indexByIncreasingOffset = do (Miri.ABI.FieldsShape.Arbitrary offsets order).validate pure order
- fields.indexByIncreasingOffset = do fields.validate pure (List.range fields.count).toArray
Instances For
- Direct : TagEncoding
- Niche (untaggedVariant nicheVariantsStart nicheVariantsEnd : Nat) (nicheStart : U128) : TagEncoding
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
- Miri.ABI.instDecidableEqTagEncoding.decEq Miri.ABI.TagEncoding.Direct Miri.ABI.TagEncoding.Direct = isTrue ⋯
- Miri.ABI.instDecidableEqTagEncoding.decEq Miri.ABI.TagEncoding.Direct (Miri.ABI.TagEncoding.Niche untaggedVariant nicheVariantsStart nicheVariantsEnd nicheStart) = isFalse ⋯
- Miri.ABI.instDecidableEqTagEncoding.decEq (Miri.ABI.TagEncoding.Niche untaggedVariant nicheVariantsStart nicheVariantsEnd nicheStart) Miri.ABI.TagEncoding.Direct = isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- Miri.ABI.instReprTagEncoding = { reprPrec := Miri.ABI.instReprTagEncoding.repr }
- offset : Size
- value : Primitive
- validRange : WrappingRange
Instances For
@[instance_reducible]
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
@[instance_reducible]
Equations
- Miri.ABI.instReprNiche = { reprPrec := Miri.ABI.instReprNiche.repr }
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- variant.isUninhabited = variant.uninhabited
Instances For
Equations
- variant.hasFields = !variant.fieldOffsets.isEmpty
Instances For
- Empty : Variants
- Single (index : Nat) : Variants
- Multiple (tag : Scalar) (tagEncoding : TagEncoding) (tagField : Nat) (variants : Array VariantLayout) : Variants
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.ABI.instDecidableEqVariants.decEq Miri.ABI.Variants.Empty Miri.ABI.Variants.Empty = isTrue ⋯
- Miri.ABI.instDecidableEqVariants.decEq Miri.ABI.Variants.Empty (Miri.ABI.Variants.Single index) = isFalse ⋯
- Miri.ABI.instDecidableEqVariants.decEq Miri.ABI.Variants.Empty (Miri.ABI.Variants.Multiple tag tagEncoding tagField variants) = isFalse ⋯
- Miri.ABI.instDecidableEqVariants.decEq (Miri.ABI.Variants.Single index) Miri.ABI.Variants.Empty = isFalse ⋯
- Miri.ABI.instDecidableEqVariants.decEq (Miri.ABI.Variants.Single a) (Miri.ABI.Variants.Single b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.ABI.instDecidableEqVariants.decEq (Miri.ABI.Variants.Single index) (Miri.ABI.Variants.Multiple tag tagEncoding tagField variants) = isFalse ⋯
- Miri.ABI.instDecidableEqVariants.decEq (Miri.ABI.Variants.Multiple tag tagEncoding tagField variants) Miri.ABI.Variants.Empty = isFalse ⋯
- Miri.ABI.instDecidableEqVariants.decEq (Miri.ABI.Variants.Multiple tag tagEncoding tagField variants) (Miri.ABI.Variants.Single index) = isFalse ⋯
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
- Miri.ABI.instReprVariants.repr Miri.ABI.Variants.Empty prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Miri.ABI.Variants.Empty")).group prec✝
Instances For
@[instance_reducible]
Equations
- Miri.ABI.instReprVariants = { reprPrec := Miri.ABI.instReprVariants.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- Miri.ABI.instReprLayoutData = { reprPrec := Miri.ABI.instReprLayoutData.repr }
@[reducible, inline]
Equations
Instances For
Equations
- layout.isAggregate = !layout.backendRepr.isScalarOrSimd
Instances For
Equations
- layout.isUninhabited = layout.uninhabited
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Instances For
Equations
- layout.isUnsized = layout.backendRepr.isUnsized
Instances For
Equations
- layout.isSized = layout.backendRepr.isSized
Instances For
Equations
- layout.isScalableVector = match layout.backendRepr with | Miri.ABI.BackendRepr.SimdScalableVector => true | x => false
Instances For
Equations
- layout.scalableVectorElementCount = match layout.backendRepr with | Miri.ABI.BackendRepr.SimdScalableVector => some count | x => none
Instances For
Equations
- layout.isZst = match layout.backendRepr with | Miri.ABI.BackendRepr.Memory => sized && layout.size.bytes == 0 | x => false
Instances For
Equations
- layout.isSsaStandalone = match layout.backendRepr with | Miri.ABI.BackendRepr.Memory => layout.isZst | x => true
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
@[instance_reducible]
instance
Miri.ABI.instDecidableEqTyAndLayout
{Ty✝ : Type}
[DecidableEq Ty✝]
:
DecidableEq (TyAndLayout Ty✝)
def
Miri.ABI.instDecidableEqTyAndLayout.decEq
{Ty✝ : Type}
[DecidableEq Ty✝]
(x✝ x✝¹ : TyAndLayout Ty✝)
:
Equations
Instances For
@[instance_reducible]
Equations
- Miri.ABI.instReprTyAndLayout = { reprPrec := Miri.ABI.instReprTyAndLayout.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Required compiler/type-system queries: callers supply evidence; this module never fabricates the type of a field, variant, or pointee.
- field : TyAndLayout Ty → Nat → Except LayoutError (TyAndLayout Ty)
- variant : TyAndLayout Ty → Nat → Except LayoutError (TyAndLayout Ty)
- pointee : TyAndLayout Ty → Except LayoutError (TyAndLayout Ty)