diff --git a/kmir/src/kmir/alloc.py b/kmir/src/kmir/alloc.py index c2ce0b6bc..5e9ddbc22 100644 --- a/kmir/src/kmir/alloc.py +++ b/kmir/src/kmir/alloc.py @@ -35,7 +35,7 @@ def from_dict(dct: dict[str, Any]) -> GlobalAlloc: case {'Memory': _}: return Memory.from_dict(dct) case _: - raise ValueError('Unsupported or invalid GlobalAlloc data: {dct}') + raise ValueError(f'Unsupported or invalid GlobalAlloc data: {dct}') @dataclass diff --git a/kmir/src/kmir/decoding.py b/kmir/src/kmir/decoding.py index f6ec681b0..564a19c4f 100644 --- a/kmir/src/kmir/decoding.py +++ b/kmir/src/kmir/decoding.py @@ -11,7 +11,6 @@ ArbitraryFields, ArrayT, BoolT, - Direct, EnumT, Initialized, IntT, @@ -42,7 +41,7 @@ from pyk.kast import KInner - from .ty import FieldsShape, LayoutShape, MachineSize, Scalar, TagEncoding, Ty, TypeMetadata, UintTy + from .ty import FieldsShape, IntegerLength, LayoutShape, MachineSize, Scalar, TagEncoding, Ty, TypeMetadata, UintTy from .value import Metadata @@ -241,7 +240,7 @@ def _decode_enum( fields=fields, offsets=offsets, # --- - tag_index=index, + index=index, # --- types=types, ) @@ -282,15 +281,15 @@ def _decode_enum_single( discriminants: list[int], fields: list[list[Ty]], offsets: list[MachineSize], - tag_index: int, + index: int, types: Mapping[Ty, TypeMetadata], ) -> Value: + assert index == 0, 'Assumed index to always be 0 for Single(index)' + assert len(fields) == 1, 'Expected a single list of field types for single-variant enum' tys = fields[0] assert len(discriminants) == 1, 'Expected a single discriminant for single-variant enum' - discriminant = discriminants[0] - assert tag_index == discriminant, 'Assumed tag_index to be the same as the discriminant' field_values = _decode_fields(data=data, tys=tys, offsets=offsets, types=types) return AggregateValue(0, field_values) @@ -310,18 +309,16 @@ def _decode_enum_multiple( # --- types: Mapping[Ty, TypeMetadata], ) -> Value: - if not isinstance(tag_encoding, Direct): - raise ValueError(f'Unsupported encoding: {tag_encoding}') - - assert tag_field == 0, 'Assumed tag field to be zero' assert len(offsets) == 1, 'Assumed offsets to only contain the tag offset' - tag_offset = offsets[0] - tag_value = _extract_tag_value(data=data, tag_offset=tag_offset, tag=tag) + assert tag_field == 0, 'Assumed tag field to be zero accordingly' + tag_offset = offsets[tag_field] + tag_value, width = _extract_tag(data=data, tag_offset=tag_offset, tag=tag) + discriminant = tag_encoding.decode(tag_value, width=width) try: - variant_idx = discriminants.index(tag_value) + variant_idx = discriminants.index(discriminant) except ValueError as err: - raise ValueError(f'Tag not found: {tag_value}') from err + raise ValueError(f'Discriminant not found: {discriminant}') from err tys = fields[variant_idx] @@ -350,16 +347,17 @@ def _decode_fields( return res -def _extract_tag_value(*, data: bytes, tag_offset: MachineSize, tag: Scalar) -> int: +def _extract_tag(*, data: bytes, tag_offset: MachineSize, tag: Scalar) -> tuple[int, IntegerLength]: match tag: case Initialized( value=PrimitiveInt( length=length, - signed=signed, + signed=False, ), valid_range=_, ): tag_data = data[tag_offset.in_bytes : tag_offset.in_bytes + length.value] - return int.from_bytes(tag_data, byteorder='little', signed=signed) + tag_value = int.from_bytes(tag_data, byteorder='little', signed=False) + return tag_value, length case _: - raise ValueError('Unsupported tag: {tag}') + raise ValueError(f'Unsupported tag: {tag}') diff --git a/kmir/src/kmir/ty.py b/kmir/src/kmir/ty.py index 90b5a8c3a..f42d0007d 100644 --- a/kmir/src/kmir/ty.py +++ b/kmir/src/kmir/ty.py @@ -1,6 +1,6 @@ from __future__ import annotations -from abc import ABC +from abc import ABC, abstractmethod from dataclasses import dataclass from enum import Enum from functools import cached_property @@ -151,6 +151,13 @@ def from_raw(data: Any) -> EnumT: case _: raise _cannot_parse_as('EnumT', data) + def nbytes(self, types: Mapping[Ty, TypeMetadata]) -> int: + match self.layout: + case None: + raise ValueError(f'Cannot determine size, layout is missing for: {self}') + case LayoutShape(size=size): + return size.in_bytes + @dataclass class LayoutShape: @@ -349,6 +356,11 @@ class IntegerLength(Enum): I64 = 8 I128 = 16 + def wrapping_sub(self, x: int, y: int) -> int: + bit_width = 8 * self.value + mask = (1 << bit_width) - 1 + return (x - y) & mask + @dataclass class Float(Primitive): ... @@ -364,18 +376,71 @@ def from_raw(data: Any) -> TagEncoding: match data: case 'Direct': return Direct() - case {'Niche': _}: - return Niche() + case { + 'Niche': { + 'untagged_variant': untagged_variant, + 'niche_variants': niche_variants, + 'niche_start': niche_start, + }, + }: + return Niche( + untagged_variant=int(untagged_variant), + niche_variants=RangeInclusive.from_raw(niche_variants), + niche_start=int(niche_start), + ) case _: raise _cannot_parse_as('TagEncoding', data) + @abstractmethod + def decode(self, tag: int, *, width: IntegerLength) -> int: ... + @dataclass -class Direct(TagEncoding): ... +class Direct(TagEncoding): + def decode(self, tag: int, *, width: IntegerLength) -> int: + # The tag directly stores the discriminant. + return tag @dataclass -class Niche(TagEncoding): ... +class Niche(TagEncoding): + untagged_variant: int + niche_variants: RangeInclusive + niche_start: int + + def decode(self, tag: int, *, width: IntegerLength) -> int: + # For this encoding, the discriminant and variant index of each variant coincide. + # To recover the variant index i from tag: + # i = tag.wrapping_sub(niche_start) + niche_variants.start + # If i ends up outside niche_variants, the tag must have encoded the untagged_variant. + i = width.wrapping_sub(tag, self.niche_start) + self.niche_variants.start + if not i in self.niche_variants: + return self.untagged_variant + return i + + +class RangeInclusive(NamedTuple): + start: int + end: int + + @staticmethod + def from_raw(data: Any) -> RangeInclusive: + match data: + case { + 'start': start, + 'end': end, + }: + return RangeInclusive( + start=int(start), + end=int(end), + ) + case _: + raise _cannot_parse_as('RangeInclusive', data) + + def __contains__(self, x: object) -> bool: + if isinstance(x, int): + return self.start <= x <= self.end + raise TypeError('Method RangeInclusive.__contains__ is only supported for int, got: {x}') class WrappingRange(NamedTuple): diff --git a/kmir/src/tests/integration/data/decode-value/enum-option-nonzero-none.expected b/kmir/src/tests/integration/data/decode-value/enum-option-nonzero-none.expected new file mode 100644 index 000000000..56b70ccf6 --- /dev/null +++ b/kmir/src/tests/integration/data/decode-value/enum-option-nonzero-none.expected @@ -0,0 +1 @@ +Aggregate ( variantIdx ( 0 ) , .List ) diff --git a/kmir/src/tests/integration/data/decode-value/enum-option-nonzero-none.json b/kmir/src/tests/integration/data/decode-value/enum-option-nonzero-none.json new file mode 100644 index 000000000..2ac1e1e52 --- /dev/null +++ b/kmir/src/tests/integration/data/decode-value/enum-option-nonzero-none.json @@ -0,0 +1,150 @@ +{ + "bytes": [ + 0 + ], + "types": [ + [ + 0, + { + "PrimitiveType": { + "Uint": "U8" + } + } + ] + ], + "typeInfo": { + "EnumType": { + "name": "core::option::Option>", + "adt_def": 100, + "discriminants": [ + 0, + 1 + ], + "fields": [ + [], + [ + 0 + ] + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Multiple": { + "tag": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 1, + "end": 0 + } + } + }, + "tag_encoding": { + "Niche": { + "untagged_variant": 1, + "niche_variants": { + "start": 0, + "end": 0 + }, + "niche_start": 0 + } + }, + "tag_field": 0, + "variants": [ + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 0 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Single": { + "index": 1 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 1, + "end": 255 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + ] + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 1, + "end": 0 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + } + } +} diff --git a/kmir/src/tests/integration/data/decode-value/enum-option-nonzero-some.expected b/kmir/src/tests/integration/data/decode-value/enum-option-nonzero-some.expected new file mode 100644 index 000000000..3b5dcdb6c --- /dev/null +++ b/kmir/src/tests/integration/data/decode-value/enum-option-nonzero-some.expected @@ -0,0 +1 @@ +Aggregate ( variantIdx ( 1 ) , ListItem ( Integer ( 123 , 8 , false ) ) ) diff --git a/kmir/src/tests/integration/data/decode-value/enum-option-nonzero-some.json b/kmir/src/tests/integration/data/decode-value/enum-option-nonzero-some.json new file mode 100644 index 000000000..5d279cf4d --- /dev/null +++ b/kmir/src/tests/integration/data/decode-value/enum-option-nonzero-some.json @@ -0,0 +1,150 @@ +{ + "bytes": [ + 123 + ], + "types": [ + [ + 0, + { + "PrimitiveType": { + "Uint": "U8" + } + } + ] + ], + "typeInfo": { + "EnumType": { + "name": "core::option::Option>", + "adt_def": 100, + "discriminants": [ + 0, + 1 + ], + "fields": [ + [], + [ + 0 + ] + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Multiple": { + "tag": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 1, + "end": 0 + } + } + }, + "tag_encoding": { + "Niche": { + "untagged_variant": 1, + "niche_variants": { + "start": 0, + "end": 0 + }, + "niche_start": 0 + } + }, + "tag_field": 0, + "variants": [ + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 0 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Single": { + "index": 1 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 1, + "end": 255 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + ] + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 1, + "end": 0 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + } + } +} diff --git a/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs b/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs new file mode 100644 index 000000000..3688596e4 --- /dev/null +++ b/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs @@ -0,0 +1,19 @@ +#[derive(Debug, PartialEq)] +enum SmallInt { + One = 1, + Two = 2, +} + +fn foo(x: u8) -> Option { + match x { + 1 => Some(SmallInt::One), + 2 => Some(SmallInt::Two), + _ => None, + } +} + +fn main() { + assert_eq!(foo(0), None); + assert_eq!(foo(1), Some(SmallInt::One)); + assert_eq!(foo(2), Some(SmallInt::Two)); +} diff --git a/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.smir.json b/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.smir.json new file mode 100644 index 000000000..aa172ab45 --- /dev/null +++ b/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.smir.json @@ -0,0 +1,9952 @@ +{ + "name": "niche_enum", + "crate_id": 4383339030477113000, + "allocs": [ + { + "alloc_id": 2, + "ty": 46, + "global_alloc": { + "Memory": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Not" + } + } + }, + { + "alloc_id": 3, + "ty": 46, + "global_alloc": { + "Memory": { + "bytes": [ + 1 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Not" + } + } + }, + { + "alloc_id": 4, + "ty": 46, + "global_alloc": { + "Memory": { + "bytes": [ + 2 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Not" + } + } + }, + { + "alloc_id": 7, + "ty": 52, + "global_alloc": { + "Memory": { + "bytes": [ + 84, + 119, + 111 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Not" + } + } + }, + { + "alloc_id": 8, + "ty": 52, + "global_alloc": { + "Memory": { + "bytes": [ + 79, + 110, + 101 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Not" + } + } + }, + { + "alloc_id": 9, + "ty": 52, + "global_alloc": { + "Memory": { + "bytes": [ + 83, + 111, + 109, + 101 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Not" + } + } + }, + { + "alloc_id": 10, + "ty": 52, + "global_alloc": { + "Memory": { + "bytes": [ + 78, + 111, + 110, + 101 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Not" + } + } + } + ], + "functions": [ + [ + 0, + { + "NormalSym": "_ZN3std2rt19lang_start_internal17h018b8394ba015d86E" + } + ], + [ + 13, + { + "NormalSym": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h3f5fb767be9a36f6E" + } + ], + [ + 14, + { + "NormalSym": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hb6ca5e293793a966E" + } + ], + [ + 19, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h9d4d3e23ddac3525E" + } + ], + [ + 20, + { + "IntrinsicSym": "black_box" + } + ], + [ + 21, + { + "NormalSym": "_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17h7e1a5369e8fa3c63E" + } + ], + [ + 26, + { + "NormalSym": "_ZN57_$LT$niche_enum..SmallInt$u20$as$u20$core..fmt..Debug$GT$3fmt17h566d8f06f2c4da8aE" + } + ], + [ + 29, + { + "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17hdd0017e9af2c72bdE" + } + ], + [ + 31, + { + "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h6a79bd516b59ef76E" + } + ], + [ + 35, + { + "NormalSym": "_ZN4core9panicking19assert_failed_inner17h1d286061ca0adfe7E" + } + ], + [ + 40, + { + "NormalSym": "_ZN4core3fmt9Formatter25debug_tuple_field1_finish17h9a57a6e5dd04f319E" + } + ], + [ + 43, + { + "NormalSym": "_ZN4core3fmt9Formatter9write_str17h79222ac07baf2d98E" + } + ], + [ + 45, + { + "NormalSym": "_ZN61_$LT$niche_enum..SmallInt$u20$as$u20$core..cmp..PartialEq$GT$2eq17h4e1eb00ac6041601E" + } + ], + [ + 47, + { + "NormalSym": "_ZN10niche_enum3foo17h4660588c7d8560f7E" + } + ], + [ + 48, + { + "NormalSym": "_ZN70_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h38288ca148e95dcfE" + } + ], + [ + 49, + { + "NormalSym": "_ZN4core9panicking13assert_failed17h895aa49b7620f3dcE" + } + ], + [ + 84, + { + "NoOpSym": "" + } + ] + ], + "uneval_consts": [], + "items": [ + { + "symbol_name": "_ZN10niche_enum3foo17h4660588c7d8560f7E", + "mono_item_kind": { + "MonoItemFn": { + "name": "foo", + "id": 10, + "body": { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Copy": { + "local": 1, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 3 + ], + [ + 2, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 88 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 11, + 0, + [ + { + "Type": 42 + } + ], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 89 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 89 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 12, + 1, + [], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 91 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 11, + 1, + [ + { + "Type": 42 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 92 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 90 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 12, + 0, + [], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 94 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 11, + 1, + [ + { + "Type": 42 + } + ], + null, + null + ] + }, + [ + { + "Move": { + "local": 2, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 95 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 93 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 96 + } + } + ], + "locals": [ + { + "ty": 46, + "span": 97, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 98, + "mutability": "Not" + }, + { + "ty": 42, + "span": 94, + "mutability": "Mut" + }, + { + "ty": 42, + "span": 91, + "mutability": "Mut" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "x", + "source_info": { + "span": 98, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 99 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN10niche_enum4main17h681134544c9ffe65E", + "mono_item_kind": { + "MonoItemFn": { + "name": "main", + "id": 13, + "body": { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 100, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 47, + "id": 19 + } + } + }, + "args": [ + { + "Constant": { + "span": 101, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 20 + } + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 102 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 2, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 104 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 105, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 2 + ] + ] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 25, + "id": 22 + } + } + } + } + ] + }, + "span": 105 + }, + { + "kind": { + "Assign": [ + { + "local": 1, + "projection": [] + }, + { + "Aggregate": [ + "Tuple", + [ + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 106 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 0, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 107 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 108 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 103, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 48, + "id": 21 + } + } + }, + "args": [ + { + "Copy": { + "local": 5, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + } + ], + "destination": { + "local": 7, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 103 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 7, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 103 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 109, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 47, + "id": 19 + } + } + }, + "args": [ + { + "Constant": { + "span": 110, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 1 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 23 + } + } + } + ], + "destination": { + "local": 13, + "projection": [] + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 111 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 14, + 0, + [], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 114 + }, + { + "kind": { + "Assign": [ + { + "local": 10, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 11, + 0, + [ + { + "Type": 50 + } + ], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 115 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 112, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 49, + "id": 24 + } + } + }, + "args": [ + { + "Move": { + "local": 8, + "projection": [] + } + }, + { + "Copy": { + "local": 5, + "projection": [] + } + }, + { + "Copy": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 10, + "projection": [] + } + } + ], + "destination": { + "local": 9, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 113 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 12, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 13, + "projection": [] + } + ] + } + ] + }, + "span": 117 + }, + { + "kind": { + "Assign": [ + { + "local": 14, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 118, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 3 + ] + ] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 25, + "id": 25 + } + } + } + } + ] + }, + "span": 118 + }, + { + "kind": { + "Assign": [ + { + "local": 11, + "projection": [] + }, + { + "Aggregate": [ + "Tuple", + [ + { + "Move": { + "local": 12, + "projection": [] + } + }, + { + "Move": { + "local": 14, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 119 + }, + { + "kind": { + "Assign": [ + { + "local": 15, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 11, + "projection": [ + { + "Field": [ + 0, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 120 + }, + { + "kind": { + "Assign": [ + { + "local": 16, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 11, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 121 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 116, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 48, + "id": 21 + } + } + }, + "args": [ + { + "Copy": { + "local": 15, + "projection": [] + } + }, + { + "Copy": { + "local": 16, + "projection": [] + } + } + ], + "destination": { + "local": 17, + "projection": [] + }, + "target": 6, + "unwind": "Continue" + } + }, + "span": 116 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 17, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 8 + ] + ], + "otherwise": 7 + } + } + }, + "span": 116 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 122, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 47, + "id": 19 + } + } + }, + "args": [ + { + "Constant": { + "span": 123, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 2 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 9, + "id": 26 + } + } + } + ], + "destination": { + "local": 23, + "projection": [] + }, + "target": 9, + "unwind": "Continue" + } + }, + "span": 124 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 18, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 14, + 0, + [], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 127 + }, + { + "kind": { + "Assign": [ + { + "local": 20, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 11, + 0, + [ + { + "Type": 50 + } + ], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 128 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 125, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 49, + "id": 24 + } + } + }, + "args": [ + { + "Move": { + "local": 18, + "projection": [] + } + }, + { + "Copy": { + "local": 15, + "projection": [] + } + }, + { + "Copy": { + "local": 16, + "projection": [] + } + }, + { + "Move": { + "local": 20, + "projection": [] + } + } + ], + "destination": { + "local": 19, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 126 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 22, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 23, + "projection": [] + } + ] + } + ] + }, + "span": 130 + }, + { + "kind": { + "Assign": [ + { + "local": 24, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 131, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 4 + ] + ] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 25, + "id": 27 + } + } + } + } + ] + }, + "span": 131 + }, + { + "kind": { + "Assign": [ + { + "local": 21, + "projection": [] + }, + { + "Aggregate": [ + "Tuple", + [ + { + "Move": { + "local": 22, + "projection": [] + } + }, + { + "Move": { + "local": 24, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 132 + }, + { + "kind": { + "Assign": [ + { + "local": 25, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 21, + "projection": [ + { + "Field": [ + 0, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 133 + }, + { + "kind": { + "Assign": [ + { + "local": 26, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 21, + "projection": [ + { + "Field": [ + 1, + 25 + ] + } + ] + } + } + } + ] + }, + "span": 134 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 129, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 48, + "id": 21 + } + } + }, + "args": [ + { + "Copy": { + "local": 25, + "projection": [] + } + }, + { + "Copy": { + "local": 26, + "projection": [] + } + } + ], + "destination": { + "local": 27, + "projection": [] + }, + "target": 10, + "unwind": "Continue" + } + }, + "span": 129 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 27, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 12 + ] + ], + "otherwise": 11 + } + } + }, + "span": 129 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 135 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 28, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 14, + 0, + [], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 138 + }, + { + "kind": { + "Assign": [ + { + "local": 30, + "projection": [] + }, + { + "Aggregate": [ + { + "Adt": [ + 11, + 0, + [ + { + "Type": 50 + } + ], + null, + null + ] + }, + [] + ] + } + ] + }, + "span": 139 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 136, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 49, + "id": 24 + } + } + }, + "args": [ + { + "Move": { + "local": 28, + "projection": [] + } + }, + { + "Copy": { + "local": 25, + "projection": [] + } + }, + { + "Copy": { + "local": 26, + "projection": [] + } + }, + { + "Move": { + "local": 30, + "projection": [] + } + } + ], + "destination": { + "local": 29, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 137 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 140, + "mutability": "Mut" + }, + { + "ty": 51, + "span": 106, + "mutability": "Mut" + }, + { + "ty": 25, + "span": 104, + "mutability": "Mut" + }, + { + "ty": 46, + "span": 102, + "mutability": "Not" + }, + { + "ty": 25, + "span": 105, + "mutability": "Mut" + }, + { + "ty": 25, + "span": 107, + "mutability": "Not" + }, + { + "ty": 25, + "span": 108, + "mutability": "Not" + }, + { + "ty": 44, + "span": 103, + "mutability": "Mut" + }, + { + "ty": 38, + "span": 141, + "mutability": "Not" + }, + { + "ty": 37, + "span": 113, + "mutability": "Not" + }, + { + "ty": 39, + "span": 115, + "mutability": "Mut" + }, + { + "ty": 51, + "span": 119, + "mutability": "Mut" + }, + { + "ty": 25, + "span": 117, + "mutability": "Mut" + }, + { + "ty": 46, + "span": 111, + "mutability": "Not" + }, + { + "ty": 25, + "span": 118, + "mutability": "Mut" + }, + { + "ty": 25, + "span": 120, + "mutability": "Not" + }, + { + "ty": 25, + "span": 121, + "mutability": "Not" + }, + { + "ty": 44, + "span": 116, + "mutability": "Mut" + }, + { + "ty": 38, + "span": 142, + "mutability": "Not" + }, + { + "ty": 37, + "span": 126, + "mutability": "Not" + }, + { + "ty": 39, + "span": 128, + "mutability": "Mut" + }, + { + "ty": 51, + "span": 132, + "mutability": "Mut" + }, + { + "ty": 25, + "span": 130, + "mutability": "Mut" + }, + { + "ty": 46, + "span": 124, + "mutability": "Not" + }, + { + "ty": 25, + "span": 131, + "mutability": "Mut" + }, + { + "ty": 25, + "span": 133, + "mutability": "Not" + }, + { + "ty": 25, + "span": 134, + "mutability": "Not" + }, + { + "ty": 44, + "span": 129, + "mutability": "Mut" + }, + { + "ty": 38, + "span": 143, + "mutability": "Not" + }, + { + "ty": 37, + "span": 137, + "mutability": "Not" + }, + { + "ty": 39, + "span": 139, + "mutability": "Mut" + } + ], + "arg_count": 0, + "var_debug_info": [ + { + "name": "left_val", + "source_info": { + "span": 107, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "right_val", + "source_info": { + "span": 108, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 6, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "kind", + "source_info": { + "span": 141, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 8, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "left_val", + "source_info": { + "span": 120, + "scope": 3 + }, + "composite": null, + "value": { + "Place": { + "local": 15, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "right_val", + "source_info": { + "span": 121, + "scope": 3 + }, + "composite": null, + "value": { + "Place": { + "local": 16, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "kind", + "source_info": { + "span": 142, + "scope": 4 + }, + "composite": null, + "value": { + "Place": { + "local": 18, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "left_val", + "source_info": { + "span": 133, + "scope": 5 + }, + "composite": null, + "value": { + "Place": { + "local": 25, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "right_val", + "source_info": { + "span": 134, + "scope": 5 + }, + "composite": null, + "value": { + "Place": { + "local": 26, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "kind", + "source_info": { + "span": 143, + "scope": 6 + }, + "composite": null, + "value": { + "Place": { + "local": 28, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 144 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN3std2rt10lang_start17h5aed22603d64e1d1E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>", + "id": 0, + "body": { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 1 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 2 + }, + { + "kind": { + "StorageLive": 8 + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Aggregate": [ + { + "Closure": [ + 1, + [ + { + "Type": 1 + }, + { + "Type": 2 + }, + { + "Type": 3 + }, + { + "Type": 4 + } + ] + ] + }, + [ + { + "Copy": { + "local": 1, + "projection": [] + } + } + ] + ] + } + ] + }, + "span": 3 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 8, + "projection": [] + } + ] + } + ] + }, + "span": 2 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 7, + "projection": [] + } + }, + 5 + ] + } + ] + }, + "span": 2 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 0, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 0, + "id": 0 + } + } + }, + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 5, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 1 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 6 + }, + "span": 5 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 5, + "projection": [ + { + "Downcast": 0 + }, + { + "Field": [ + 0, + 6 + ] + } + ] + } + } + } + ] + }, + "span": 6 + }, + { + "kind": { + "StorageDead": 8 + }, + "span": 7 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 7 + } + ], + "terminator": { + "kind": "Return", + "span": 4 + } + } + ], + "locals": [ + { + "ty": 6, + "span": 8, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 9, + "mutability": "Not" + }, + { + "ty": 6, + "span": 10, + "mutability": "Not" + }, + { + "ty": 8, + "span": 11, + "mutability": "Not" + }, + { + "ty": 9, + "span": 12, + "mutability": "Not" + }, + { + "ty": 10, + "span": 1, + "mutability": "Mut" + }, + { + "ty": 5, + "span": 2, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 2, + "mutability": "Not" + }, + { + "ty": 12, + "span": 3, + "mutability": "Not" + } + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "argc", + "source_info": { + "span": 10, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "argv", + "source_info": { + "span": 11, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 + }, + { + "name": "sigpipe", + "source_info": { + "span": 12, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": 4 + }, + { + "name": "v", + "source_info": { + "span": 6, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 13 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h6a79bd516b59ef76E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::rt::lang_start::<()>::{closure#0}", + "id": 1, + "body": { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 2 + }, + "span": 16 + }, + { + "kind": { + "StorageLive": 3 + }, + "span": 15 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 17 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + } + } + ] + }, + "span": 17 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 14, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 13, + "id": 1 + } + } + }, + "args": [ + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 3, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 15 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 4 + }, + "span": 19 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 18, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 14, + "id": 2 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 16 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 21 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 22 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + } + ] + } + ] + } + ] + }, + "span": 22 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 15 + ] + }, + { + "Field": [ + 0, + 9 + ] + } + ] + } + } + } + ] + }, + "span": 23 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Cast": [ + "IntToInt", + { + "Move": { + "local": 6, + "projection": [] + } + }, + 16 + ] + } + ] + }, + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 + }, + { + "kind": { + "StorageDead": 5 + }, + "span": 26 + }, + { + "kind": { + "StorageDead": 2 + }, + "span": 27 + } + ], + "terminator": { + "kind": "Return", + "span": 20 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 28, + "mutability": "Mut" + }, + { + "ty": 11, + "span": 3, + "mutability": "Mut" + }, + { + "ty": 17, + "span": 16, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 15, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 17, + "mutability": "Mut" + }, + { + "ty": 18, + "span": 22, + "mutability": "Mut" + }, + { + "ty": 9, + "span": 23, + "mutability": "Mut" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "main", + "source_info": { + "span": 9, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [ + "Deref", + { + "Field": [ + 0, + 7 + ] + } + ] + } + }, + "argument_index": null + }, + { + "name": "self", + "source_info": { + "span": 29, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "self", + "source_info": { + "span": 30, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 5, + "projection": [] + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 3 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h3f5fb767be9a36f6E", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::sys::backtrace::__rust_begin_short_backtrace::", + "id": 2, + "body": { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 31, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 19, + "id": 3 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 33 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 34, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 20, + "id": 5 + } + } + }, + "args": [ + { + "Constant": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + } + ], + "destination": { + "local": 2, + "projection": [] + }, + "target": 2, + "unwind": "Unreachable" + } + }, + "span": 35 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 36 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 37, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 38, + "mutability": "Not" + }, + { + "ty": 1, + "span": 39, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "f", + "source_info": { + "span": 38, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "result", + "source_info": { + "span": 40, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 0, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "dummy", + "source_info": { + "span": 41, + "scope": 2 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 42 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h01b5714406f32576E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<&std::option::Option as std::fmt::Debug>::fmt", + "id": 3, + "body": { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 45 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 21, + "id": 6 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 44 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 46 + } + } + ], + "locals": [ + { + "ty": 22, + "span": 47, + "mutability": "Mut" + }, + { + "ty": 23, + "span": 48, + "mutability": "Not" + }, + { + "ty": 24, + "span": 49, + "mutability": "Not" + }, + { + "ty": 25, + "span": 48, + "mutability": "Mut" + } + ], + "arg_count": 2, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 48, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "f", + "source_info": { + "span": 49, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + } + ], + "spread_arg": null, + "span": 50 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h0465fb7ba3be4f28E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<&SmallInt as std::fmt::Debug>::fmt", + "id": 3, + "body": { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 45 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 43, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 26, + "id": 7 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 44 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 46 + } + } + ], + "locals": [ + { + "ty": 22, + "span": 47, + "mutability": "Mut" + }, + { + "ty": 27, + "span": 48, + "mutability": "Not" + }, + { + "ty": 24, + "span": 49, + "mutability": "Not" + }, + { + "ty": 28, + "span": 48, + "mutability": "Mut" + } + ], + "arg_count": 2, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 48, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "f", + "source_info": { + "span": 49, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + } + ], + "spread_arg": null, + "span": 50 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17heb5b6d728a5f5aaaE", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 4, + "body": { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 51, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 29, + "id": 8 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 51 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 51 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 51, + "mutability": "Mut" + }, + { + "ty": 30, + "span": 51, + "mutability": "Not" + }, + { + "ty": 1, + "span": 51, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 51 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h9d4d3e23ddac3525E", + "mono_item_kind": { + "MonoItemFn": { + "name": ">::call_once", + "id": 4, + "body": { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 51 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 51 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 51, + "mutability": "Mut" + }, + { + "ty": 7, + "span": 51, + "mutability": "Not" + }, + { + "ty": 1, + "span": 51, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 51 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17hdd0017e9af2c72bdE", + "mono_item_kind": { + "MonoItemFn": { + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once", + "id": 4, + "body": { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 51 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 51, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 31, + "id": 9 + } + } + }, + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 51 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 51 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 51 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 51 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 51 + } + } + ], + "locals": [ + { + "ty": 16, + "span": 51, + "mutability": "Mut" + }, + { + "ty": 12, + "span": 51, + "mutability": "Not" + }, + { + "ty": 1, + "span": 51, + "mutability": "Not" + }, + { + "ty": 32, + "span": 51, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [], + "spread_arg": 2, + "span": 51 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ptr45drop_in_place$LT$$RF$niche_enum..SmallInt$GT$17h4ab8938c7162a39aE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::ptr::drop_in_place::<&SmallInt>", + "id": 5, + "body": { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 52, + "mutability": "Mut" + }, + { + "ty": 33, + "span": 52, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 52 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ptr73drop_in_place$LT$$RF$core..option..Option$LT$niche_enum..SmallInt$GT$$GT$17h04dd1263c8974f7dE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::ptr::drop_in_place::<&std::option::Option>", + "id": 5, + "body": { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 52, + "mutability": "Mut" + }, + { + "ty": 34, + "span": 52, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 52 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h74d9824e67ca959aE", + "mono_item_kind": { + "MonoItemFn": { + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>", + "id": 5, + "body": { + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 52 + } + } + ], + "locals": [ + { + "ty": 1, + "span": 52, + "mutability": "Mut" + }, + { + "ty": 30, + "span": 52, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [], + "spread_arg": null, + "span": 52 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN4core9panicking13assert_failed17h895aa49b7620f3dcE", + "mono_item_kind": { + "MonoItemFn": { + "name": "core::panicking::assert_failed::, std::option::Option>", + "id": 6, + "body": { + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 55 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 55 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 6, + "projection": [] + } + }, + 36 + ] + } + ] + }, + "span": 55 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 56 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 56 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 8, + "projection": [] + } + }, + 36 + ] + } + ] + }, + "span": 56 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 53, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 35, + "id": 10 + } + } + }, + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Move": { + "local": 4, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": null, + "unwind": "Continue" + } + }, + "span": 54 + } + } + ], + "locals": [ + { + "ty": 37, + "span": 57, + "mutability": "Mut" + }, + { + "ty": 38, + "span": 58, + "mutability": "Not" + }, + { + "ty": 25, + "span": 59, + "mutability": "Not" + }, + { + "ty": 25, + "span": 60, + "mutability": "Not" + }, + { + "ty": 39, + "span": 61, + "mutability": "Not" + }, + { + "ty": 36, + "span": 55, + "mutability": "Mut" + }, + { + "ty": 23, + "span": 55, + "mutability": "Not" + }, + { + "ty": 36, + "span": 56, + "mutability": "Mut" + }, + { + "ty": 23, + "span": 56, + "mutability": "Not" + } + ], + "arg_count": 4, + "var_debug_info": [ + { + "name": "kind", + "source_info": { + "span": 58, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "left", + "source_info": { + "span": 59, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "right", + "source_info": { + "span": 60, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": 3 + }, + { + "name": "args", + "source_info": { + "span": 61, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": 4 + } + ], + "spread_arg": null, + "span": 62 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17hb6ca5e293793a966E", + "mono_item_kind": { + "MonoItemFn": { + "name": "<() as std::process::Termination>::report", + "id": 7, + "body": { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 64, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 17, + "id": 11 + } + } + } + } + ] + }, + "span": 64 + } + ], + "terminator": { + "kind": "Return", + "span": 63 + } + } + ], + "locals": [ + { + "ty": 17, + "span": 65, + "mutability": "Mut" + }, + { + "ty": 1, + "span": 66, + "mutability": "Not" + } + ], + "arg_count": 1, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 66, + "scope": 0 + }, + "composite": null, + "value": { + "Const": { + "span": 32, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 1, + "id": 4 + } + } + }, + "argument_index": 1 + } + ], + "spread_arg": null, + "span": 67 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN57_$LT$niche_enum..SmallInt$u20$as$u20$core..fmt..Debug$GT$3fmt17h566d8f06f2c4da8aE", + "mono_item_kind": { + "MonoItemFn": { + "name": "::fmt", + "id": 15, + "body": { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Discriminant": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + ] + }, + "span": 145 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 1, + 3 + ], + [ + 2, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 145 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 145 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 145, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 5 + ] + ] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 41, + "id": 28 + } + } + } + } + ] + }, + "span": 145 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 146 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 145, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 6 + ] + ] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 41, + "id": 29 + } + } + } + } + ] + }, + "span": 145 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 4 + } + }, + "span": 146 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 145, + "user_ty": 0, + "const_": { + "kind": "ZeroSized", + "ty": 43, + "id": 14 + } + } + }, + "args": [ + { + "Copy": { + "local": 2, + "projection": [] + } + }, + { + "Move": { + "local": 3, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 145 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 147 + } + } + ], + "locals": [ + { + "ty": 22, + "span": 145, + "mutability": "Mut" + }, + { + "ty": 28, + "span": 145, + "mutability": "Not" + }, + { + "ty": 24, + "span": 145, + "mutability": "Not" + }, + { + "ty": 41, + "span": 145, + "mutability": "Mut" + }, + { + "ty": 6, + "span": 145, + "mutability": "Mut" + } + ], + "arg_count": 2, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 145, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "f", + "source_info": { + "span": 145, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + } + ], + "spread_arg": null, + "span": 145 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN61_$LT$niche_enum..SmallInt$u20$as$u20$core..cmp..PartialEq$GT$2eq17h4e1eb00ac6041601E", + "mono_item_kind": { + "MonoItemFn": { + "name": "::eq", + "id": 16, + "body": { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Discriminant": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + ] + }, + "span": 149 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Discriminant": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + ] + }, + "span": 149 + }, + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "BinaryOp": [ + "Eq", + { + "Copy": { + "local": 3, + "projection": [] + } + }, + { + "Copy": { + "local": 4, + "projection": [] + } + } + ] + } + ] + }, + "span": 149 + } + ], + "terminator": { + "kind": "Return", + "span": 148 + } + } + ], + "locals": [ + { + "ty": 44, + "span": 149, + "mutability": "Mut" + }, + { + "ty": 28, + "span": 149, + "mutability": "Not" + }, + { + "ty": 28, + "span": 149, + "mutability": "Not" + }, + { + "ty": 6, + "span": 149, + "mutability": "Not" + }, + { + "ty": 6, + "span": 149, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 149, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "other", + "source_info": { + "span": 149, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "__self_discr", + "source_info": { + "span": 149, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 3, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "__arg1_discr", + "source_info": { + "span": 149, + "scope": 2 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 149 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17h7e1a5369e8fa3c63E", + "mono_item_kind": { + "MonoItemFn": { + "name": " as std::fmt::Debug>::fmt", + "id": 8, + "body": { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Discriminant": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + ] + }, + "span": 68 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ], + [ + 1, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 68 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 68 + } + }, + { + "statements": [ + { + "kind": { + "StorageLive": 4 + }, + "span": 69 + }, + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 42 + ] + } + ] + } + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 69 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 4, + "projection": [] + } + ] + } + ] + }, + "span": 69 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 6, + "projection": [] + } + }, + 36 + ] + } + ] + }, + "span": 69 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 68, + "user_ty": 1, + "const_": { + "kind": "ZeroSized", + "ty": 40, + "id": 12 + } + } + }, + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "span": 68, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 0 + ] + ] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 41, + "id": 13 + } + } + }, + { + "Move": { + "local": 5, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 4, + "unwind": "Continue" + } + }, + "span": 68 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 68, + "user_ty": 0, + "const_": { + "kind": "ZeroSized", + "ty": 43, + "id": 14 + } + } + }, + "args": [ + { + "Move": { + "local": 2, + "projection": [] + } + }, + { + "Constant": { + "span": 68, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "provenance": { + "ptrs": [ + [ + 0, + 1 + ] + ] + }, + "align": 8, + "mutability": "Mut" + } + }, + "ty": 41, + "id": 15 + } + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 68 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 70 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 70 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 5 + } + }, + "span": 70 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 71 + } + } + ], + "locals": [ + { + "ty": 22, + "span": 68, + "mutability": "Mut" + }, + { + "ty": 25, + "span": 68, + "mutability": "Not" + }, + { + "ty": 24, + "span": 68, + "mutability": "Not" + }, + { + "ty": 6, + "span": 68, + "mutability": "Mut" + }, + { + "ty": 28, + "span": 69, + "mutability": "Not" + }, + { + "ty": 36, + "span": 69, + "mutability": "Mut" + }, + { + "ty": 27, + "span": 69, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 68, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "f", + "source_info": { + "span": 68, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "__self_0", + "source_info": { + "span": 69, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 4, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 68 + } + } + }, + "details": null + }, + { + "symbol_name": "_ZN70_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h38288ca148e95dcfE", + "mono_item_kind": { + "MonoItemFn": { + "name": " as std::cmp::PartialEq>::eq", + "id": 9, + "body": { + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Discriminant": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + ] + }, + "span": 73 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 3 + ], + [ + 1, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 72 + } + }, + { + "statements": [], + "terminator": { + "kind": "Unreachable", + "span": 73 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Discriminant": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + ] + }, + "span": 73 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 6 + ], + [ + 1, + 7 + ] + ], + "otherwise": 1 + } + } + }, + "span": 72 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 4, + "projection": [] + }, + { + "Discriminant": { + "local": 2, + "projection": [ + "Deref" + ] + } + } + ] + }, + "span": 73 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 4, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ], + [ + 1, + 5 + ] + ], + "otherwise": 1 + } + } + }, + "span": 72 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 74, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 1 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 44, + "id": 16 + } + } + } + } + ] + }, + "span": 74 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 8 + } + }, + "span": 74 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 75, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 44, + "id": 17 + } + } + } + } + ] + }, + "span": 75 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 8 + } + }, + "span": 75 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 0, + "projection": [] + }, + { + "Use": { + "Constant": { + "span": 76, + "user_ty": null, + "const_": { + "kind": { + "Allocated": { + "bytes": [ + 0 + ], + "provenance": { + "ptrs": [] + }, + "align": 1, + "mutability": "Mut" + } + }, + "ty": 44, + "id": 17 + } + } + } + } + ] + }, + "span": 76 + } + ], + "terminator": { + "kind": { + "Goto": { + "target": 8 + } + }, + "span": 76 + } + }, + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 1, + "projection": [ + "Deref", + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 42 + ] + } + ] + } + ] + } + ] + }, + "span": 78 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + "Deref", + { + "Downcast": 1 + }, + { + "Field": [ + 0, + 42 + ] + } + ] + } + ] + } + ] + }, + "span": 79 + } + ], + "terminator": { + "kind": { + "Call": { + "func": { + "Constant": { + "span": 77, + "user_ty": null, + "const_": { + "kind": "ZeroSized", + "ty": 45, + "id": 18 + } + } + }, + "args": [ + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Move": { + "local": 7, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "target": 8, + "unwind": "Continue" + } + }, + "span": 77 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 80 + } + } + ], + "locals": [ + { + "ty": 44, + "span": 81, + "mutability": "Mut" + }, + { + "ty": 25, + "span": 82, + "mutability": "Not" + }, + { + "ty": 25, + "span": 83, + "mutability": "Not" + }, + { + "ty": 6, + "span": 84, + "mutability": "Mut" + }, + { + "ty": 6, + "span": 85, + "mutability": "Mut" + }, + { + "ty": 6, + "span": 86, + "mutability": "Mut" + }, + { + "ty": 28, + "span": 78, + "mutability": "Not" + }, + { + "ty": 28, + "span": 79, + "mutability": "Not" + } + ], + "arg_count": 2, + "var_debug_info": [ + { + "name": "self", + "source_info": { + "span": 82, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 1, + "projection": [] + } + }, + "argument_index": 1 + }, + { + "name": "other", + "source_info": { + "span": 83, + "scope": 0 + }, + "composite": null, + "value": { + "Place": { + "local": 2, + "projection": [] + } + }, + "argument_index": 2 + }, + { + "name": "l", + "source_info": { + "span": 78, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 6, + "projection": [] + } + }, + "argument_index": null + }, + { + "name": "r", + "source_info": { + "span": 79, + "scope": 1 + }, + "composite": null, + "value": { + "Place": { + "local": 7, + "projection": [] + } + }, + "argument_index": null + } + ], + "spread_arg": null, + "span": 87 + } + } + }, + "details": null + } + ], + "types": [ + [ + 1, + { + "TupleType": { + "types": [], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 0 + } + } + } + } + ], + [ + 5, + { + "RefType": { + "pointee_type": 82, + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + }, + { + "num_bits": 64 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + }, + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + } + } + ], + [ + 6, + { + "PrimitiveType": { + "Int": "Isize" + } + } + ], + [ + 8, + { + "PtrType": { + "pointee_type": 83, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 0, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 9, + { + "PrimitiveType": { + "Uint": "U8" + } + } + ], + [ + 10, + { + "EnumType": { + "name": "std::result::Result", + "adt_def": 28, + "discriminants": [ + 0, + 1 + ], + "fields": [ + [ + 6 + ], + [ + 37 + ] + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I64", + "signed": true + } + }, + "valid_range": { + "start": 0, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 11, + { + "RefType": { + "pointee_type": 12, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 15, + { + "StructType": { + "name": "std::sys::pal::unix::process::process_common::ExitCode", + "adt_def": 73, + "fields": [ + 9 + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 255 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + } + } + ], + [ + 16, + { + "PrimitiveType": { + "Int": "I32" + } + } + ], + [ + 17, + { + "StructType": { + "name": "std::process::ExitCode", + "adt_def": 71, + "fields": [ + 15 + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 255 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + } + } + ], + [ + 18, + { + "RefType": { + "pointee_type": 15, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 22, + { + "EnumType": { + "name": "std::result::Result<(), std::fmt::Error>", + "adt_def": 28, + "discriminants": [ + 0, + 1 + ], + "fields": [ + [ + 1 + ], + [ + 61 + ] + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Multiple": { + "tag": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 1 + } + } + }, + "tag_encoding": "Direct", + "tag_field": 0, + "variants": [ + { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 8 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 1 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 8 + } + ] + } + }, + "variants": { + "Single": { + "index": 1 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 1 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + ] + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 1 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + } + } + ], + [ + 23, + { + "RefType": { + "pointee_type": 25, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 24, + { + "RefType": { + "pointee_type": 53, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 25, + { + "RefType": { + "pointee_type": 46, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 27, + { + "RefType": { + "pointee_type": 28, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 28, + { + "RefType": { + "pointee_type": 42, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 30, + { + "PtrType": { + "pointee_type": 12, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 0, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 32, + { + "RefType": { + "pointee_type": 12, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 33, + { + "PtrType": { + "pointee_type": 28, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 0, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 34, + { + "PtrType": { + "pointee_type": 25, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 0, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 36, + { + "RefType": { + "pointee_type": 62, + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + }, + { + "num_bits": 64 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + }, + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + } + } + ], + [ + 37, + "VoidType" + ], + [ + 38, + { + "EnumType": { + "name": "core::panicking::AssertKind", + "adt_def": 14, + "discriminants": [ + 0, + 1, + 2 + ], + "fields": [ + [], + [], + [] + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Multiple": { + "tag": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 2 + } + } + }, + "tag_encoding": "Direct", + "tag_field": 0, + "variants": [ + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 1 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 2 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + ] + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 2 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + } + } + ], + [ + 39, + { + "EnumType": { + "name": "std::option::Option>", + "adt_def": 11, + "discriminants": [ + 0, + 1 + ], + "fields": [ + [], + [ + 50 + ] + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Multiple": { + "tag": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 0 + } + } + }, + "tag_encoding": { + "Niche": { + "untagged_variant": 1, + "niche_variants": { + "start": 0, + "end": 0 + }, + "niche_start": 0 + } + }, + "tag_field": 0, + "variants": [ + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 0 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Single": { + "index": 1 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 8, + "size": { + "num_bits": 384 + } + } + ] + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 8, + "size": { + "num_bits": 384 + } + } + } + } + ], + [ + 41, + { + "RefType": { + "pointee_type": 52, + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + }, + { + "num_bits": 64 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + }, + { + "Initialized": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 18446744073709552000 + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + } + } + ], + [ + 42, + { + "EnumType": { + "name": "SmallInt", + "adt_def": 12, + "discriminants": [ + 1, + 2 + ], + "fields": [ + [], + [] + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Multiple": { + "tag": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 1, + "end": 2 + } + } + }, + "tag_encoding": "Direct", + "tag_field": 0, + "variants": [ + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 1 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + ] + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 1, + "end": 2 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + } + } + ], + [ + 44, + { + "PrimitiveType": "Bool" + } + ], + [ + 46, + { + "EnumType": { + "name": "std::option::Option", + "adt_def": 11, + "discriminants": [ + 0, + 1 + ], + "fields": [ + [], + [ + 42 + ] + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Multiple": { + "tag": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 2 + } + } + }, + "tag_encoding": { + "Niche": { + "untagged_variant": 1, + "niche_variants": { + "start": 0, + "end": 0 + }, + "niche_start": 0 + } + }, + "tag_field": 0, + "variants": [ + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 0 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Single": { + "index": 1 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 1, + "end": 2 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + ] + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 2 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + } + } + ], + [ + 50, + { + "StructType": { + "name": "std::fmt::Arguments<'_>", + "adt_def": 35, + "fields": [ + 64, + 65, + 66 + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + }, + { + "num_bits": 256 + }, + { + "num_bits": 128 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 8, + "size": { + "num_bits": 384 + } + } + } + } + ], + [ + 51, + { + "TupleType": { + "types": [ + 25, + 25 + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + }, + { + "num_bits": 64 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + }, + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + } + } + ], + [ + 52, + { + "PrimitiveType": "Str" + } + ], + [ + 53, + { + "StructType": { + "name": "std::fmt::Formatter<'_>", + "adt_def": 18, + "fields": [ + 54, + 55, + 56, + 57, + 57, + 58 + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 416 + }, + { + "num_bits": 384 + }, + { + "num_bits": 448 + }, + { + "num_bits": 0 + }, + { + "num_bits": 128 + }, + { + "num_bits": 256 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 8, + "size": { + "num_bits": 512 + } + } + } + } + ], + [ + 54, + { + "PrimitiveType": { + "Uint": "U32" + } + } + ], + [ + 55, + { + "PrimitiveType": "Char" + } + ], + [ + 56, + { + "EnumType": { + "name": "core::fmt::rt::Alignment", + "adt_def": 25, + "discriminants": [ + 0, + 1, + 2, + 3 + ], + "fields": [ + [], + [], + [], + [] + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Multiple": { + "tag": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 3 + } + } + }, + "tag_encoding": "Direct", + "tag_field": 0, + "variants": [ + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 1 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 2 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 3 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + ] + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Int": { + "length": "I8", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 3 + } + } + } + }, + "abi_align": 1, + "size": { + "num_bits": 8 + } + } + } + } + ], + [ + 57, + { + "EnumType": { + "name": "std::option::Option", + "adt_def": 11, + "discriminants": [ + 0, + 1 + ], + "fields": [ + [], + [ + 59 + ] + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Multiple": { + "tag": { + "Initialized": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 1 + } + } + }, + "tag_encoding": "Direct", + "tag_field": 0, + "variants": [ + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 64 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 64 + } + ] + } + }, + "variants": { + "Single": { + "index": 1 + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 1 + } + } + }, + { + "Union": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + ] + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 1 + } + } + }, + { + "Union": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + } + } + ], + [ + 58, + { + "RefType": { + "pointee_type": 60, + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + }, + { + "num_bits": 64 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + }, + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + } + } + ], + [ + 59, + { + "PrimitiveType": { + "Uint": "Usize" + } + } + ], + [ + 61, + { + "StructType": { + "name": "std::fmt::Error", + "adt_def": 31, + "fields": [], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 0 + } + } + } + } + ], + [ + 63, + { + "RefType": { + "pointee_type": 81, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 64, + { + "RefType": { + "pointee_type": 67, + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + }, + { + "num_bits": 64 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + }, + { + "Initialized": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 18446744073709552000 + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + } + } + ], + [ + 65, + { + "EnumType": { + "name": "std::option::Option<&[core::fmt::rt::Placeholder]>", + "adt_def": 11, + "discriminants": [ + 0, + 1 + ], + "fields": [ + [], + [ + 68 + ] + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Multiple": { + "tag": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 0 + } + } + }, + "tag_encoding": { + "Niche": { + "untagged_variant": 1, + "niche_variants": { + "start": 0, + "end": 0 + }, + "niche_start": 0 + } + }, + "tag_field": 0, + "variants": [ + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 0 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Single": { + "index": 1 + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + }, + { + "Initialized": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 18446744073709552000 + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + ] + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 0 + } + } + }, + { + "Union": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + } + } + ], + [ + 66, + { + "RefType": { + "pointee_type": 72, + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + }, + { + "num_bits": 64 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + }, + { + "Initialized": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 18446744073709552000 + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + } + } + ], + [ + 67, + { + "ArrayType": { + "elem_type": 41, + "size": null, + "layout": { + "fields": { + "Array": { + "stride": { + "num_bits": 128 + }, + "count": 0 + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": false + } + }, + "abi_align": 8, + "size": { + "num_bits": 0 + } + } + } + } + ], + [ + 68, + { + "RefType": { + "pointee_type": 69, + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + }, + { + "num_bits": 64 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + }, + { + "Initialized": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 18446744073709552000 + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + } + } + ], + [ + 69, + { + "ArrayType": { + "elem_type": 70, + "size": null, + "layout": { + "fields": { + "Array": { + "stride": { + "num_bits": 448 + }, + "count": 0 + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": false + } + }, + "abi_align": 8, + "size": { + "num_bits": 0 + } + } + } + } + ], + [ + 70, + { + "StructType": { + "name": "core::fmt::rt::Placeholder", + "adt_def": 39, + "fields": [ + 59, + 55, + 56, + 54, + 71, + 71 + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 256 + }, + { + "num_bits": 320 + }, + { + "num_bits": 384 + }, + { + "num_bits": 352 + }, + { + "num_bits": 0 + }, + { + "num_bits": 128 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 8, + "size": { + "num_bits": 448 + } + } + } + } + ], + [ + 71, + { + "EnumType": { + "name": "core::fmt::rt::Count", + "adt_def": 46, + "discriminants": [ + 0, + 1, + 2 + ], + "fields": [ + [ + 59 + ], + [ + 59 + ], + [] + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Multiple": { + "tag": { + "Initialized": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 2 + } + } + }, + "tag_encoding": "Direct", + "tag_field": 0, + "variants": [ + { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 64 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 2 + } + } + }, + { + "Union": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 64 + } + ] + } + }, + "variants": { + "Single": { + "index": 1 + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 2 + } + } + }, + { + "Union": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 2 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 64 + } + } + ] + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + }, + "valid_range": { + "start": 0, + "end": 2 + } + } + }, + { + "Union": { + "value": { + "Int": { + "length": "I64", + "signed": false + } + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + } + } + ], + [ + 72, + { + "ArrayType": { + "elem_type": 73, + "size": null, + "layout": { + "fields": { + "Array": { + "stride": { + "num_bits": 128 + }, + "count": 0 + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": false + } + }, + "abi_align": 8, + "size": { + "num_bits": 0 + } + } + } + } + ], + [ + 73, + { + "StructType": { + "name": "core::fmt::rt::Argument<'_>", + "adt_def": 49, + "fields": [ + 74 + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + } + } + ], + [ + 74, + { + "EnumType": { + "name": "core::fmt::rt::ArgumentType<'_>", + "adt_def": 51, + "discriminants": [ + 0, + 1 + ], + "fields": [ + [ + 75, + 76, + 77 + ], + [ + 59 + ] + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Multiple": { + "tag": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 0 + } + } + }, + "tag_encoding": { + "Niche": { + "untagged_variant": 0, + "niche_variants": { + "start": 1, + "end": 1 + }, + "niche_start": 0 + } + }, + "tag_field": 0, + "variants": [ + { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + }, + { + "num_bits": 64 + }, + { + "num_bits": 128 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "ScalarPair": [ + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + }, + { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + ] + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + }, + { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 64 + } + ] + } + }, + "variants": { + "Single": { + "index": 1 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + ] + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 8, + "size": { + "num_bits": 128 + } + } + } + } + ], + [ + 75, + { + "StructType": { + "name": "std::ptr::NonNull<()>", + "adt_def": 56, + "fields": [ + 78 + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 77, + { + "StructType": { + "name": "std::marker::PhantomData<&()>", + "adt_def": 58, + "fields": [], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 1, + "size": { + "num_bits": 0 + } + } + } + } + ], + [ + 78, + { + "PtrType": { + "pointee_type": 1, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 0, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 80, + { + "RefType": { + "pointee_type": 1, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 1, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ], + [ + 81, + { + "StructType": { + "name": "std::panic::Location<'_>", + "adt_def": 59, + "fields": [ + 41, + 54, + 54 + ], + "layout": { + "fields": { + "Arbitrary": { + "offsets": [ + { + "num_bits": 0 + }, + { + "num_bits": 128 + }, + { + "num_bits": 160 + } + ] + } + }, + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Aggregate": { + "sized": true + } + }, + "abi_align": 8, + "size": { + "num_bits": 192 + } + } + } + } + ], + [ + 83, + { + "PtrType": { + "pointee_type": 9, + "layout": { + "fields": "Primitive", + "variants": { + "Single": { + "index": 0 + } + }, + "abi": { + "Scalar": { + "Initialized": { + "value": { + "Pointer": 0 + }, + "valid_range": { + "start": 0, + "end": 18446744073709552000 + } + } + } + }, + "abi_align": 8, + "size": { + "num_bits": 64 + } + } + } + } + ] + ], + "spans": [ + [ + 0, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 194, + 17, + 194, + 36 + ] + ], + [ + 1, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 194, + 17, + 199, + 6 + ] + ], + [ + 2, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 195, + 9, + 195, + 93 + ] + ], + [ + 3, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 195, + 10, + 195, + 93 + ] + ], + [ + 4, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 201, + 2, + 201, + 2 + ] + ], + [ + 5, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 199, + 5, + 199, + 6 + ] + ], + [ + 6, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 194, + 12, + 194, + 13 + ] + ], + [ + 7, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 199, + 6, + 199, + 7 + ] + ], + [ + 9, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 189, + 5, + 189, + 9 + ] + ], + [ + 10, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 190, + 5, + 190, + 9 + ] + ], + [ + 11, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 191, + 5, + 191, + 9 + ] + ], + [ + 12, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 192, + 5, + 192, + 12 + ] + ], + [ + 13, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 188, + 1, + 201, + 2 + ] + ], + [ + 14, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 195, + 18, + 195, + 69 + ] + ], + [ + 15, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 195, + 18, + 195, + 75 + ] + ], + [ + 16, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 195, + 18, + 195, + 84 + ] + ], + [ + 17, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 195, + 70, + 195, + 74 + ] + ], + [ + 18, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 195, + 76, + 195, + 82 + ] + ], + [ + 19, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 195, + 74, + 195, + 75 + ] + ], + [ + 20, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 195, + 93, + 195, + 93 + ] + ], + [ + 21, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 195, + 83, + 195, + 84 + ] + ], + [ + 22, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/process.rs", + 2053, + 9, + 2053, + 15 + ] + ], + [ + 23, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/pal/unix/process/process_common.rs", + 636, + 9, + 636, + 15 + ] + ], + [ + 24, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/pal/unix/process/process_common.rs", + 636, + 9, + 636, + 22 + ] + ], + [ + 25, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/pal/unix/process/process_common.rs", + 636, + 21, + 636, + 22 + ] + ], + [ + 26, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/process.rs", + 2053, + 23, + 2053, + 24 + ] + ], + [ + 27, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs", + 195, + 92, + 195, + 93 + ] + ], + [ + 29, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/process.rs", + 2052, + 19, + 2052, + 23 + ] + ], + [ + 30, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/pal/unix/process/process_common.rs", + 635, + 19, + 635, + 24 + ] + ], + [ + 31, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs", + 154, + 18, + 154, + 19 + ] + ], + [ + 32, + [ + "no-location", + 0, + 0, + 0, + 0 + ] + ], + [ + 33, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs", + 154, + 18, + 154, + 21 + ] + ], + [ + 34, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/hint.rs", + 389, + 5, + 389, + 33 + ] + ], + [ + 35, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/hint.rs", + 389, + 5, + 389, + 40 + ] + ], + [ + 36, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs", + 160, + 2, + 160, + 2 + ] + ], + [ + 38, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs", + 150, + 43, + 150, + 44 + ] + ], + [ + 40, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs", + 154, + 9, + 154, + 15 + ] + ], + [ + 41, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/hint.rs", + 388, + 27, + 388, + 32 + ] + ], + [ + 42, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs", + 150, + 1, + 160, + 2 + ] + ], + [ + 43, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs", + 2393, + 62, + 2393, + 70 + ] + ], + [ + 44, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs", + 2393, + 62, + 2393, + 82 + ] + ], + [ + 45, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs", + 2393, + 71, + 2393, + 78 + ] + ], + [ + 46, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs", + 2393, + 84, + 2393, + 84 + ] + ], + [ + 48, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs", + 2393, + 20, + 2393, + 25 + ] + ], + [ + 49, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs", + 2393, + 27, + 2393, + 28 + ] + ], + [ + 50, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs", + 2393, + 13, + 2393, + 84 + ] + ], + [ + 51, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs", + 250, + 5, + 250, + 71 + ] + ], + [ + 52, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs", + 521, + 1, + 521, + 56 + ] + ], + [ + 53, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panicking.rs", + 373, + 5, + 373, + 24 + ] + ], + [ + 54, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panicking.rs", + 373, + 5, + 373, + 51 + ] + ], + [ + 55, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panicking.rs", + 373, + 31, + 373, + 36 + ] + ], + [ + 56, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panicking.rs", + 373, + 38, + 373, + 44 + ] + ], + [ + 58, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panicking.rs", + 364, + 5, + 364, + 9 + ] + ], + [ + 59, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panicking.rs", + 365, + 5, + 365, + 9 + ] + ], + [ + 60, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panicking.rs", + 366, + 5, + 366, + 10 + ] + ], + [ + 61, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panicking.rs", + 367, + 5, + 367, + 9 + ] + ], + [ + 62, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panicking.rs", + 363, + 1, + 374, + 2 + ] + ], + [ + 63, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/process.rs", + 2424, + 6, + 2424, + 6 + ] + ], + [ + 64, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/process.rs", + 2423, + 9, + 2423, + 26 + ] + ], + [ + 66, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/process.rs", + 2422, + 15, + 2422, + 19 + ] + ], + [ + 67, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/process.rs", + 2422, + 5, + 2424, + 6 + ] + ], + [ + 68, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 567, + 20, + 567, + 25 + ] + ], + [ + 69, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 580, + 56, + 580, + 57 + ] + ], + [ + 70, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 567, + 24, + 567, + 25 + ] + ], + [ + 71, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 567, + 25, + 567, + 25 + ] + ], + [ + 72, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 2183, + 9, + 2183, + 28 + ] + ], + [ + 73, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 2183, + 15, + 2183, + 28 + ] + ], + [ + 74, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 2187, + 29, + 2187, + 33 + ] + ], + [ + 75, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 2186, + 32, + 2186, + 37 + ] + ], + [ + 76, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 2185, + 32, + 2185, + 37 + ] + ], + [ + 77, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 2184, + 35, + 2184, + 43 + ] + ], + [ + 78, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 2184, + 19, + 2184, + 20 + ] + ], + [ + 79, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 2184, + 28, + 2184, + 29 + ] + ], + [ + 80, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 2189, + 6, + 2189, + 6 + ] + ], + [ + 82, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 2180, + 11, + 2180, + 16 + ] + ], + [ + 83, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 2180, + 18, + 2180, + 23 + ] + ], + [ + 87, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs", + 2180, + 5, + 2189, + 6 + ] + ], + [ + 88, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 8, + 5, + 8, + 12 + ] + ], + [ + 89, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 11, + 14, + 11, + 18 + ] + ], + [ + 90, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 10, + 32, + 10, + 33 + ] + ], + [ + 91, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 10, + 19, + 10, + 32 + ] + ], + [ + 92, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 10, + 14, + 10, + 33 + ] + ], + [ + 93, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 9, + 32, + 9, + 33 + ] + ], + [ + 94, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 9, + 19, + 9, + 32 + ] + ], + [ + 95, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 9, + 14, + 9, + 33 + ] + ], + [ + 96, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 13, + 2, + 13, + 2 + ] + ], + [ + 98, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 7, + 8, + 7, + 9 + ] + ], + [ + 99, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 7, + 1, + 13, + 2 + ] + ], + [ + 100, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 16, + 16, + 16, + 19 + ] + ], + [ + 101, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 16, + 20, + 16, + 21 + ] + ], + [ + 102, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 16, + 16, + 16, + 22 + ] + ], + [ + 103, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 46, + 21, + 46, + 46 + ] + ], + [ + 104, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 44, + 16, + 44, + 22 + ] + ], + [ + 105, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 44, + 24, + 44, + 31 + ] + ], + [ + 106, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 44, + 15, + 44, + 32 + ] + ], + [ + 107, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 45, + 14, + 45, + 22 + ] + ], + [ + 108, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 45, + 24, + 45, + 33 + ] + ], + [ + 109, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 17, + 16, + 17, + 19 + ] + ], + [ + 110, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 17, + 20, + 17, + 21 + ] + ], + [ + 111, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 17, + 16, + 17, + 22 + ] + ], + [ + 112, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 51, + 21, + 51, + 53 + ] + ], + [ + 113, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 51, + 21, + 51, + 114 + ] + ], + [ + 114, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 47, + 32, + 47, + 65 + ] + ], + [ + 115, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 51, + 85, + 51, + 113 + ] + ], + [ + 116, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 46, + 21, + 46, + 46 + ] + ], + [ + 117, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 44, + 16, + 44, + 22 + ] + ], + [ + 118, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 44, + 24, + 44, + 31 + ] + ], + [ + 119, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 44, + 15, + 44, + 32 + ] + ], + [ + 120, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 45, + 14, + 45, + 22 + ] + ], + [ + 121, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 45, + 24, + 45, + 33 + ] + ], + [ + 122, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 18, + 16, + 18, + 19 + ] + ], + [ + 123, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 18, + 20, + 18, + 21 + ] + ], + [ + 124, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 18, + 16, + 18, + 22 + ] + ], + [ + 125, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 51, + 21, + 51, + 53 + ] + ], + [ + 126, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 51, + 21, + 51, + 114 + ] + ], + [ + 127, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 47, + 32, + 47, + 65 + ] + ], + [ + 128, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 51, + 85, + 51, + 113 + ] + ], + [ + 129, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 46, + 21, + 46, + 46 + ] + ], + [ + 130, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 44, + 16, + 44, + 22 + ] + ], + [ + 131, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 44, + 24, + 44, + 31 + ] + ], + [ + 132, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 44, + 15, + 44, + 32 + ] + ], + [ + 133, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 45, + 14, + 45, + 22 + ] + ], + [ + 134, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 45, + 24, + 45, + 33 + ] + ], + [ + 135, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 19, + 2, + 19, + 2 + ] + ], + [ + 136, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 51, + 21, + 51, + 53 + ] + ], + [ + 137, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 51, + 21, + 51, + 114 + ] + ], + [ + 138, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 47, + 32, + 47, + 65 + ] + ], + [ + 139, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 51, + 85, + 51, + 113 + ] + ], + [ + 141, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 47, + 25, + 47, + 29 + ] + ], + [ + 142, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 47, + 25, + 47, + 29 + ] + ], + [ + 143, + [ + "/home/ttoth/.rustup/toolchains/nightly-2024-11-29-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + 47, + 25, + 47, + 29 + ] + ], + [ + 144, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 15, + 1, + 19, + 2 + ] + ], + [ + 145, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 1, + 10, + 1, + 15 + ] + ], + [ + 146, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 1, + 14, + 1, + 15 + ] + ], + [ + 147, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 1, + 15, + 1, + 15 + ] + ], + [ + 148, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 1, + 26, + 1, + 26 + ] + ], + [ + 149, + [ + "../mir-semantics/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.rs", + 1, + 17, + 1, + 26 + ] + ] + ], + "debug": null, + "machine": { + "endian": "Little", + "pointer_width": { + "num_bits": 64 + } + } +} diff --git a/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.state b/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.state new file mode 100644 index 000000000..22ce9e213 --- /dev/null +++ b/kmir/src/tests/integration/data/exec-smir/niche-enum/niche-enum.state @@ -0,0 +1,159 @@ + + + #EndProgram ~> .K + + + noReturn + + + ty ( -1 ) + + + + ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 100 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 47 ) , id: mirConstId ( 19 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 101 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 20 ) ) ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 102 ) ) ) ) + ListItem ( basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 3 ) , projection: .ProjectionElems ) ) ) , span: span ( 104 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 105 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... offset: 0 , allocId: allocId ( 2 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 22 ) ) ) ) ) ) , span: span ( 105 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindTuple , operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 106 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 107 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 108 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 103 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 48 ) , id: mirConstId ( 21 ) ) ) ) , args: operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 7 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 103 ) ) ) ) + ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 4 ) ) .Branches , otherwise: basicBlockIdx ( 3 ) ) ) , span: span ( 103 ) ) ) ) + ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 109 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 47 ) , id: mirConstId ( 19 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 110 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 23 ) ) ) ) .Operands , destination: place (... local: local ( 13 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 5 ) ) , unwind: unwindActionContinue ) , span: span ( 111 ) ) ) ) + ListItem ( basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 14 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 114 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 11 ) , variantIdx ( 0 ) , genericArgKindType ( ty ( 50 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 115 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 112 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 49 ) , id: mirConstId ( 24 ) ) ) ) , args: operandMove ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 9 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 113 ) ) ) ) + ListItem ( basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 12 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 13 ) , projection: .ProjectionElems ) ) ) , span: span ( 117 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 14 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 118 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... offset: 0 , allocId: allocId ( 3 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 25 ) ) ) ) ) ) , span: span ( 118 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindTuple , operandMove ( place (... local: local ( 12 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 14 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 119 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 15 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 11 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 120 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 16 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 11 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 121 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 116 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 48 ) , id: mirConstId ( 21 ) ) ) ) , args: operandCopy ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 16 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 17 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 6 ) ) , unwind: unwindActionContinue ) , span: span ( 116 ) ) ) ) + ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 17 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 8 ) ) .Branches , otherwise: basicBlockIdx ( 7 ) ) ) , span: span ( 116 ) ) ) ) + ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 122 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 47 ) , id: mirConstId ( 19 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 123 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x02" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 26 ) ) ) ) .Operands , destination: place (... local: local ( 23 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 9 ) ) , unwind: unwindActionContinue ) , span: span ( 124 ) ) ) ) + ListItem ( basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 18 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 14 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 127 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 20 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 11 ) , variantIdx ( 0 ) , genericArgKindType ( ty ( 50 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 128 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 125 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 49 ) , id: mirConstId ( 24 ) ) ) ) , args: operandMove ( place (... local: local ( 18 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 16 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 20 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 19 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 126 ) ) ) ) + ListItem ( basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 22 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 23 ) , projection: .ProjectionElems ) ) ) , span: span ( 130 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 24 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 131 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... offset: 0 , allocId: allocId ( 4 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 27 ) ) ) ) ) ) , span: span ( 131 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 21 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindTuple , operandMove ( place (... local: local ( 22 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 24 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 132 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 25 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 21 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 133 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 26 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 21 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 134 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 129 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 48 ) , id: mirConstId ( 21 ) ) ) ) , args: operandCopy ( place (... local: local ( 25 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 26 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 27 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 10 ) ) , unwind: unwindActionContinue ) , span: span ( 129 ) ) ) ) + ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 27 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 12 ) ) .Branches , otherwise: basicBlockIdx ( 11 ) ) ) , span: span ( 129 ) ) ) ) + ListItem ( basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 135 ) ) ) ) + ListItem ( basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 28 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 14 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 138 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 30 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 11 ) , variantIdx ( 0 ) , genericArgKindType ( ty ( 50 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 139 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 136 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 49 ) , id: mirConstId ( 24 ) ) ) ) , args: operandMove ( place (... local: local ( 28 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 25 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 26 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 30 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 29 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 137 ) ) ) ) + + + ty ( -1 ) + + + place (... local: local ( 0 ) , projection: .ProjectionElems ) + + + noBasicBlockIdx + + + unwindActionContinue + + + ListItem ( newLocal ( ty ( 1 ) , mutabilityMut ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Reference ( 0 , place (... local: local ( 3 ) , projection: .ProjectionElems ) , mutabilityNot , noMetadata ) ) + ListItem ( AllocRef ( allocId ( 2 ) , .ProjectionElems , noMetadata ) ) ) , ty ( 51 ) , mutabilityMut ) ) + ListItem ( typedValue ( Moved , ty ( 25 ) , mutabilityMut ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , .List ) , ty ( 46 ) , mutabilityNot ) ) + ListItem ( typedValue ( Moved , ty ( 25 ) , mutabilityMut ) ) + ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 3 ) , projection: .ProjectionElems ) , mutabilityNot , noMetadata ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( AllocRef ( allocId ( 2 ) , .ProjectionElems , noMetadata ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( Moved , ty ( 44 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 38 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 37 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 39 ) , mutabilityMut ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Reference ( 0 , place (... local: local ( 13 ) , projection: .ProjectionElems ) , mutabilityNot , noMetadata ) ) + ListItem ( AllocRef ( allocId ( 3 ) , .ProjectionElems , noMetadata ) ) ) , ty ( 51 ) , mutabilityMut ) ) + ListItem ( typedValue ( Moved , ty ( 25 ) , mutabilityMut ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Aggregate ( variantIdx ( 0 ) , .List ) ) ) , ty ( 46 ) , mutabilityNot ) ) + ListItem ( typedValue ( Moved , ty ( 25 ) , mutabilityMut ) ) + ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 13 ) , projection: .ProjectionElems ) , mutabilityNot , noMetadata ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( AllocRef ( allocId ( 3 ) , .ProjectionElems , noMetadata ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( Moved , ty ( 44 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 38 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 37 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 39 ) , mutabilityMut ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 0 ) , ListItem ( Reference ( 0 , place (... local: local ( 23 ) , projection: .ProjectionElems ) , mutabilityNot , noMetadata ) ) + ListItem ( AllocRef ( allocId ( 4 ) , .ProjectionElems , noMetadata ) ) ) , ty ( 51 ) , mutabilityMut ) ) + ListItem ( typedValue ( Moved , ty ( 25 ) , mutabilityMut ) ) + ListItem ( typedValue ( Aggregate ( variantIdx ( 1 ) , ListItem ( Aggregate ( variantIdx ( 1 ) , .List ) ) ) , ty ( 46 ) , mutabilityNot ) ) + ListItem ( typedValue ( Moved , ty ( 25 ) , mutabilityMut ) ) + ListItem ( typedValue ( Reference ( 0 , place (... local: local ( 23 ) , projection: .ProjectionElems ) , mutabilityNot , noMetadata ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( AllocRef ( allocId ( 4 ) , .ProjectionElems , noMetadata ) , ty ( 25 ) , mutabilityNot ) ) + ListItem ( typedValue ( Moved , ty ( 44 ) , mutabilityMut ) ) + ListItem ( newLocal ( ty ( 38 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 37 ) , mutabilityNot ) ) + ListItem ( newLocal ( ty ( 39 ) , mutabilityMut ) ) + + + + ListItem ( StackFrame ( ty ( -1 ) , place (... local: local ( -1 ) , projection: .ProjectionElems ) , noBasicBlockIdx , unwindActionUnreachable , .List ) ) + + + allocId ( 2 ) |-> Aggregate ( variantIdx ( 0 ) , .List ) + allocId ( 3 ) |-> Aggregate ( variantIdx ( 1 ) , ListItem ( Aggregate ( variantIdx ( 0 ) , .List ) ) ) + allocId ( 4 ) |-> Aggregate ( variantIdx ( 1 ) , ListItem ( Aggregate ( variantIdx ( 1 ) , .List ) ) ) + allocId ( 7 ) |-> StringVal ( "Two" ) + allocId ( 8 ) |-> StringVal ( "One" ) + allocId ( 9 ) |-> StringVal ( "Some" ) + allocId ( 10 ) |-> StringVal ( "None" ) + + + ty ( 20 ) |-> IntrinsicFunction ( symbol ( "black_box" ) ) + ty ( 45 ) |-> monoItemFn (... name: symbol ( "::eq" ) , id: defId ( 16 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueDiscriminant ( place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) ) ) , span: span ( 149 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueDiscriminant ( place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) ) ) , span: span ( 149 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueBinaryOp ( binOpEq , operandCopy ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , operandCopy ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) ) ) , span: span ( 149 ) ) .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 148 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 44 ) , span: span ( 149 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 149 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 149 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 6 ) , span: span ( 149 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 6 ) , span: span ( 149 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 149 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "other" ) , sourceInfo: sourceInfo (... span: span ( 149 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "__self_discr" ) , sourceInfo: sourceInfo (... span: span ( 149 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "__arg1_discr" ) , sourceInfo: sourceInfo (... span: span ( 149 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 149 ) ) ) ) + ty ( 47 ) |-> monoItemFn (... name: symbol ( "foo" ) , id: defId ( 10 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandCopy ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 1 , basicBlockIdx ( 3 ) ) branch ( 2 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 88 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 11 ) , variantIdx ( 0 ) , genericArgKindType ( ty ( 42 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 89 ) ) .Statements , terminator: terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 4 ) ) , span: span ( 89 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 12 ) , variantIdx ( 1 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 91 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 11 ) , variantIdx ( 1 ) , genericArgKindType ( ty ( 42 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 92 ) ) .Statements , terminator: terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 4 ) ) , span: span ( 90 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 12 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 94 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 11 ) , variantIdx ( 1 ) , genericArgKindType ( ty ( 42 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 95 ) ) .Statements , terminator: terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 4 ) ) , span: span ( 93 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 96 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 46 ) , span: span ( 97 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 9 ) , span: span ( 98 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 42 ) , span: span ( 94 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 42 ) , span: span ( 91 ) , mut: mutabilityMut ) .LocalDecls , argCount: 1 , varDebugInfo: varDebugInfo (... name: symbol ( "x" ) , sourceInfo: sourceInfo (... span: span ( 98 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 99 ) ) ) ) + ty ( 48 ) |-> monoItemFn (... name: symbol ( " as std::cmp::PartialEq>::eq" ) , id: defId ( 9 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueDiscriminant ( place (... local: local ( 1 ) , projection: projectionElemDeref .ProjectionElems ) ) ) , span: span ( 73 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 3 ) ) branch ( 1 , basicBlockIdx ( 2 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 72 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindUnreachable , span: span ( 73 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 3 ) , projection: .ProjectionElems ) , rvalue: rvalueDiscriminant ( place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) ) ) , span: span ( 73 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 6 ) ) branch ( 1 , basicBlockIdx ( 7 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 72 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueDiscriminant ( place (... local: local ( 2 ) , projection: projectionElemDeref .ProjectionElems ) ) ) , span: span ( 73 ) ) .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 4 ) ) branch ( 1 , basicBlockIdx ( 5 ) ) .Branches , otherwise: basicBlockIdx ( 1 ) ) ) , span: span ( 72 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 74 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 44 ) , id: mirConstId ( 16 ) ) ) ) ) ) , span: span ( 74 ) ) .Statements , terminator: terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 8 ) ) , span: span ( 74 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 75 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 44 ) , id: mirConstId ( 17 ) ) ) ) ) ) , span: span ( 75 ) ) .Statements , terminator: terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 8 ) ) , span: span ( 75 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 0 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 76 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 44 ) , id: mirConstId ( 17 ) ) ) ) ) ) , span: span ( 76 ) ) .Statements , terminator: terminator (... kind: terminatorKindGoto (... target: basicBlockIdx ( 8 ) ) , span: span ( 76 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 1 ) , projection: projectionElemDeref projectionElemDowncast ( variantIdx ( 1 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 42 ) ) .ProjectionElems ) ) ) , span: span ( 78 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: projectionElemDeref projectionElemDowncast ( variantIdx ( 1 ) ) projectionElemField ( fieldIdx ( 0 ) , ty ( 42 ) ) .ProjectionElems ) ) ) , span: span ( 79 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 77 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 45 ) , id: mirConstId ( 18 ) ) ) ) , args: operandMove ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 8 ) ) , unwind: unwindActionContinue ) , span: span ( 77 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 80 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 44 ) , span: span ( 81 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 82 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 83 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 6 ) , span: span ( 84 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 6 ) , span: span ( 85 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 6 ) , span: span ( 86 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 28 ) , span: span ( 78 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 28 ) , span: span ( 79 ) , mut: mutabilityNot ) .LocalDecls , argCount: 2 , varDebugInfo: varDebugInfo (... name: symbol ( "self" ) , sourceInfo: sourceInfo (... span: span ( 82 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "other" ) , sourceInfo: sourceInfo (... span: span ( 83 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "l" ) , sourceInfo: sourceInfo (... span: span ( 78 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "r" ) , sourceInfo: sourceInfo (... span: span ( 79 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 87 ) ) ) ) + ty ( 49 ) |-> monoItemFn (... name: symbol ( "core::panicking::assert_failed::, std::option::Option>" ) , id: defId ( 6 ) , body: someBody ( body (... blocks: basicBlock (... statements: statement (... kind: statementKindStorageLive ( local ( 5 ) ) , span: span ( 55 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 2 ) , projection: .ProjectionElems ) ) ) , span: span ( 55 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindPointerCoercion ( pointerCoercionUnsize ) , operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , ty ( 36 ) ) ) , span: span ( 55 ) ) statement (... kind: statementKindStorageLive ( local ( 7 ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 3 ) , projection: .ProjectionElems ) ) ) , span: span ( 56 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 7 ) , projection: .ProjectionElems ) , rvalue: rvalueCast ( castKindPointerCoercion ( pointerCoercionUnsize ) , operandCopy ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) , ty ( 36 ) ) ) , span: span ( 56 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 53 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 35 ) , id: mirConstId ( 10 ) ) ) ) , args: operandMove ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 0 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 54 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 37 ) , span: span ( 57 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 38 ) , span: span ( 58 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 59 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 60 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 39 ) , span: span ( 61 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 36 ) , span: span ( 55 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 23 ) , span: span ( 55 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 36 ) , span: span ( 56 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 23 ) , span: span ( 56 ) , mut: mutabilityNot ) .LocalDecls , argCount: 4 , varDebugInfo: varDebugInfo (... name: symbol ( "kind" ) , sourceInfo: sourceInfo (... span: span ( 58 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 1 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 1 ) ) varDebugInfo (... name: symbol ( "left" ) , sourceInfo: sourceInfo (... span: span ( 59 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 2 ) ) varDebugInfo (... name: symbol ( "right" ) , sourceInfo: sourceInfo (... span: span ( 60 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 3 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 3 ) ) varDebugInfo (... name: symbol ( "args" ) , sourceInfo: sourceInfo (... span: span ( 61 ) , scope: sourceScope ( 0 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) , argumentIndex: someInt ( 4 ) ) .VarDebugInfos , spreadArg: noLocal , span: span ( 62 ) ) ) ) + ty ( -1 ) |-> monoItemFn (... name: symbol ( "main" ) , id: defId ( 13 ) , body: someBody ( body (... blocks: basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 100 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 47 ) , id: mirConstId ( 19 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 101 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 20 ) ) ) ) .Operands , destination: place (... local: local ( 3 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 1 ) ) , unwind: unwindActionContinue ) , span: span ( 102 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 2 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 3 ) , projection: .ProjectionElems ) ) ) , span: span ( 104 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 4 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 105 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... offset: 0 , allocId: allocId ( 2 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 22 ) ) ) ) ) ) , span: span ( 105 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 1 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindTuple , operandMove ( place (... local: local ( 2 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 4 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 106 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 5 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 107 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 6 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 1 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 108 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 103 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 48 ) , id: mirConstId ( 21 ) ) ) ) , args: operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 7 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 2 ) ) , unwind: unwindActionContinue ) , span: span ( 103 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 7 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 4 ) ) .Branches , otherwise: basicBlockIdx ( 3 ) ) ) , span: span ( 103 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 109 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 47 ) , id: mirConstId ( 19 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 110 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x01" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 23 ) ) ) ) .Operands , destination: place (... local: local ( 13 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 5 ) ) , unwind: unwindActionContinue ) , span: span ( 111 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 8 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 14 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 114 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 10 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 11 ) , variantIdx ( 0 ) , genericArgKindType ( ty ( 50 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 115 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 112 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 49 ) , id: mirConstId ( 24 ) ) ) ) , args: operandMove ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 10 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 9 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 113 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 12 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 13 ) , projection: .ProjectionElems ) ) ) , span: span ( 117 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 14 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 118 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... offset: 0 , allocId: allocId ( 3 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 25 ) ) ) ) ) ) , span: span ( 118 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 11 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindTuple , operandMove ( place (... local: local ( 12 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 14 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 119 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 15 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 11 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 120 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 16 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 11 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 121 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 116 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 48 ) , id: mirConstId ( 21 ) ) ) ) , args: operandCopy ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 16 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 17 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 6 ) ) , unwind: unwindActionContinue ) , span: span ( 116 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 17 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 8 ) ) .Branches , otherwise: basicBlockIdx ( 7 ) ) ) , span: span ( 116 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 122 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 47 ) , id: mirConstId ( 19 ) ) ) ) , args: operandConstant ( constOperand (... span: span ( 123 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x02" , provenance: provenanceMap (... ptrs: .ProvenanceMapEntries ) , align: align ( 1 ) , mutability: mutabilityMut ) ) , ty: ty ( 9 ) , id: mirConstId ( 26 ) ) ) ) .Operands , destination: place (... local: local ( 23 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 9 ) ) , unwind: unwindActionContinue ) , span: span ( 124 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 18 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 14 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 127 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 20 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 11 ) , variantIdx ( 0 ) , genericArgKindType ( ty ( 50 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 128 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 125 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 49 ) , id: mirConstId ( 24 ) ) ) ) , args: operandMove ( place (... local: local ( 18 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 16 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 20 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 19 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 126 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 22 ) , projection: .ProjectionElems ) , rvalue: rvalueRef ( region (... kind: regionKindReErased ) , borrowKindShared , place (... local: local ( 23 ) , projection: .ProjectionElems ) ) ) , span: span ( 130 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 24 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandConstant ( constOperand (... span: span ( 131 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindAllocated ( allocation (... bytes: b"\x00\x00\x00\x00\x00\x00\x00\x00" , provenance: provenanceMap (... ptrs: provenanceMapEntry (... offset: 0 , allocId: allocId ( 4 ) ) .ProvenanceMapEntries ) , align: align ( 8 ) , mutability: mutabilityMut ) ) , ty: ty ( 25 ) , id: mirConstId ( 27 ) ) ) ) ) ) , span: span ( 131 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 21 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindTuple , operandMove ( place (... local: local ( 22 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 24 ) , projection: .ProjectionElems ) ) .Operands ) ) , span: span ( 132 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 25 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 21 ) , projection: projectionElemField ( fieldIdx ( 0 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 133 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 26 ) , projection: .ProjectionElems ) , rvalue: rvalueUse ( operandCopy ( place (... local: local ( 21 ) , projection: projectionElemField ( fieldIdx ( 1 ) , ty ( 25 ) ) .ProjectionElems ) ) ) ) , span: span ( 134 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 129 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 48 ) , id: mirConstId ( 21 ) ) ) ) , args: operandCopy ( place (... local: local ( 25 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 26 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 27 ) , projection: .ProjectionElems ) , target: someBasicBlockIdx ( basicBlockIdx ( 10 ) ) , unwind: unwindActionContinue ) , span: span ( 129 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindSwitchInt (... discr: operandMove ( place (... local: local ( 27 ) , projection: .ProjectionElems ) ) , targets: switchTargets (... branches: branch ( 0 , basicBlockIdx ( 12 ) ) .Branches , otherwise: basicBlockIdx ( 11 ) ) ) , span: span ( 129 ) ) ) basicBlock (... statements: .Statements , terminator: terminator (... kind: terminatorKindReturn , span: span ( 135 ) ) ) basicBlock (... statements: statement (... kind: statementKindAssign (... place: place (... local: local ( 28 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 14 ) , variantIdx ( 0 ) , .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 138 ) ) statement (... kind: statementKindAssign (... place: place (... local: local ( 30 ) , projection: .ProjectionElems ) , rvalue: rvalueAggregate ( aggregateKindAdt ( adtDef ( 11 ) , variantIdx ( 0 ) , genericArgKindType ( ty ( 50 ) ) .GenericArgs , noUserTypeAnnotationIndex , noFieldIdx ) , .Operands ) ) , span: span ( 139 ) ) .Statements , terminator: terminator (... kind: terminatorKindCall (... func: operandConstant ( constOperand (... span: span ( 136 ) , userTy: noUserTypeAnnotationIndex , const: mirConst (... kind: constantKindZeroSized , ty: ty ( 49 ) , id: mirConstId ( 24 ) ) ) ) , args: operandMove ( place (... local: local ( 28 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 25 ) , projection: .ProjectionElems ) ) operandCopy ( place (... local: local ( 26 ) , projection: .ProjectionElems ) ) operandMove ( place (... local: local ( 30 ) , projection: .ProjectionElems ) ) .Operands , destination: place (... local: local ( 29 ) , projection: .ProjectionElems ) , target: noBasicBlockIdx , unwind: unwindActionContinue ) , span: span ( 137 ) ) ) .BasicBlocks , locals: localDecl (... ty: ty ( 1 ) , span: span ( 140 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 51 ) , span: span ( 106 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 104 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 46 ) , span: span ( 102 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 105 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 107 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 108 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 44 ) , span: span ( 103 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 38 ) , span: span ( 141 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 37 ) , span: span ( 113 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 39 ) , span: span ( 115 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 51 ) , span: span ( 119 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 117 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 46 ) , span: span ( 111 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 118 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 120 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 121 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 44 ) , span: span ( 116 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 38 ) , span: span ( 142 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 37 ) , span: span ( 126 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 39 ) , span: span ( 128 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 51 ) , span: span ( 132 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 130 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 46 ) , span: span ( 124 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 131 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 25 ) , span: span ( 133 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 25 ) , span: span ( 134 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 44 ) , span: span ( 129 ) , mut: mutabilityMut ) localDecl (... ty: ty ( 38 ) , span: span ( 143 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 37 ) , span: span ( 137 ) , mut: mutabilityNot ) localDecl (... ty: ty ( 39 ) , span: span ( 139 ) , mut: mutabilityMut ) .LocalDecls , argCount: 0 , varDebugInfo: varDebugInfo (... name: symbol ( "left_val" ) , sourceInfo: sourceInfo (... span: span ( 107 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 5 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "right_val" ) , sourceInfo: sourceInfo (... span: span ( 108 ) , scope: sourceScope ( 1 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 6 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "kind" ) , sourceInfo: sourceInfo (... span: span ( 141 ) , scope: sourceScope ( 2 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 8 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "left_val" ) , sourceInfo: sourceInfo (... span: span ( 120 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 15 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "right_val" ) , sourceInfo: sourceInfo (... span: span ( 121 ) , scope: sourceScope ( 3 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 16 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "kind" ) , sourceInfo: sourceInfo (... span: span ( 142 ) , scope: sourceScope ( 4 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 18 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "left_val" ) , sourceInfo: sourceInfo (... span: span ( 133 ) , scope: sourceScope ( 5 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 25 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "right_val" ) , sourceInfo: sourceInfo (... span: span ( 134 ) , scope: sourceScope ( 5 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 26 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) varDebugInfo (... name: symbol ( "kind" ) , sourceInfo: sourceInfo (... span: span ( 143 ) , scope: sourceScope ( 6 ) ) , composite: noVarDebugInfoFragment , value: varDebugInfoContentsPlace ( place (... local: local ( 28 ) , projection: .ProjectionElems ) ) , argumentIndex: noInt ) .VarDebugInfos , spreadArg: noLocal , span: span ( 144 ) ) ) ) + + + symbol ( "main" ) + + + ty ( 1 ) |-> typeInfoTupleType ( .Tys ) + ty ( 5 ) |-> typeInfoRefType ( ty ( 82 ) ) + ty ( 6 ) |-> typeInfoPrimitiveType ( primTypeInt ( intTyIsize ) ) + ty ( 8 ) |-> typeInfoPtrType ( ty ( 83 ) ) + ty ( 9 ) |-> typeInfoPrimitiveType ( primTypeUint ( uintTyU8 ) ) + ty ( 10 ) |-> typeInfoEnumType (... name: "std::result::Result" , adtDef: adtDef ( 28 ) , discriminants: discriminant ( 0 ) discriminant ( 1 ) .Discriminants , fields: ty ( 6 ) .Tys : ty ( 37 ) .Tys : .Tyss , layout: someLayoutShape ( layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 0 ) ) ) , abi: valueAbiScalar ( scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI64 , signed: true ) ) , validRange: wrappingRange (... start: 0 , end: 18446744073709552000 ) ) ) ) , abiAlign: align ( 8 ) , size: machineSize (... numBits: 64 ) ) ) ) + ty ( 11 ) |-> typeInfoRefType ( ty ( 12 ) ) + ty ( 15 ) |-> typeInfoStructType ( "std::sys::pal::unix::process::process_common::ExitCode" , adtDef ( 73 ) , ty ( 9 ) .Tys ) + ty ( 16 ) |-> typeInfoPrimitiveType ( primTypeInt ( intTyI32 ) ) + ty ( 17 ) |-> typeInfoStructType ( "std::process::ExitCode" , adtDef ( 71 ) , ty ( 15 ) .Tys ) + ty ( 18 ) |-> typeInfoRefType ( ty ( 15 ) ) + ty ( 22 ) |-> typeInfoEnumType (... name: "std::result::Result<(), std::fmt::Error>" , adtDef: adtDef ( 28 ) , discriminants: discriminant ( 0 ) discriminant ( 1 ) .Discriminants , fields: ty ( 1 ) .Tys : ty ( 61 ) .Tys : .Tyss , layout: someLayoutShape ( layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeMultiple ( mk (... tag: scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI8 , signed: false ) ) , validRange: wrappingRange (... start: 0 , end: 1 ) ) ) , tagEncoding: tagEncodingDirect , tagField: 0 , variants: layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 8 ) .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 0 ) ) ) , abi: valueAbiScalar ( scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI8 , signed: false ) ) , validRange: wrappingRange (... start: 0 , end: 1 ) ) ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 8 ) .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 1 ) ) ) , abi: valueAbiScalar ( scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI8 , signed: false ) ) , validRange: wrappingRange (... start: 0 , end: 1 ) ) ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) .LayoutShapes ) ) , abi: valueAbiScalar ( scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI8 , signed: false ) ) , validRange: wrappingRange (... start: 0 , end: 1 ) ) ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) ) ) + ty ( 23 ) |-> typeInfoRefType ( ty ( 25 ) ) + ty ( 24 ) |-> typeInfoRefType ( ty ( 53 ) ) + ty ( 25 ) |-> typeInfoRefType ( ty ( 46 ) ) + ty ( 27 ) |-> typeInfoRefType ( ty ( 28 ) ) + ty ( 28 ) |-> typeInfoRefType ( ty ( 42 ) ) + ty ( 30 ) |-> typeInfoPtrType ( ty ( 12 ) ) + ty ( 32 ) |-> typeInfoRefType ( ty ( 12 ) ) + ty ( 33 ) |-> typeInfoPtrType ( ty ( 28 ) ) + ty ( 34 ) |-> typeInfoPtrType ( ty ( 25 ) ) + ty ( 36 ) |-> typeInfoRefType ( ty ( 62 ) ) + ty ( 37 ) |-> typeInfoVoidType + ty ( 38 ) |-> typeInfoEnumType (... name: "core::panicking::AssertKind" , adtDef: adtDef ( 14 ) , discriminants: discriminant ( 0 ) discriminant ( 1 ) discriminant ( 2 ) .Discriminants , fields: .Tys : .Tys : .Tys : .Tyss , layout: someLayoutShape ( layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeMultiple ( mk (... tag: scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI8 , signed: false ) ) , validRange: wrappingRange (... start: 0 , end: 2 ) ) ) , tagEncoding: tagEncodingDirect , tagField: 0 , variants: layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 0 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 1 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 2 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) .LayoutShapes ) ) , abi: valueAbiScalar ( scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI8 , signed: false ) ) , validRange: wrappingRange (... start: 0 , end: 2 ) ) ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) ) ) + ty ( 39 ) |-> typeInfoEnumType (... name: "std::option::Option>" , adtDef: adtDef ( 11 ) , discriminants: discriminant ( 0 ) discriminant ( 1 ) .Discriminants , fields: .Tys : ty ( 50 ) .Tys : .Tyss , layout: someLayoutShape ( layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeMultiple ( mk (... tag: scalarInitialized ( mk (... value: primitivePointer ( addressSpace ( 0 ) ) , validRange: wrappingRange (... start: 1 , end: 0 ) ) ) , tagEncoding: tagEncodingNiche ( ) , tagField: 0 , variants: layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 0 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 0 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 1 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 8 ) , size: machineSize (... numBits: 384 ) ) .LayoutShapes ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 8 ) , size: machineSize (... numBits: 384 ) ) ) ) + ty ( 41 ) |-> typeInfoRefType ( ty ( 52 ) ) + ty ( 42 ) |-> typeInfoEnumType (... name: "SmallInt" , adtDef: adtDef ( 12 ) , discriminants: discriminant ( 1 ) discriminant ( 2 ) .Discriminants , fields: .Tys : .Tys : .Tyss , layout: someLayoutShape ( layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeMultiple ( mk (... tag: scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI8 , signed: false ) ) , validRange: wrappingRange (... start: 1 , end: 2 ) ) ) , tagEncoding: tagEncodingDirect , tagField: 0 , variants: layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 0 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 1 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) .LayoutShapes ) ) , abi: valueAbiScalar ( scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI8 , signed: false ) ) , validRange: wrappingRange (... start: 1 , end: 2 ) ) ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) ) ) + ty ( 44 ) |-> typeInfoPrimitiveType ( primTypeBool ) + ty ( 46 ) |-> typeInfoEnumType (... name: "std::option::Option" , adtDef: adtDef ( 11 ) , discriminants: discriminant ( 0 ) discriminant ( 1 ) .Discriminants , fields: .Tys : ty ( 42 ) .Tys : .Tyss , layout: someLayoutShape ( layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeMultiple ( mk (... tag: scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI8 , signed: false ) ) , validRange: wrappingRange (... start: 0 , end: 2 ) ) ) , tagEncoding: tagEncodingNiche ( ) , tagField: 0 , variants: layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 0 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 0 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 1 ) ) ) , abi: valueAbiScalar ( scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI8 , signed: false ) ) , validRange: wrappingRange (... start: 1 , end: 2 ) ) ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) .LayoutShapes ) ) , abi: valueAbiScalar ( scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI8 , signed: false ) ) , validRange: wrappingRange (... start: 0 , end: 2 ) ) ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) ) ) + ty ( 50 ) |-> typeInfoStructType ( "std::fmt::Arguments<'_>" , adtDef ( 35 ) , ty ( 64 ) ty ( 65 ) ty ( 66 ) .Tys ) + ty ( 51 ) |-> typeInfoTupleType ( ty ( 25 ) ty ( 25 ) .Tys ) + ty ( 52 ) |-> typeInfoPrimitiveType ( primTypeStr ) + ty ( 53 ) |-> typeInfoStructType ( "std::fmt::Formatter<'_>" , adtDef ( 18 ) , ty ( 54 ) ty ( 55 ) ty ( 56 ) ty ( 57 ) ty ( 57 ) ty ( 58 ) .Tys ) + ty ( 54 ) |-> typeInfoPrimitiveType ( primTypeUint ( uintTyU32 ) ) + ty ( 55 ) |-> typeInfoPrimitiveType ( primTypeChar ) + ty ( 56 ) |-> typeInfoEnumType (... name: "core::fmt::rt::Alignment" , adtDef: adtDef ( 25 ) , discriminants: discriminant ( 0 ) discriminant ( 1 ) discriminant ( 2 ) discriminant ( 3 ) .Discriminants , fields: .Tys : .Tys : .Tys : .Tys : .Tyss , layout: someLayoutShape ( layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeMultiple ( mk (... tag: scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI8 , signed: false ) ) , validRange: wrappingRange (... start: 0 , end: 3 ) ) ) , tagEncoding: tagEncodingDirect , tagField: 0 , variants: layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 0 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 1 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 2 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 3 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) .LayoutShapes ) ) , abi: valueAbiScalar ( scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI8 , signed: false ) ) , validRange: wrappingRange (... start: 0 , end: 3 ) ) ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 8 ) ) ) ) + ty ( 57 ) |-> typeInfoEnumType (... name: "std::option::Option" , adtDef: adtDef ( 11 ) , discriminants: discriminant ( 0 ) discriminant ( 1 ) .Discriminants , fields: .Tys : ty ( 59 ) .Tys : .Tyss , layout: someLayoutShape ( layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeMultiple ( mk (... tag: scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI64 , signed: false ) ) , validRange: wrappingRange (... start: 0 , end: 1 ) ) ) , tagEncoding: tagEncodingDirect , tagField: 0 , variants: layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 0 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 64 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 64 ) .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 1 ) ) ) , abi: valueAbiScalarPair ( ) , abiAlign: align ( 8 ) , size: machineSize (... numBits: 128 ) ) .LayoutShapes ) ) , abi: valueAbiScalarPair ( ) , abiAlign: align ( 8 ) , size: machineSize (... numBits: 128 ) ) ) ) + ty ( 58 ) |-> typeInfoRefType ( ty ( 60 ) ) + ty ( 59 ) |-> typeInfoPrimitiveType ( primTypeUint ( uintTyUsize ) ) + ty ( 61 ) |-> typeInfoStructType ( "std::fmt::Error" , adtDef ( 31 ) , .Tys ) + ty ( 63 ) |-> typeInfoRefType ( ty ( 81 ) ) + ty ( 64 ) |-> typeInfoRefType ( ty ( 67 ) ) + ty ( 65 ) |-> typeInfoEnumType (... name: "std::option::Option<&[core::fmt::rt::Placeholder]>" , adtDef: adtDef ( 11 ) , discriminants: discriminant ( 0 ) discriminant ( 1 ) .Discriminants , fields: .Tys : ty ( 68 ) .Tys : .Tyss , layout: someLayoutShape ( layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeMultiple ( mk (... tag: scalarInitialized ( mk (... value: primitivePointer ( addressSpace ( 0 ) ) , validRange: wrappingRange (... start: 1 , end: 0 ) ) ) , tagEncoding: tagEncodingNiche ( ) , tagField: 0 , variants: layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 0 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 0 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 1 ) ) ) , abi: valueAbiScalarPair ( ) , abiAlign: align ( 8 ) , size: machineSize (... numBits: 128 ) ) .LayoutShapes ) ) , abi: valueAbiScalarPair ( ) , abiAlign: align ( 8 ) , size: machineSize (... numBits: 128 ) ) ) ) + ty ( 66 ) |-> typeInfoRefType ( ty ( 72 ) ) + ty ( 67 ) |-> typeInfoArrayType ( ty ( 41 ) , noTyConst ) + ty ( 68 ) |-> typeInfoRefType ( ty ( 69 ) ) + ty ( 69 ) |-> typeInfoArrayType ( ty ( 70 ) , noTyConst ) + ty ( 70 ) |-> typeInfoStructType ( "core::fmt::rt::Placeholder" , adtDef ( 39 ) , ty ( 59 ) ty ( 55 ) ty ( 56 ) ty ( 54 ) ty ( 71 ) ty ( 71 ) .Tys ) + ty ( 71 ) |-> typeInfoEnumType (... name: "core::fmt::rt::Count" , adtDef: adtDef ( 46 ) , discriminants: discriminant ( 0 ) discriminant ( 1 ) discriminant ( 2 ) .Discriminants , fields: ty ( 59 ) .Tys : ty ( 59 ) .Tys : .Tys : .Tyss , layout: someLayoutShape ( layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeMultiple ( mk (... tag: scalarInitialized ( mk (... value: primitiveInt ( mk (... length: integerLengthI64 , signed: false ) ) , validRange: wrappingRange (... start: 0 , end: 2 ) ) ) , tagEncoding: tagEncodingDirect , tagField: 0 , variants: layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 64 ) .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 0 ) ) ) , abi: valueAbiScalarPair ( ) , abiAlign: align ( 8 ) , size: machineSize (... numBits: 128 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 64 ) .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 1 ) ) ) , abi: valueAbiScalarPair ( ) , abiAlign: align ( 8 ) , size: machineSize (... numBits: 128 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 2 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 1 ) , size: machineSize (... numBits: 64 ) ) .LayoutShapes ) ) , abi: valueAbiScalarPair ( ) , abiAlign: align ( 8 ) , size: machineSize (... numBits: 128 ) ) ) ) + ty ( 72 ) |-> typeInfoArrayType ( ty ( 73 ) , noTyConst ) + ty ( 73 ) |-> typeInfoStructType ( "core::fmt::rt::Argument<'_>" , adtDef ( 49 ) , ty ( 74 ) .Tys ) + ty ( 74 ) |-> typeInfoEnumType (... name: "core::fmt::rt::ArgumentType<'_>" , adtDef: adtDef ( 51 ) , discriminants: discriminant ( 0 ) discriminant ( 1 ) .Discriminants , fields: ty ( 75 ) ty ( 76 ) ty ( 77 ) .Tys : ty ( 59 ) .Tys : .Tyss , layout: someLayoutShape ( layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) .MachineSizes ) ) , variants: variantsShapeMultiple ( mk (... tag: scalarInitialized ( mk (... value: primitivePointer ( addressSpace ( 0 ) ) , validRange: wrappingRange (... start: 1 , end: 0 ) ) ) , tagEncoding: tagEncodingNiche ( ) , tagField: 0 , variants: layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 0 ) machineSize (... numBits: 64 ) machineSize (... numBits: 128 ) .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 0 ) ) ) , abi: valueAbiScalarPair ( ) , abiAlign: align ( 8 ) , size: machineSize (... numBits: 128 ) ) layoutShape (... fields: fieldsShapeArbitrary ( mk (... offsets: machineSize (... numBits: 64 ) .MachineSizes ) ) , variants: variantsShapeSingle ( mk (... index: variantIdx ( 1 ) ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 8 ) , size: machineSize (... numBits: 128 ) ) .LayoutShapes ) ) , abi: valueAbiAggregate ( mk (... sized: true ) ) , abiAlign: align ( 8 ) , size: machineSize (... numBits: 128 ) ) ) ) + ty ( 75 ) |-> typeInfoStructType ( "std::ptr::NonNull<()>" , adtDef ( 56 ) , ty ( 78 ) .Tys ) + ty ( 77 ) |-> typeInfoStructType ( "std::marker::PhantomData<&()>" , adtDef ( 58 ) , .Tys ) + ty ( 78 ) |-> typeInfoPtrType ( ty ( 1 ) ) + ty ( 80 ) |-> typeInfoRefType ( ty ( 1 ) ) + ty ( 81 ) |-> typeInfoStructType ( "std::panic::Location<'_>" , adtDef ( 59 ) , ty ( 41 ) ty ( 54 ) ty ( 54 ) .Tys ) + ty ( 83 ) |-> typeInfoPtrType ( ty ( 9 ) ) + + \ No newline at end of file diff --git a/kmir/src/tests/integration/data/prove-rs/niche-enum.rs b/kmir/src/tests/integration/data/prove-rs/niche-enum.rs new file mode 120000 index 000000000..cc5ca17fb --- /dev/null +++ b/kmir/src/tests/integration/data/prove-rs/niche-enum.rs @@ -0,0 +1 @@ +../exec-smir/niche-enum/niche-enum.rs \ No newline at end of file diff --git a/kmir/src/tests/integration/data/prove-rs/show/niche-enum.main.expected b/kmir/src/tests/integration/data/prove-rs/show/niche-enum.main.expected new file mode 100644 index 000000000..1c1d0972f --- /dev/null +++ b/kmir/src/tests/integration/data/prove-rs/show/niche-enum.main.expected @@ -0,0 +1,17 @@ + +┌─ 1 (root, init) +│ #execTerminator ( terminator ( ... kind: terminatorKindCall ( ... func: operandC +│ span: 0 +│ +│ (731 steps) +├─ 3 (terminal) +│ #EndProgram ~> .K +│ function: main +│ +┊ constraint: true +┊ subst: ... +└─ 2 (leaf, target, terminal) + #EndProgram ~> .K + + + diff --git a/kmir/src/tests/integration/test_decode_value.py b/kmir/src/tests/integration/test_decode_value.py index 514998814..ca7f117b6 100644 --- a/kmir/src/tests/integration/test_decode_value.py +++ b/kmir/src/tests/integration/test_decode_value.py @@ -140,6 +140,8 @@ def parse_test_data(test_file: Path, expected_file: Path) -> _TestData: 'enum-1-variant-1-field', 'enum-1-variant-2-fields', 'enum-2-variants-1-field', + 'enum-option-nonzero-none', + 'enum-option-nonzero-some', 'str', ) diff --git a/kmir/src/tests/integration/test_integration.py b/kmir/src/tests/integration/test_integration.py index 4d241f037..f928a499e 100644 --- a/kmir/src/tests/integration/test_integration.py +++ b/kmir/src/tests/integration/test_integration.py @@ -51,6 +51,7 @@ 'offset-u8-fail', 'pointer-cast-length-test-fail', 'closure_access_struct', + 'niche-enum', ] @@ -297,6 +298,12 @@ def test_crate_examples(main_crate: Path, kmir: KMIR, update_expected_output: bo EXEC_DATA_DIR / 'allocs' / 'array_nest_compare.state', 1000, ), + ( + 'niche-enum', + EXEC_DATA_DIR / 'niche-enum' / 'niche-enum.smir.json', + EXEC_DATA_DIR / 'niche-enum' / 'niche-enum.state', + None, + ), ]