diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 402a3d9..73ad23d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,33 +28,12 @@ jobs: - name: "Set up nightly Rust" # https://github.com/rust-lang/rustup/issues/3409 uses: dtolnay/rust-toolchain@master with: - toolchain: nightly-2024-08-28 + toolchain: nightly-2024-11-29 # Hardcoded version, same as is in the build.rs - - name: 'Set up tree for rust dependency' - run: make setup - - - name: 'Cache smir_pretty and rustc' - uses: Swatinem/rust-cache@v2 - with: - workspaces: | - . - deps/rust/src - cache-directories: | - target - deps/rust/src/build - deps/rust/src/target - - - name: 'Build smir_pretty and its rustc dependency' - run: | # rustc bootstrap checks this and refuses stage 1 in "CI" - export GITHUB_ACTIONS="in denial" && \ - echo "GITHUB_ACTIONS = ${GITHUB_ACTIONS}" && \ - make build_all - - - name: 'Run smir integration tests' + - name: 'Build smir_pretty' run: | - make integration-test + cargo build -vv - - name: 'Clean up toolchain' - if: always() + - name: 'Run smir integration tests' run: | - make rustup-clear-toolchain + make integration-test \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 6a288eb..0057f13 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "once_cell" diff --git a/Cargo.toml b/Cargo.toml index ec09317..7c62b92 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,17 +2,12 @@ name = "smir_pretty" version = "0.1.0" edition = "2021" -# rust-version = "1.78.0" # I think we get latest available rust by unsetting this and setting rust-toolchain.toml.toolchain.channel = nightly # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] tracing = "0.1" -# serde = { version = "=1.0.202", features = ["derive"] } -# serde_cbor = "0.11" -# serde_json = "1.0" -# tar = "0.4" [package.metadata.rust-analyzer] # This package uses rustc crates. -rustc_private=true +rustc_private=true \ No newline at end of file diff --git a/Makefile b/Makefile index eb361c2..43437db 100644 --- a/Makefile +++ b/Makefile @@ -1,92 +1,13 @@ -TARGET ?= debug -STAGE ?= 1 -ifneq (0, $(shell test "${STAGE}" -gt 0 2>/dev/null; echo "$$?")) -$(error STAGE must be set to a number greater than 0) -endif -ifneq (${TARGET}, $(filter ${TARGET},debug release)) -$(error TARGET must be set to one of debug/release) -endif -RUST_DIR=${CURDIR}/deps/rust -STAGE_FILE=${RUST_DIR}/stage -RUST_SRC=${RUST_DIR}/src -RUST_ARCH=$(shell "${PWD}"/rustc_arch.sh) -RUST_BUILD_DIR=${RUST_SRC}/build/${RUST_ARCH} -RUST_INSTALL_DIR=${RUST_BUILD_DIR}/stage${STAGE} -RUST_LIB_DIR=${RUST_INSTALL_DIR}/lib -RUST_DEP_DIR=${RUST_BUILD_DIR}/stage1-rustc/${RUST_ARCH}/release/deps -TARGET_DEP_DIR=${CURDIR}/target/${TARGET}/deps -TEMP_DIR=${RUST_DIR}/temp -############################################# -# depend on the rust compiler -RUST_REPO=https://github.com/rust-lang/rust -# tip of the `beta` branch on 2025-01-14 -RUST_BRANCH=beta -RUST_COMMIT=fe9b975 -############################################# -TOOLCHAIN_NAME=smir_pretty RELEASE_FLAG= -ifeq (${TARGET}, release) -RELEASE_FLAG=--release -endif +TOOLCHAIN_NAME='' default: build -build_all: rust_build rust_set_toolchain build - -setup: rust_clone - -update: ${RUST_SRC} - cd "${RUST_SRC}"; git fetch origin; git checkout ${RUST_COMMIT} - build: cargo build ${RELEASE_FLAG} -clean: - cd "${RUST_SRC}" && ./x.py clean - -rm -r "${TEMP_DIR}" - -rm -r "${RUST_DIR}"/tests - -rm -r ./target - -distclean: - cd "${RUST_SRC}" && git clean -dffx - -rm -r "${TEMP_DIR}" - -rm -r "${RUST_DIR}"/tests - -rm -r ./target - -# this clean removes old backup files which accumulate and lead to slow build times -prebuild_clean: ${RUST_SRC} - -find -name '*.old' -delete - -rm -r "${TEMP_DIR}" - -# NOTE: a deeper clone depth is needed for the build process -rust_clone: - git clone --depth 70 --single-branch --branch "${RUST_BRANCH}" "${RUST_REPO}" "${RUST_SRC}" && \ - cd "${RUST_SRC}" && \ - git checkout ${RUST_COMMIT} - - -# rust_build for linking against custom rustc is involved -# -# 1. core rust compiler must be built via ./x.py build/install (we also build the test harness here) -# 2. rustc-dev component must be installed (./x.py build/install does _not_ handle, must be done manually) -# 3. HACK(only for ./x.py install) we copy required libraries to the libdir -# 4. finally, use rustup to create custom toolchain - -rust_build: ${RUST_SRC} prebuild_clean - cd "${RUST_SRC}"; ./x.py build src/tools/compiletest - cd "${RUST_SRC}"; ./x.py build --stage ${STAGE} --set rust.debug-logging=true compiler/rustc library/std - cd "${RUST_SRC}"; ./x.py dist --set rust.debug-logging=true rustc-dev - mkdir -p "${TEMP_DIR}" - cd "${RUST_SRC}"; tar xf ./build/dist/rustc-dev*tar.gz -C "${TEMP_DIR}" - "${TEMP_DIR}"/rustc-dev*/install.sh --prefix="${RUST_INSTALL_DIR}" --sysconfdir="${RUST_INSTALL_DIR}" > "${RUST_DIR}"/rustc-dev-install.log 2>&1 - -rust_lib_copy: - cd "${RUST_LIB_DIR}"; cp libLLVM* rustlib/*/lib/ - -rust_set_toolchain: ${RUST_LIB_DIR} - rustup toolchain link "${TOOLCHAIN_NAME}" "${RUST_INSTALL_DIR}" - rustup override set "${TOOLCHAIN_NAME}" - echo ${STAGE} > ${STAGE_FILE} +clean: rustup-clear-toolchain + cargo clean .PHONY: rustup-clear-toolchain rustup-clear-toolchain: @@ -94,22 +15,16 @@ rustup-clear-toolchain: rustup override unset --nonexistent rustup toolchain uninstall "${TOOLCHAIN_NAME}" -generate_ui_tests: - mkdir -p "${RUST_DIR}"/tests - cd "${RUST_SRC}"; ./get_runpass.sh tests/ui > "${RUST_DIR}"/tests_ui_sources - -cd "${RUST_SRC}"; ./ui_compiletest.sh "${RUST_SRC}" "${RUST_DIR}"/tests/ui/upstream "${RUST_DIR}"/tests_ui_sources --pass check --force-rerun 2>&1 > "${RUST_DIR}"/tests_ui_upstream.log - -cd "${RUST_SRC}"; RUST_BIN="${PWD}"/run.sh ./ui_compiletest.sh "${RUST_SRC}" "${RUST_DIR}"/tests/ui/smir "${RUST_DIR}"/tests_ui_sources --pass check --force-rerun 2>&1 > "${RUST_DIR}"/tests_ui_smir.log - TESTDIR=$(CURDIR)/tests/integration/programs .PHONY: integration-test integration-test: TESTS ?= $(shell find $(TESTDIR) -type f -name "*.rs") -integration-test: SMIR ?= $(CURDIR)/run.sh -Z no-codegen +integration-test: SMIR ?= cargo run -- "-Zno-codegen" # override this to tweak how expectations are formatted integration-test: NORMALIZE ?= jq -S -e -f $(TESTDIR)/../normalise-filter.jq # override this to re-make golden files integration-test: DIFF ?= | diff - -integration-test: build +integration-test: errors=""; \ report() { echo "$$1: $$2"; errors="$$errors\n$$1: $$2"; }; \ for rust in ${TESTS}; do \ diff --git a/README.md b/README.md index a3f06f7..7b1e236 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,16 @@ # Rust Stable MIR Pretty Printing -This package provides: - -1. a library crate that provides: - - a `rustc` compiler wrapper which can access stable MIR APIs - - a pretty-printer for a large fragment of stable MIR -2. a `rustc` wrapper binary that uses (1)-(2) to pretty-print Rust source files as stable MIR using the `.smir.json` extension. - -It is designed so that anyone can use this library crate as a jumping off point for their own tools which might use stable MIR APIs. +This package provides a program that will emit a JSON serialisation of the Stable MIR of a Rust program ## Building -For first-time builds, run: - -```shell -make setup build_all -``` - -If the underlying `rustc` branch is updated and this crate needs to be rebuilt on top of it, run: - ```shell -make update build_all +cargo build ``` -If the source code changes locally for this crate only and it needs to be rebuilt, run: +NOTE: requries [rustup](https://www.rust-lang.org/tools/install) -```shell -make build -``` +The `build.rs` script will ensure that the correct version of rust and the required components are installed and defaulted. What `rustup` commands are run can be seen by adding verbosity flag `-vv` to `cargo`. ## Usage @@ -36,7 +19,7 @@ The options that this tool accepts are identical to `rustc`. To generate stable MIR output without building a binary, you can invoke the tool as follows: ```shell -./run.sh -Z no-codegen +cargo run -- ``` There are a few environment variables that can be set to control the tools output: @@ -45,17 +28,6 @@ There are a few environment variables that can be set to control the tools outpu 2. `LINK_INST` - use a richer key-structure for the link-time `functions` map which uses keys that are pairs of a function type (`Ty`) _and_ an function instance kind (`InstanceKind`) 3. `DEBUG` - serialize additional data in the JSON file and dump logs to stdout -### Invocation Details - -We use an uncommon build process where we link against a patched rustc installed in this repo. -However, since `cargo build` does not set `rpath` for dynamic linking, we must manually point the program loader/dynamic linker at the required runtime libraries. -Note that the `cargo run` command appears to prepard the rustlib directories automatically to the dynamic link search path. -If you wish to run the tool manually, you will need to tell the program loader/dynamic linker where to find the missing libraries by: - -1. setting `LD_LIBRARY_PATH` -2. setting the `rpath` attribute on the binary ELF file -3. manually invoking the loader (usually `/usr/lib/ld-linux.so.2`) with its specific options - ## Tests ### Running the Tests diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..806e893 --- /dev/null +++ b/build.rs @@ -0,0 +1,31 @@ +use std::process::Command; + +fn main() { + let status = Command::new("rustup") + .args(&["install", "nightly-2024-11-29"]) + .status() + .expect("build.rs failed to install nightly-2024-11-29"); + + println!("Installed nightly-2024-11-29: {}", status); + + let status = Command::new("rustup") + .args(&["default", "nightly-2024-11-29"]) + .status() + .expect("build.rs failed to default nightly-2024-11-29"); + + println!("Defaulted nightly-2024-11-29: {}", status); + + let status = Command::new("rustup") + .args(&["component", "add", "rustc-dev"]) + .status() + .expect("build.rs failed to install rustc-dev"); + + println!("Added component rustc-dev: {}", status); + + let status = Command::new("rustup") + .args(&["component", "add", "llvm-tools"]) + .status() + .expect("build.rs failed to install llvm-tools"); + + println!("Added component llvm-tools: {}", status); +} \ No newline at end of file diff --git a/deps/rust/.gitignore b/deps/rust/.gitignore deleted file mode 100644 index 72e8ffc..0000000 --- a/deps/rust/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/run.sh b/run.sh deleted file mode 100755 index f83fd3d..0000000 --- a/run.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -set -eu -BIN=smir_pretty -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -RUST_DIR=${SCRIPT_DIR}/deps/rust -ARCH=$("${SCRIPT_DIR}/rustc_arch.sh") -STAGE=$(cat "${RUST_DIR}/stage") -RUST_BUILD_DIR=${RUST_DIR}/src/build/${ARCH} -SEP="" -[ -n "${LD_LIBRARY_PATH:-}" ] && SEP=":" -export LD_LIBRARY_PATH="${RUST_BUILD_DIR}/stage${STAGE}/lib/rustlib/x86_64-unknown-linux-gnu/lib$SEP${LD_LIBRARY_PATH:-}" -if [ -x "$SCRIPT_DIR/target/debug/$BIN" ]; then - "$SCRIPT_DIR/target/debug/$BIN" "$@" -elif [ -x "$SCRIPT_DIR/target/release/$BIN" ]; then - "$SCRIPT_DIR/target/release/$BIN" "$@" -else - echo "Could not find smir_pretty executable; is it built?" - exit 1 -fi diff --git a/rust-toolchain.toml b/rust-toolchain.toml deleted file mode 100644 index 5d56faf..0000000 --- a/rust-toolchain.toml +++ /dev/null @@ -1,2 +0,0 @@ -[toolchain] -channel = "nightly" diff --git a/rustc_arch.sh b/rustc_arch.sh deleted file mode 100755 index efddfce..0000000 --- a/rustc_arch.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -"$(rustup +nightly which rustc)" -vV | grep '^host' | grep -o '[^: ]*$' diff --git a/tests/integration/programs/assert_eq.smir.json.expected b/tests/integration/programs/assert_eq.smir.json.expected index be856ca..3f05024 100644 --- a/tests/integration/programs/assert_eq.smir.json.expected +++ b/tests/integration/programs/assert_eq.smir.json.expected @@ -26,6 +26,26 @@ "IntrinsicSym": "black_box" } ], + [ + { + "NormalSym": "_ZN4core3fmt3num50_$LT$impl$u20$core..fmt..Debug$u20$for$u20$i32$GT$3fmt17h" + } + ], + [ + { + "NormalSym": "_ZN4core3fmt3num53_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$i32$GT$3fmt17h" + } + ], + [ + { + "NormalSym": "_ZN4core3fmt3num53_$LT$impl$u20$core..fmt..UpperHex$u20$for$u20$i32$GT$3fmt17h" + } + ], + [ + { + "NormalSym": "_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h" + } + ], [ { "NormalSym": "_ZN4core3ops8function6FnOnce9call_once17h" @@ -36,6 +56,11 @@ "NormalSym": "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h" } ], + [ + { + "NormalSym": "_ZN4core9panicking19assert_failed_inner17h" + } + ], [ { "NormalSym": "_ZN4core9panicking13assert_failed17h" @@ -560,6 +585,42 @@ "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": { @@ -583,7 +644,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -597,7 +658,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -606,19 +667,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -630,7 +697,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -656,6 +723,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -691,7 +763,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -699,6 +771,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -736,7 +823,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -750,9 +837,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -760,7 +847,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -776,7 +863,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -790,9 +877,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -800,35 +887,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -837,7 +924,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -852,7 +939,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -867,7 +954,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -876,7 +963,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -899,17 +986,37 @@ "arg_count": 2, "blocks": [ { - "statements": [], + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 1, + "projection": [ + "Deref" + ] + } + } + } + ] + }, + "span": 45 + } + ], "terminator": { "kind": { "Call": { "args": [ { "Move": { - "local": 1, - "projection": [ - "Deref" - ] + "local": 3, + "projection": [] } }, { @@ -928,9 +1035,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -938,111 +1045,80 @@ "unwind": "Continue" } }, - "span": 40 + "span": 44 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 46 } } ], "locals": [ { "mutability": "Mut", - "span": 40, - "ty": 16 + "span": 47, + "ty": 22 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 48, + "ty": 23 }, { "mutability": "Not", - "span": 40, - "ty": 1 - } - ], - "span": 40, - "spread_arg": 2, - "var_debug_info": [] - } - ], - "id": 3, - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" - } - }, - "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h" - }, - { - "details": null, - "mono_item_kind": { - "MonoItemFn": { - "body": [ - { - "arg_count": 2, - "blocks": [ - { - "statements": [], - "terminator": { - "kind": { - "Call": { - "args": [], - "destination": { - "local": 0, - "projection": [] - }, - "func": { - "Move": { - "local": 1, - "projection": [] - } - }, - "target": 1, - "unwind": "Continue" - } - }, - "span": 40 - } + "span": 49, + "ty": 24 }, { - "statements": [], - "terminator": { - "kind": "Return", - "span": 40 - } + "mutability": "Mut", + "span": 48, + "ty": 25 } ], - "locals": [ - { - "mutability": "Mut", - "span": 40, - "ty": 1 - }, + "span": 50, + "spread_arg": null, + "var_debug_info": [ { - "mutability": "Not", - "span": 40, - "ty": 7 + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } }, { - "mutability": "Not", - "span": 40, - "ty": 1 + "argument_index": 2, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 49 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } } - ], - "span": 40, - "spread_arg": 2, - "var_debug_info": [] + ] } ], "id": 3, - "name": ">::call_once" + "name": "<&i32 as std::fmt::Debug>::fmt" } }, - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h" + "symbol_name": "_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h" }, { "details": null, @@ -1054,32 +1130,1026 @@ "blocks": [ { "statements": [ + { + "kind": { + "StorageLive": 3 + }, + "span": 52 + }, + { + "kind": { + "StorageLive": 4 + }, + "span": 53 + }, { "kind": { "Assign": [ { - "local": 3, + "local": 4, "projection": [] }, { - "Ref": [ - { - "kind": "ReErased" - }, - { - "Mut": { - "kind": "Default" - } - }, - { - "local": 1, - "projection": [] - } - ] - } + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 53 + }, + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 4, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 7, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 16, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 32, + "user_ty": null + } + } + ] + } + ] + }, + "span": 52 + }, + { + "kind": { + "StorageDead": 4 + }, + "span": 54 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 3, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 2 + ] + ], + "otherwise": 1 + } + } + }, + "span": 51 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 51 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 8, + "kind": "ZeroSized", + "ty": 27 + }, + "span": 55, + "user_ty": null + } + }, + "target": 6, + "unwind": "Continue" + } + }, + "span": 56 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 3 + }, + "span": 51 + }, + { + "kind": { + "StorageLive": 5 + }, + "span": 58 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 59 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Use": { + "Copy": { + "local": 2, + "projection": [ + "Deref", + { + "Field": [ + 0, + 26 + ] + } + ] + } + } + } + ] + }, + "span": 59 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "BinaryOp": [ + "BitAnd", + { + "Move": { + "local": 6, + "projection": [] + } + }, + { + "Constant": { + "const_": { + "id": 9, + "kind": { + "Allocated": { + "align": 4, + "bytes": [ + 32, + 0, + 0, + 0 + ], + "mutability": "Mut", + "provenance": { + "ptrs": [] + } + } + }, + "ty": 26 + }, + "span": 32, + "user_ty": null + } + } + ] + } + ] + }, + "span": 58 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 60 + } + ], + "terminator": { + "kind": { + "SwitchInt": { + "discr": { + "Move": { + "local": 5, + "projection": [] + } + }, + "targets": { + "branches": [ + [ + 0, + 4 + ] + ], + "otherwise": 3 + } + } + }, + "span": 57 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 57 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 10, + "kind": "ZeroSized", + "ty": 28 + }, + "span": 61, + "user_ty": null + } + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 62 + } + }, + { + "statements": [ + { + "kind": { + "StorageDead": 5 + }, + "span": 57 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 11, + "kind": "ZeroSized", + "ty": 29 + }, + "span": 63, + "user_ty": null + } + }, + "target": 5, + "unwind": "Continue" + } + }, + "span": 64 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Goto": { + "target": 6 + } + }, + "span": 65 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 66 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 67, + "ty": 22 + }, + { + "mutability": "Not", + "span": 68, + "ty": 25 + }, + { + "mutability": "Not", + "span": 69, + "ty": 24 + }, + { + "mutability": "Mut", + "span": 52, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 53, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 58, + "ty": 26 + }, + { + "mutability": "Mut", + "span": 59, + "ty": 26 + } + ], + "span": 72, + "spread_arg": null, + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 68 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } + } + }, + { + "argument_index": 2, + "composite": null, + "name": "f", + "source_info": { + "scope": 0, + "span": 69 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 1, + "span": 70 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 71 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } + } + ] + } + ], + "id": 4, + "name": "core::fmt::num::::fmt" + } + }, + "symbol_name": "_ZN4core3fmt3num50_$LT$impl$u20$core..fmt..Debug$u20$for$u20$i32$GT$3fmt17h" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 1, + "projection": [ + "Deref" + ] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 12, + "kind": "ZeroSized", + "ty": 30 + }, + "span": 73, + "user_ty": null + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 73 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 73, + "ty": 16 + }, + { + "mutability": "Not", + "span": 73, + "ty": 31 + }, + { + "mutability": "Not", + "span": 73, + "ty": 1 + } + ], + "span": 73, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": { + "Call": { + "args": [], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Move": { + "local": 1, + "projection": [] + } + }, + "target": 1, + "unwind": "Continue" + } + }, + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 73 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 73, + "ty": 1 + }, + { + "mutability": "Not", + "span": 73, + "ty": 7 + }, + { + "mutability": "Not", + "span": 73, + "ty": 1 + } + ], + "span": 73, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": ">::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 2, + "blocks": [ + { + "statements": [ + { + "kind": { + "Assign": [ + { + "local": 3, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + { + "Mut": { + "kind": "Default" + } + }, + { + "local": 1, + "projection": [] + } + ] + } + ] + }, + "span": 73 + } + ], + "terminator": { + "kind": { + "Call": { + "args": [ + { + "Move": { + "local": 3, + "projection": [] + } + }, + { + "Move": { + "local": 2, + "projection": [] + } + } + ], + "destination": { + "local": 0, + "projection": [] + }, + "func": { + "Constant": { + "const_": { + "id": 13, + "kind": "ZeroSized", + "ty": 32 + }, + "span": 73, + "user_ty": null + } + }, + "target": 1, + "unwind": { + "Cleanup": 3 + } + } + }, + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 2, + "unwind": "Continue" + } + }, + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": { + "Drop": { + "place": { + "local": 1, + "projection": [] + }, + "target": 4, + "unwind": "Terminate" + } + }, + "span": 73 + } + }, + { + "statements": [], + "terminator": { + "kind": "Resume", + "span": 73 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 73, + "ty": 16 + }, + { + "mutability": "Not", + "span": 73, + "ty": 12 + }, + { + "mutability": "Not", + "span": 73, + "ty": 1 + }, + { + "mutability": "Not", + "span": 73, + "ty": 33 + } + ], + "span": 73, + "spread_arg": 2, + "var_debug_info": [] + } + ], + "id": 5, + "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" + } + }, + "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 74 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 74, + "ty": 1 + }, + { + "mutability": "Not", + "span": 74, + "ty": 34 + } + ], + "span": 74, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "std::ptr::drop_in_place::<&i32>" + } + }, + "symbol_name": "_ZN4core3ptr28drop_in_place$LT$$RF$i32$GT$17h" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 1, + "blocks": [ + { + "statements": [], + "terminator": { + "kind": "Return", + "span": 74 + } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 74, + "ty": 1 + }, + { + "mutability": "Not", + "span": 74, + "ty": 31 + } + ], + "span": 74, + "spread_arg": null, + "var_debug_info": [] + } + ], + "id": 6, + "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + } + }, + "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h" + }, + { + "details": null, + "mono_item_kind": { + "MonoItemFn": { + "body": [ + { + "arg_count": 4, + "blocks": [ + { + "statements": [ + { + "kind": { + "StorageLive": 5 + }, + "span": 77 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [] + } + ] + } + ] + }, + "span": 77 + }, + { + "kind": { + "Assign": [ + { + "local": 5, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 6, + "projection": [] + } + }, + 36 + ] + } ] }, - "span": 40 + "span": 77 + }, + { + "kind": { + "StorageLive": 7 + }, + "span": 78 + }, + { + "kind": { + "Assign": [ + { + "local": 8, + "projection": [] + }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 3, + "projection": [] + } + ] + } + ] + }, + "span": 78 + }, + { + "kind": { + "Assign": [ + { + "local": 7, + "projection": [] + }, + { + "Cast": [ + { + "PointerCoercion": "Unsize" + }, + { + "Copy": { + "local": 8, + "projection": [] + } + }, + 36 + ] + } + ] + }, + "span": 78 } ], "terminator": { @@ -1088,13 +2158,25 @@ "args": [ { "Move": { - "local": 3, + "local": 1, "projection": [] } }, { "Move": { - "local": 2, + "local": 5, + "projection": [] + } + }, + { + "Move": { + "local": 7, + "projection": [] + } + }, + { + "Move": { + "local": 4, "projection": [] } } @@ -1106,141 +2188,140 @@ "func": { "Constant": { "const_": { - "id": 7, + "id": 14, "kind": "ZeroSized", - "ty": 22 + "ty": 35 }, - "span": 40, + "span": 75, "user_ty": null } }, - "target": 1, - "unwind": { - "Cleanup": 3 - } + "target": null, + "unwind": "Continue" } }, - "span": 40 + "span": 76 } + } + ], + "locals": [ + { + "mutability": "Mut", + "span": 79, + "ty": 37 }, { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 2, - "unwind": "Continue" - } - }, - "span": 40 - } + "mutability": "Not", + "span": 80, + "ty": 38 }, { - "statements": [], - "terminator": { - "kind": "Return", - "span": 40 - } + "mutability": "Not", + "span": 81, + "ty": 25 }, { - "statements": [], - "terminator": { - "kind": { - "Drop": { - "place": { - "local": 1, - "projection": [] - }, - "target": 4, - "unwind": "Terminate" - } - }, - "span": 40 - } + "mutability": "Not", + "span": 82, + "ty": 25 }, { - "statements": [], - "terminator": { - "kind": "Resume", - "span": 40 - } - } - ], - "locals": [ + "mutability": "Not", + "span": 83, + "ty": 39 + }, { "mutability": "Mut", - "span": 40, - "ty": 16 + "span": 77, + "ty": 36 }, { "mutability": "Not", - "span": 40, - "ty": 12 + "span": 77, + "ty": 23 }, { - "mutability": "Not", - "span": 40, - "ty": 1 + "mutability": "Mut", + "span": 78, + "ty": 36 }, { "mutability": "Not", - "span": 40, + "span": 78, "ty": 23 } ], - "span": 40, - "spread_arg": 2, - "var_debug_info": [] - } - ], - "id": 3, - "name": "<{closure@std::rt::lang_start<()>::{closure#0}} as std::ops::FnOnce<()>>::call_once" - } - }, - "symbol_name": "_ZN4core3ops8function6FnOnce9call_once17h" - }, - { - "details": null, - "mono_item_kind": { - "MonoItemFn": { - "body": [ - { - "arg_count": 1, - "blocks": [ + "span": 84, + "spread_arg": null, + "var_debug_info": [ { - "statements": [], - "terminator": { - "kind": "Return", - "span": 41 + "argument_index": 1, + "composite": null, + "name": "kind", + "source_info": { + "scope": 0, + "span": 80 + }, + "value": { + "Place": { + "local": 1, + "projection": [] + } } - } - ], - "locals": [ + }, { - "mutability": "Mut", - "span": 41, - "ty": 1 + "argument_index": 2, + "composite": null, + "name": "left", + "source_info": { + "scope": 0, + "span": 81 + }, + "value": { + "Place": { + "local": 2, + "projection": [] + } + } }, { - "mutability": "Not", - "span": 41, - "ty": 21 + "argument_index": 3, + "composite": null, + "name": "right", + "source_info": { + "scope": 0, + "span": 82 + }, + "value": { + "Place": { + "local": 3, + "projection": [] + } + } + }, + { + "argument_index": 4, + "composite": null, + "name": "args", + "source_info": { + "scope": 0, + "span": 83 + }, + "value": { + "Place": { + "local": 4, + "projection": [] + } + } } - ], - "span": 41, - "spread_arg": null, - "var_debug_info": [] + ] } ], - "id": 4, - "name": "std::ptr::drop_in_place::<{closure@std::rt::lang_start<()>::{closure#0}}>" + "id": 7, + "name": "core::panicking::assert_failed::" } }, - "symbol_name": "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h" + "symbol_name": "_ZN4core9panicking13assert_failed17h" }, { "details": null, @@ -1263,7 +2344,7 @@ "Use": { "Constant": { "const_": { - "id": 8, + "id": 15, "kind": { "Allocated": { "align": 1, @@ -1278,40 +2359,61 @@ }, "ty": 17 }, - "span": 43, + "span": 86, "user_ty": null } } } ] }, - "span": 43 + "span": 86 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 85 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 87, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 88, "ty": 1 } ], - "span": 46, + "span": 89, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 88 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], - "id": 5, + "id": 8, "name": "<() as std::process::Termination>::report" } }, @@ -1338,7 +2440,7 @@ "Use": { "Constant": { "const_": { - "id": 11, + "id": 18, "kind": { "Allocated": { "align": 4, @@ -1356,14 +2458,14 @@ }, "ty": 16 }, - "span": 50, + "span": 93, "user_ty": null } } } ] }, - "span": 50 + "span": 93 }, { "kind": { @@ -1378,7 +2480,7 @@ { "Constant": { "const_": { - "id": 9, + "id": 16, "kind": { "Allocated": { "align": 4, @@ -1396,14 +2498,14 @@ }, "ty": 16 }, - "span": 47, + "span": 90, "user_ty": null } }, { "Constant": { "const_": { - "id": 10, + "id": 17, "kind": { "Allocated": { "align": 4, @@ -1421,7 +2523,7 @@ }, "ty": 16 }, - "span": 48, + "span": 91, "user_ty": null } } @@ -1429,7 +2531,7 @@ } ] }, - "span": 49 + "span": 92 } ], "terminator": { @@ -1442,7 +2544,7 @@ { "Field": [ 1, - 24 + 40 ] } ] @@ -1455,7 +2557,7 @@ { "Constant": { "const_": { - "id": 9, + "id": 16, "kind": { "Allocated": { "align": 4, @@ -1473,14 +2575,14 @@ }, "ty": 16 }, - "span": 47, + "span": 90, "user_ty": null } }, { "Constant": { "const_": { - "id": 10, + "id": 17, "kind": { "Allocated": { "align": 4, @@ -1498,7 +2600,7 @@ }, "ty": 16 }, - "span": 48, + "span": 91, "user_ty": null } } @@ -1508,7 +2610,7 @@ "unwind": "Continue" } }, - "span": 49 + "span": 92 } }, { @@ -1537,7 +2639,7 @@ } ] }, - "span": 49 + "span": 92 }, { "kind": { @@ -1560,7 +2662,7 @@ } ] }, - "span": 52 + "span": 95 }, { "kind": { @@ -1583,7 +2685,7 @@ } ] }, - "span": 53 + "span": 96 }, { "kind": { @@ -1613,7 +2715,7 @@ } ] }, - "span": 54 + "span": 97 }, { "kind": { @@ -1639,7 +2741,7 @@ } ] }, - "span": 55 + "span": 98 }, { "kind": { @@ -1665,7 +2767,7 @@ } ] }, - "span": 56 + "span": 99 }, { "kind": { @@ -1686,7 +2788,7 @@ } ] }, - "span": 57 + "span": 100 }, { "kind": { @@ -1707,7 +2809,7 @@ } ] }, - "span": 58 + "span": 101 }, { "kind": { @@ -1735,7 +2837,7 @@ } ] }, - "span": 51 + "span": 94 } ], "terminator": { @@ -1758,14 +2860,14 @@ } } }, - "span": 51 + "span": 94 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 59 + "span": 102 } }, { @@ -1781,7 +2883,7 @@ "Aggregate": [ { "Adt": [ - 7, + 10, 0, [], null, @@ -1793,7 +2895,7 @@ } ] }, - "span": 62 + "span": 105 }, { "kind": { @@ -1806,11 +2908,11 @@ "Aggregate": [ { "Adt": [ - 8, + 11, 0, [ { - "Type": 27 + "Type": 42 } ], null, @@ -1822,7 +2924,7 @@ } ] }, - "span": 63 + "span": 106 } ], "terminator": { @@ -1861,11 +2963,11 @@ "func": { "Constant": { "const_": { - "id": 12, + "id": 19, "kind": "ZeroSized", - "ty": 26 + "ty": 41 }, - "span": 60, + "span": 103, "user_ty": null } }, @@ -1873,88 +2975,88 @@ "unwind": "Continue" } }, - "span": 61 + "span": 104 } } ], "locals": [ { "mutability": "Mut", - "span": 64, + "span": 107, "ty": 1 }, { "mutability": "Not", - "span": 65, + "span": 108, "ty": 16 }, { "mutability": "Not", - "span": 66, + "span": 109, "ty": 16 }, { "mutability": "Mut", - "span": 49, - "ty": 28 + "span": 92, + "ty": 43 }, { "mutability": "Mut", - "span": 54, - "ty": 29 + "span": 97, + "ty": 44 }, { "mutability": "Mut", - "span": 52, + "span": 95, "ty": 25 }, { "mutability": "Mut", - "span": 53, + "span": 96, "ty": 25 }, { "mutability": "Not", - "span": 55, + "span": 98, "ty": 25 }, { "mutability": "Not", - "span": 56, + "span": 99, "ty": 25 }, { "mutability": "Mut", - "span": 51, - "ty": 24 + "span": 94, + "ty": 40 }, { "mutability": "Mut", - "span": 57, + "span": 100, "ty": 16 }, { "mutability": "Mut", - "span": 58, + "span": 101, "ty": 16 }, { "mutability": "Not", - "span": 67, - "ty": 30 + "span": 110, + "ty": 38 }, { "mutability": "Not", - "span": 61, - "ty": 31 + "span": 104, + "ty": 37 }, { "mutability": "Mut", - "span": 63, - "ty": 32 + "span": 106, + "ty": 39 } ], - "span": 68, + "span": 111, "spread_arg": null, "var_debug_info": [ { @@ -1963,7 +3065,7 @@ "name": "a", "source_info": { "scope": 1, - "span": 65 + "span": 108 }, "value": { "Place": { @@ -1978,7 +3080,7 @@ "name": "b", "source_info": { "scope": 2, - "span": 66 + "span": 109 }, "value": { "Place": { @@ -1993,7 +3095,7 @@ "name": "left_val", "source_info": { "scope": 3, - "span": 55 + "span": 98 }, "value": { "Place": { @@ -2008,7 +3110,7 @@ "name": "right_val", "source_info": { "scope": 3, - "span": 56 + "span": 99 }, "value": { "Place": { @@ -2023,7 +3125,7 @@ "name": "kind", "source_info": { "scope": 4, - "span": 67 + "span": 110 }, "value": { "Place": { @@ -2035,7 +3137,7 @@ ] } ], - "id": 6, + "id": 9, "name": "main" } }, diff --git a/tests/integration/programs/binop.smir.json.expected b/tests/integration/programs/binop.smir.json.expected index 39e9921..1f81971 100644 --- a/tests/integration/programs/binop.smir.json.expected +++ b/tests/integration/programs/binop.smir.json.expected @@ -1669,6 +1669,42 @@ "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": { @@ -1692,7 +1728,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -1706,7 +1742,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -1715,19 +1751,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -1739,7 +1781,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -1765,6 +1807,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -1800,7 +1847,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -1808,6 +1855,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1845,7 +1907,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1859,9 +1921,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1869,7 +1931,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1885,7 +1947,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1899,9 +1961,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1909,35 +1971,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1946,7 +2008,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1961,7 +2023,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1976,7 +2038,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1985,7 +2047,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -2037,9 +2099,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -2047,35 +2109,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -2114,35 +2176,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -2188,7 +2250,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -2217,9 +2279,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -2229,7 +2291,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -2245,14 +2307,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -2268,40 +2330,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -2324,23 +2386,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -2387,37 +2449,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, @@ -2462,7 +2545,7 @@ } ] }, - "span": 47 + "span": 50 } ], "terminator": { @@ -2475,7 +2558,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -2503,7 +2586,7 @@ "unwind": "Continue" } }, - "span": 47 + "span": 50 } }, { @@ -2532,7 +2615,7 @@ } ] }, - "span": 47 + "span": 50 } ], "terminator": { @@ -2555,7 +2638,7 @@ } } }, - "span": 48 + "span": 51 } }, { @@ -2586,7 +2669,7 @@ } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -2599,7 +2682,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -2627,7 +2710,7 @@ "unwind": "Continue" } }, - "span": 49 + "span": 52 } }, { @@ -2672,9 +2755,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -2688,9 +2771,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 50, + "span": 53, "user_ty": null } }, @@ -2698,7 +2781,7 @@ "unwind": "Continue" } }, - "span": 50 + "span": 53 } }, { @@ -2727,7 +2810,7 @@ } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -2750,7 +2833,7 @@ } } }, - "span": 51 + "span": 54 } }, { @@ -2781,7 +2864,7 @@ } ] }, - "span": 52 + "span": 55 } ], "terminator": { @@ -2794,7 +2877,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -2822,7 +2905,7 @@ "unwind": "Continue" } }, - "span": 52 + "span": 55 } }, { @@ -2867,9 +2950,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -2883,9 +2966,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 53, + "span": 56, "user_ty": null } }, @@ -2893,7 +2976,7 @@ "unwind": "Continue" } }, - "span": 53 + "span": 56 } }, { @@ -2922,7 +3005,7 @@ } ] }, - "span": 52 + "span": 55 }, { "kind": { @@ -2950,7 +3033,7 @@ } ] }, - "span": 54 + "span": 57 } ], "terminator": { @@ -2963,7 +3046,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -2991,7 +3074,7 @@ "unwind": "Continue" } }, - "span": 54 + "span": 57 } }, { @@ -3020,7 +3103,7 @@ } ] }, - "span": 54 + "span": 57 }, { "kind": { @@ -3048,7 +3131,7 @@ } ] }, - "span": 55 + "span": 58 } ], "terminator": { @@ -3071,7 +3154,7 @@ } } }, - "span": 55 + "span": 58 } }, { @@ -3102,7 +3185,7 @@ } ] }, - "span": 56 + "span": 59 } ], "terminator": { @@ -3115,7 +3198,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -3143,7 +3226,7 @@ "unwind": "Continue" } }, - "span": 56 + "span": 59 } }, { @@ -3188,9 +3271,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -3204,9 +3287,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 57, + "span": 60, "user_ty": null } }, @@ -3214,7 +3297,7 @@ "unwind": "Continue" } }, - "span": 57 + "span": 60 } }, { @@ -3243,7 +3326,7 @@ } ] }, - "span": 56 + "span": 59 } ], "terminator": { @@ -3266,7 +3349,7 @@ } } }, - "span": 58 + "span": 61 } }, { @@ -3297,7 +3380,7 @@ } ] }, - "span": 59 + "span": 62 } ], "terminator": { @@ -3310,7 +3393,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -3338,7 +3421,7 @@ "unwind": "Continue" } }, - "span": 59 + "span": 62 } }, { @@ -3383,9 +3466,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -3399,9 +3482,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 60, + "span": 63, "user_ty": null } }, @@ -3409,7 +3492,7 @@ "unwind": "Continue" } }, - "span": 60 + "span": 63 } }, { @@ -3438,7 +3521,7 @@ } ] }, - "span": 59 + "span": 62 } ], "terminator": { @@ -3461,7 +3544,7 @@ } } }, - "span": 61 + "span": 64 } }, { @@ -3492,7 +3575,7 @@ } ] }, - "span": 62 + "span": 65 } ], "terminator": { @@ -3505,7 +3588,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -3533,7 +3616,7 @@ "unwind": "Continue" } }, - "span": 62 + "span": 65 } }, { @@ -3578,9 +3661,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -3594,9 +3677,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 63, + "span": 66, "user_ty": null } }, @@ -3604,7 +3687,7 @@ "unwind": "Continue" } }, - "span": 63 + "span": 66 } }, { @@ -3633,7 +3716,7 @@ } ] }, - "span": 62 + "span": 65 }, { "kind": { @@ -3661,7 +3744,7 @@ } ] }, - "span": 64 + "span": 67 } ], "terminator": { @@ -3674,7 +3757,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -3702,7 +3785,7 @@ "unwind": "Continue" } }, - "span": 64 + "span": 67 } }, { @@ -3731,7 +3814,7 @@ } ] }, - "span": 64 + "span": 67 }, { "kind": { @@ -3759,7 +3842,7 @@ } ] }, - "span": 65 + "span": 68 } ], "terminator": { @@ -3782,7 +3865,7 @@ } } }, - "span": 65 + "span": 68 } }, { @@ -3813,7 +3896,7 @@ } ] }, - "span": 66 + "span": 69 } ], "terminator": { @@ -3826,7 +3909,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -3854,7 +3937,7 @@ "unwind": "Continue" } }, - "span": 66 + "span": 69 } }, { @@ -3899,9 +3982,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -3915,9 +3998,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 67, + "span": 70, "user_ty": null } }, @@ -3925,7 +4008,7 @@ "unwind": "Continue" } }, - "span": 67 + "span": 70 } }, { @@ -3954,7 +4037,7 @@ } ] }, - "span": 66 + "span": 69 } ], "terminator": { @@ -3977,7 +4060,7 @@ } } }, - "span": 68 + "span": 71 } }, { @@ -4019,7 +4102,7 @@ }, "ty": 16 }, - "span": 69, + "span": 72, "user_ty": null } } @@ -4027,7 +4110,7 @@ } ] }, - "span": 69 + "span": 72 } ], "terminator": { @@ -4052,7 +4135,7 @@ "unwind": "Continue" } }, - "span": 69 + "span": 72 } }, { @@ -4097,9 +4180,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -4113,9 +4196,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 70, + "span": 73, "user_ty": null } }, @@ -4123,7 +4206,7 @@ "unwind": "Continue" } }, - "span": 70 + "span": 73 } }, { @@ -4148,7 +4231,7 @@ } ] }, - "span": 69 + "span": 72 }, { "kind": { @@ -4176,7 +4259,7 @@ } ] }, - "span": 71 + "span": 74 } ], "terminator": { @@ -4189,7 +4272,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -4217,7 +4300,7 @@ "unwind": "Continue" } }, - "span": 71 + "span": 74 } }, { @@ -4246,7 +4329,7 @@ } ] }, - "span": 71 + "span": 74 } ], "terminator": { @@ -4269,7 +4352,7 @@ } } }, - "span": 72 + "span": 75 } }, { @@ -4311,7 +4394,7 @@ }, "ty": 16 }, - "span": 73, + "span": 76, "user_ty": null } } @@ -4319,7 +4402,7 @@ } ] }, - "span": 73 + "span": 76 } ], "terminator": { @@ -4344,7 +4427,7 @@ "unwind": "Continue" } }, - "span": 73 + "span": 76 } }, { @@ -4389,9 +4472,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -4405,9 +4488,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 74, + "span": 77, "user_ty": null } }, @@ -4415,7 +4498,7 @@ "unwind": "Continue" } }, - "span": 74 + "span": 77 } }, { @@ -4440,7 +4523,7 @@ } ] }, - "span": 73 + "span": 76 }, { "kind": { @@ -4468,7 +4551,7 @@ } ] }, - "span": 75 + "span": 78 } ], "terminator": { @@ -4481,7 +4564,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -4509,7 +4592,7 @@ "unwind": "Continue" } }, - "span": 75 + "span": 78 } }, { @@ -4538,7 +4621,7 @@ } ] }, - "span": 75 + "span": 78 } ], "terminator": { @@ -4561,7 +4644,7 @@ } } }, - "span": 76 + "span": 79 } }, { @@ -4603,7 +4686,7 @@ }, "ty": 16 }, - "span": 77, + "span": 80, "user_ty": null } } @@ -4611,7 +4694,7 @@ } ] }, - "span": 77 + "span": 80 } ], "terminator": { @@ -4636,7 +4719,7 @@ "unwind": "Continue" } }, - "span": 77 + "span": 80 } }, { @@ -4681,9 +4764,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -4697,9 +4780,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 78, + "span": 81, "user_ty": null } }, @@ -4707,7 +4790,7 @@ "unwind": "Continue" } }, - "span": 78 + "span": 81 } }, { @@ -4732,7 +4815,7 @@ } ] }, - "span": 77 + "span": 80 }, { "kind": { @@ -4771,7 +4854,7 @@ }, "ty": 16 }, - "span": 79, + "span": 82, "user_ty": null } } @@ -4779,7 +4862,7 @@ } ] }, - "span": 79 + "span": 82 } ], "terminator": { @@ -4804,7 +4887,7 @@ "unwind": "Continue" } }, - "span": 79 + "span": 82 } }, { @@ -4829,7 +4912,7 @@ } ] }, - "span": 79 + "span": 82 }, { "kind": { @@ -4857,7 +4940,7 @@ } ] }, - "span": 80 + "span": 83 } ], "terminator": { @@ -4870,7 +4953,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -4898,7 +4981,7 @@ "unwind": "Continue" } }, - "span": 80 + "span": 83 } }, { @@ -4927,7 +5010,7 @@ } ] }, - "span": 80 + "span": 83 } ], "terminator": { @@ -4950,7 +5033,7 @@ } } }, - "span": 81 + "span": 84 } }, { @@ -4986,7 +5069,7 @@ }, "ty": 16 }, - "span": 83, + "span": 86, "user_ty": null } }, @@ -5011,7 +5094,7 @@ }, "ty": 16 }, - "span": 84, + "span": 87, "user_ty": null } } @@ -5019,7 +5102,7 @@ } ] }, - "span": 85 + "span": 88 } ], "terminator": { @@ -5042,7 +5125,7 @@ } } }, - "span": 82 + "span": 85 } }, { @@ -5087,9 +5170,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -5103,9 +5186,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 86, + "span": 89, "user_ty": null } }, @@ -5113,7 +5196,7 @@ "unwind": "Continue" } }, - "span": 86 + "span": 89 } }, { @@ -5149,7 +5232,7 @@ }, "ty": 16 }, - "span": 88, + "span": 91, "user_ty": null } }, @@ -5174,7 +5257,7 @@ }, "ty": 16 }, - "span": 89, + "span": 92, "user_ty": null } } @@ -5182,7 +5265,7 @@ } ] }, - "span": 90 + "span": 93 } ], "terminator": { @@ -5205,7 +5288,7 @@ } } }, - "span": 87 + "span": 90 } }, { @@ -5250,9 +5333,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -5266,9 +5349,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 91, + "span": 94, "user_ty": null } }, @@ -5276,7 +5359,7 @@ "unwind": "Continue" } }, - "span": 91 + "span": 94 } }, { @@ -5312,7 +5395,7 @@ }, "ty": 16 }, - "span": 93, + "span": 96, "user_ty": null } }, @@ -5337,7 +5420,7 @@ }, "ty": 16 }, - "span": 94, + "span": 97, "user_ty": null } } @@ -5345,7 +5428,7 @@ } ] }, - "span": 95 + "span": 98 } ], "terminator": { @@ -5368,7 +5451,7 @@ } } }, - "span": 92 + "span": 95 } }, { @@ -5413,9 +5496,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -5429,9 +5512,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 96, + "span": 99, "user_ty": null } }, @@ -5439,7 +5522,7 @@ "unwind": "Continue" } }, - "span": 96 + "span": 99 } }, { @@ -5475,7 +5558,7 @@ }, "ty": 16 }, - "span": 98, + "span": 101, "user_ty": null } }, @@ -5500,7 +5583,7 @@ }, "ty": 16 }, - "span": 99, + "span": 102, "user_ty": null } } @@ -5508,7 +5591,7 @@ } ] }, - "span": 100 + "span": 103 } ], "terminator": { @@ -5531,7 +5614,7 @@ } } }, - "span": 97 + "span": 100 } }, { @@ -5576,9 +5659,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -5592,9 +5675,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 101, + "span": 104, "user_ty": null } }, @@ -5602,7 +5685,7 @@ "unwind": "Continue" } }, - "span": 101 + "span": 104 } }, { @@ -5638,7 +5721,7 @@ }, "ty": 16 }, - "span": 103, + "span": 106, "user_ty": null } }, @@ -5663,7 +5746,7 @@ }, "ty": 16 }, - "span": 104, + "span": 107, "user_ty": null } } @@ -5671,7 +5754,7 @@ } ] }, - "span": 105 + "span": 108 } ], "terminator": { @@ -5694,7 +5777,7 @@ } } }, - "span": 102 + "span": 105 } }, { @@ -5739,9 +5822,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -5755,9 +5838,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 106, + "span": 109, "user_ty": null } }, @@ -5765,7 +5848,7 @@ "unwind": "Continue" } }, - "span": 106 + "span": 109 } }, { @@ -5801,7 +5884,7 @@ }, "ty": 16 }, - "span": 108, + "span": 111, "user_ty": null } }, @@ -5826,7 +5909,7 @@ }, "ty": 16 }, - "span": 109, + "span": 112, "user_ty": null } } @@ -5834,7 +5917,7 @@ } ] }, - "span": 110 + "span": 113 } ], "terminator": { @@ -5857,7 +5940,7 @@ } } }, - "span": 107 + "span": 110 } }, { @@ -5902,9 +5985,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -5918,9 +6001,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 111, + "span": 114, "user_ty": null } }, @@ -5928,7 +6011,7 @@ "unwind": "Continue" } }, - "span": 111 + "span": 114 } }, { @@ -5964,16 +6047,16 @@ }, "ty": 16 }, - "span": 113, + "span": 116, "user_ty": null } }, - 27 + 28 ] } ] }, - "span": 114 + "span": 117 }, { "kind": { @@ -6010,9 +6093,9 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 114, + "span": 117, "user_ty": null } } @@ -6020,7 +6103,7 @@ } ] }, - "span": 114 + "span": 117 } ], "terminator": { @@ -6057,7 +6140,7 @@ }, "ty": 16 }, - "span": 112, + "span": 115, "user_ty": null } }, @@ -6082,7 +6165,7 @@ }, "ty": 16 }, - "span": 113, + "span": 116, "user_ty": null } } @@ -6092,7 +6175,7 @@ "unwind": "Continue" } }, - "span": 114 + "span": 117 } }, { @@ -6137,9 +6220,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -6153,9 +6236,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 115, + "span": 118, "user_ty": null } }, @@ -6163,7 +6246,7 @@ "unwind": "Continue" } }, - "span": 115 + "span": 118 } }, { @@ -6199,7 +6282,7 @@ }, "ty": 16 }, - "span": 112, + "span": 115, "user_ty": null } }, @@ -6224,7 +6307,7 @@ }, "ty": 16 }, - "span": 113, + "span": 116, "user_ty": null } } @@ -6232,7 +6315,7 @@ } ] }, - "span": 114 + "span": 117 } ], "terminator": { @@ -6255,7 +6338,7 @@ } } }, - "span": 116 + "span": 119 } }, { @@ -6291,16 +6374,16 @@ }, "ty": 16 }, - "span": 118, + "span": 121, "user_ty": null } }, - 27 + 28 ] } ] }, - "span": 119 + "span": 122 }, { "kind": { @@ -6337,9 +6420,9 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 119, + "span": 122, "user_ty": null } } @@ -6347,7 +6430,7 @@ } ] }, - "span": 119 + "span": 122 } ], "terminator": { @@ -6384,7 +6467,7 @@ }, "ty": 16 }, - "span": 117, + "span": 120, "user_ty": null } }, @@ -6409,7 +6492,7 @@ }, "ty": 16 }, - "span": 118, + "span": 121, "user_ty": null } } @@ -6419,7 +6502,7 @@ "unwind": "Continue" } }, - "span": 119 + "span": 122 } }, { @@ -6464,9 +6547,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -6480,9 +6563,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 120, + "span": 123, "user_ty": null } }, @@ -6490,7 +6573,7 @@ "unwind": "Continue" } }, - "span": 120 + "span": 123 } }, { @@ -6526,7 +6609,7 @@ }, "ty": 16 }, - "span": 117, + "span": 120, "user_ty": null } }, @@ -6551,7 +6634,7 @@ }, "ty": 16 }, - "span": 118, + "span": 121, "user_ty": null } } @@ -6559,7 +6642,7 @@ } ] }, - "span": 119 + "span": 122 } ], "terminator": { @@ -6582,7 +6665,7 @@ } } }, - "span": 121 + "span": 124 } }, { @@ -6618,16 +6701,16 @@ }, "ty": 16 }, - "span": 123, + "span": 126, "user_ty": null } }, - 27 + 28 ] } ] }, - "span": 124 + "span": 127 }, { "kind": { @@ -6664,9 +6747,9 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 124, + "span": 127, "user_ty": null } } @@ -6674,7 +6757,7 @@ } ] }, - "span": 124 + "span": 127 } ], "terminator": { @@ -6711,7 +6794,7 @@ }, "ty": 16 }, - "span": 122, + "span": 125, "user_ty": null } }, @@ -6736,7 +6819,7 @@ }, "ty": 16 }, - "span": 123, + "span": 126, "user_ty": null } } @@ -6746,7 +6829,7 @@ "unwind": "Continue" } }, - "span": 124 + "span": 127 } }, { @@ -6791,9 +6874,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -6807,9 +6890,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 125, + "span": 128, "user_ty": null } }, @@ -6817,7 +6900,7 @@ "unwind": "Continue" } }, - "span": 125 + "span": 128 } }, { @@ -6853,7 +6936,7 @@ }, "ty": 16 }, - "span": 122, + "span": 125, "user_ty": null } }, @@ -6878,7 +6961,7 @@ }, "ty": 16 }, - "span": 123, + "span": 126, "user_ty": null } } @@ -6886,7 +6969,7 @@ } ] }, - "span": 124 + "span": 127 } ], "terminator": { @@ -6909,7 +6992,7 @@ } } }, - "span": 126 + "span": 129 } }, { @@ -6945,16 +7028,16 @@ }, "ty": 16 }, - "span": 128, + "span": 131, "user_ty": null } }, - 27 + 28 ] } ] }, - "span": 129 + "span": 132 }, { "kind": { @@ -6991,9 +7074,9 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 129, + "span": 132, "user_ty": null } } @@ -7001,7 +7084,7 @@ } ] }, - "span": 129 + "span": 132 } ], "terminator": { @@ -7038,7 +7121,7 @@ }, "ty": 16 }, - "span": 127, + "span": 130, "user_ty": null } }, @@ -7063,7 +7146,7 @@ }, "ty": 16 }, - "span": 128, + "span": 131, "user_ty": null } } @@ -7073,7 +7156,7 @@ "unwind": "Continue" } }, - "span": 129 + "span": 132 } }, { @@ -7118,9 +7201,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -7134,9 +7217,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 130, + "span": 133, "user_ty": null } }, @@ -7144,7 +7227,7 @@ "unwind": "Continue" } }, - "span": 130 + "span": 133 } }, { @@ -7180,7 +7263,7 @@ }, "ty": 16 }, - "span": 127, + "span": 130, "user_ty": null } }, @@ -7205,7 +7288,7 @@ }, "ty": 16 }, - "span": 128, + "span": 131, "user_ty": null } } @@ -7213,7 +7296,7 @@ } ] }, - "span": 129 + "span": 132 } ], "terminator": { @@ -7236,7 +7319,7 @@ } } }, - "span": 131 + "span": 134 } }, { @@ -7267,7 +7350,7 @@ } ] }, - "span": 132 + "span": 135 } ], "terminator": { @@ -7280,7 +7363,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -7308,7 +7391,7 @@ "unwind": "Continue" } }, - "span": 132 + "span": 135 } }, { @@ -7353,9 +7436,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -7369,9 +7452,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 133, + "span": 136, "user_ty": null } }, @@ -7379,7 +7462,7 @@ "unwind": "Continue" } }, - "span": 133 + "span": 136 } }, { @@ -7408,7 +7491,7 @@ } ] }, - "span": 132 + "span": 135 }, { "kind": { @@ -7436,7 +7519,7 @@ } ] }, - "span": 134 + "span": 137 } ], "terminator": { @@ -7459,7 +7542,7 @@ } } }, - "span": 134 + "span": 137 } }, { @@ -7490,7 +7573,7 @@ } ] }, - "span": 135 + "span": 138 } ], "terminator": { @@ -7503,7 +7586,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -7531,7 +7614,7 @@ "unwind": "Continue" } }, - "span": 135 + "span": 138 } }, { @@ -7576,9 +7659,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -7592,9 +7675,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 136, + "span": 139, "user_ty": null } }, @@ -7602,7 +7685,7 @@ "unwind": "Continue" } }, - "span": 136 + "span": 139 } }, { @@ -7631,7 +7714,7 @@ } ] }, - "span": 135 + "span": 138 }, { "kind": { @@ -7659,7 +7742,7 @@ } ] }, - "span": 137 + "span": 140 } ], "terminator": { @@ -7682,7 +7765,7 @@ } } }, - "span": 137 + "span": 140 } }, { @@ -7713,7 +7796,7 @@ } ] }, - "span": 138 + "span": 141 } ], "terminator": { @@ -7726,7 +7809,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -7754,7 +7837,7 @@ "unwind": "Continue" } }, - "span": 138 + "span": 141 } }, { @@ -7799,9 +7882,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -7815,9 +7898,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 139, + "span": 142, "user_ty": null } }, @@ -7825,7 +7908,7 @@ "unwind": "Continue" } }, - "span": 139 + "span": 142 } }, { @@ -7854,7 +7937,7 @@ } ] }, - "span": 138 + "span": 141 }, { "kind": { @@ -7882,7 +7965,7 @@ } ] }, - "span": 140 + "span": 143 } ], "terminator": { @@ -7895,7 +7978,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -7923,7 +8006,7 @@ "unwind": "Continue" } }, - "span": 140 + "span": 143 } }, { @@ -7952,7 +8035,7 @@ } ] }, - "span": 140 + "span": 143 }, { "kind": { @@ -7980,7 +8063,7 @@ } ] }, - "span": 141 + "span": 144 } ], "terminator": { @@ -8003,7 +8086,7 @@ } } }, - "span": 141 + "span": 144 } }, { @@ -8034,7 +8117,7 @@ } ] }, - "span": 142 + "span": 145 } ], "terminator": { @@ -8047,7 +8130,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -8075,7 +8158,7 @@ "unwind": "Continue" } }, - "span": 142 + "span": 145 } }, { @@ -8120,9 +8203,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -8136,9 +8219,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 143, + "span": 146, "user_ty": null } }, @@ -8146,7 +8229,7 @@ "unwind": "Continue" } }, - "span": 143 + "span": 146 } }, { @@ -8175,7 +8258,7 @@ } ] }, - "span": 142 + "span": 145 }, { "kind": { @@ -8203,7 +8286,7 @@ } ] }, - "span": 144 + "span": 147 } ], "terminator": { @@ -8226,7 +8309,7 @@ } } }, - "span": 144 + "span": 147 } }, { @@ -8257,7 +8340,7 @@ } ] }, - "span": 145 + "span": 148 } ], "terminator": { @@ -8270,7 +8353,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -8298,7 +8381,7 @@ "unwind": "Continue" } }, - "span": 145 + "span": 148 } }, { @@ -8343,9 +8426,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -8359,9 +8442,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 146, + "span": 149, "user_ty": null } }, @@ -8369,7 +8452,7 @@ "unwind": "Continue" } }, - "span": 146 + "span": 149 } }, { @@ -8398,7 +8481,7 @@ } ] }, - "span": 145 + "span": 148 }, { "kind": { @@ -8426,7 +8509,7 @@ } ] }, - "span": 147 + "span": 150 } ], "terminator": { @@ -8449,7 +8532,7 @@ } } }, - "span": 147 + "span": 150 } }, { @@ -8480,7 +8563,7 @@ } ] }, - "span": 148 + "span": 151 } ], "terminator": { @@ -8493,7 +8576,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -8521,7 +8604,7 @@ "unwind": "Continue" } }, - "span": 148 + "span": 151 } }, { @@ -8566,9 +8649,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -8582,9 +8665,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 149, + "span": 152, "user_ty": null } }, @@ -8592,7 +8675,7 @@ "unwind": "Continue" } }, - "span": 149 + "span": 152 } }, { @@ -8621,7 +8704,7 @@ } ] }, - "span": 148 + "span": 151 }, { "kind": { @@ -8649,7 +8732,7 @@ } ] }, - "span": 150 + "span": 153 } ], "terminator": { @@ -8662,7 +8745,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -8690,7 +8773,7 @@ "unwind": "Continue" } }, - "span": 150 + "span": 153 } }, { @@ -8719,7 +8802,7 @@ } ] }, - "span": 150 + "span": 153 }, { "kind": { @@ -8747,7 +8830,7 @@ } ] }, - "span": 151 + "span": 154 } ], "terminator": { @@ -8770,14 +8853,14 @@ } } }, - "span": 151 + "span": 154 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 152 + "span": 155 } }, { @@ -8822,9 +8905,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -8838,9 +8921,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 153, + "span": 156, "user_ty": null } }, @@ -8848,100 +8931,85 @@ "unwind": "Continue" } }, - "span": 153 + "span": 156 } } ], "locals": [ { "mutability": "Mut", - "span": 154, + "span": 157, "ty": 1 }, { "mutability": "Not", - "span": 155, + "span": 158, "ty": 16 }, { "mutability": "Not", - "span": 156, + "span": 159, "ty": 16 }, { "mutability": "Mut", - "span": 47, + "span": 50, "ty": 16 }, - { - "mutability": "Mut", - "span": 47, - "ty": 28 - }, { "mutability": "Mut", "span": 50, "ty": 29 }, - { - "mutability": "Mut", - "span": 49, - "ty": 16 - }, - { - "mutability": "Mut", - "span": 49, - "ty": 28 - }, { "mutability": "Mut", "span": 53, - "ty": 29 + "ty": 30 }, { "mutability": "Mut", - "span": 55, - "ty": 24 + "span": 52, + "ty": 16 }, { "mutability": "Mut", "span": 52, - "ty": 16 + "ty": 29 }, { "mutability": "Mut", - "span": 52, - "ty": 28 + "span": 56, + "ty": 30 }, { "mutability": "Mut", - "span": 54, - "ty": 16 + "span": 58, + "ty": 25 }, { "mutability": "Mut", - "span": 54, - "ty": 28 + "span": 55, + "ty": 16 }, { "mutability": "Mut", - "span": 57, + "span": 55, "ty": 29 }, { "mutability": "Mut", - "span": 56, + "span": 57, "ty": 16 }, { "mutability": "Mut", - "span": 56, - "ty": 28 + "span": 57, + "ty": 29 }, { "mutability": "Mut", "span": 60, - "ty": 29 + "ty": 30 }, { "mutability": "Mut", @@ -8951,17 +9019,12 @@ { "mutability": "Mut", "span": 59, - "ty": 28 - }, - { - "mutability": "Mut", - "span": 63, "ty": 29 }, { "mutability": "Mut", - "span": 65, - "ty": 24 + "span": 63, + "ty": 30 }, { "mutability": "Mut", @@ -8971,42 +9034,42 @@ { "mutability": "Mut", "span": 62, - "ty": 28 + "ty": 29 }, { "mutability": "Mut", - "span": 64, - "ty": 16 + "span": 66, + "ty": 30 }, { "mutability": "Mut", - "span": 64, - "ty": 28 + "span": 68, + "ty": 25 }, { "mutability": "Mut", - "span": 67, - "ty": 29 + "span": 65, + "ty": 16 }, { "mutability": "Mut", - "span": 66, - "ty": 16 + "span": 65, + "ty": 29 }, { "mutability": "Mut", - "span": 66, - "ty": 28 + "span": 67, + "ty": 16 }, { "mutability": "Mut", - "span": 70, + "span": 67, "ty": 29 }, { "mutability": "Mut", - "span": 71, - "ty": 16 + "span": 70, + "ty": 30 }, { "mutability": "Mut", @@ -9016,242 +9079,242 @@ { "mutability": "Mut", "span": 69, - "ty": 24 + "ty": 29 }, { "mutability": "Mut", - "span": 71, - "ty": 28 + "span": 73, + "ty": 30 }, { "mutability": "Mut", "span": 74, - "ty": 29 + "ty": 16 }, { "mutability": "Mut", - "span": 75, + "span": 72, "ty": 16 }, { "mutability": "Mut", - "span": 73, - "ty": 16 + "span": 72, + "ty": 25 }, { "mutability": "Mut", - "span": 73, - "ty": 24 + "span": 74, + "ty": 29 }, { "mutability": "Mut", - "span": 75, - "ty": 28 + "span": 77, + "ty": 30 }, { "mutability": "Mut", "span": 78, - "ty": 29 + "ty": 16 }, { "mutability": "Mut", - "span": 80, + "span": 76, "ty": 16 }, { "mutability": "Mut", - "span": 77, - "ty": 16 + "span": 76, + "ty": 25 }, { "mutability": "Mut", - "span": 77, - "ty": 24 + "span": 78, + "ty": 29 }, { "mutability": "Mut", - "span": 79, - "ty": 16 + "span": 81, + "ty": 30 }, { "mutability": "Mut", - "span": 79, - "ty": 24 + "span": 83, + "ty": 16 }, { "mutability": "Mut", "span": 80, - "ty": 28 + "ty": 16 }, { "mutability": "Mut", - "span": 86, - "ty": 29 + "span": 80, + "ty": 25 }, { "mutability": "Mut", - "span": 85, + "span": 82, "ty": 16 }, { "mutability": "Mut", - "span": 91, - "ty": 29 + "span": 82, + "ty": 25 }, { "mutability": "Mut", - "span": 90, - "ty": 16 + "span": 83, + "ty": 29 }, { "mutability": "Mut", - "span": 96, - "ty": 29 + "span": 89, + "ty": 30 }, { "mutability": "Mut", - "span": 95, + "span": 88, "ty": 16 }, { "mutability": "Mut", - "span": 101, - "ty": 29 + "span": 94, + "ty": 30 }, { "mutability": "Mut", - "span": 100, + "span": 93, "ty": 16 }, { "mutability": "Mut", - "span": 106, - "ty": 29 + "span": 99, + "ty": 30 }, { "mutability": "Mut", - "span": 105, + "span": 98, "ty": 16 }, { "mutability": "Mut", - "span": 111, - "ty": 29 + "span": 104, + "ty": 30 }, { "mutability": "Mut", - "span": 110, + "span": 103, "ty": 16 }, { "mutability": "Mut", - "span": 115, - "ty": 29 + "span": 109, + "ty": 30 }, { "mutability": "Mut", - "span": 114, + "span": 108, "ty": 16 }, { "mutability": "Mut", "span": 114, - "ty": 27 + "ty": 30 }, { "mutability": "Mut", - "span": 114, - "ty": 24 + "span": 113, + "ty": 16 }, { "mutability": "Mut", - "span": 120, - "ty": 29 + "span": 118, + "ty": 30 }, { "mutability": "Mut", - "span": 119, + "span": 117, "ty": 16 }, { "mutability": "Mut", - "span": 119, - "ty": 27 + "span": 117, + "ty": 28 }, { "mutability": "Mut", - "span": 119, - "ty": 24 + "span": 117, + "ty": 25 }, { "mutability": "Mut", - "span": 125, - "ty": 29 + "span": 123, + "ty": 30 }, { "mutability": "Mut", - "span": 124, + "span": 122, "ty": 16 }, { "mutability": "Mut", - "span": 124, - "ty": 27 + "span": 122, + "ty": 28 }, { "mutability": "Mut", - "span": 124, - "ty": 24 + "span": 122, + "ty": 25 }, { "mutability": "Mut", - "span": 130, - "ty": 29 + "span": 128, + "ty": 30 }, { "mutability": "Mut", - "span": 129, + "span": 127, "ty": 16 }, { "mutability": "Mut", - "span": 129, - "ty": 27 + "span": 127, + "ty": 28 }, { "mutability": "Mut", - "span": 129, - "ty": 24 + "span": 127, + "ty": 25 }, { "mutability": "Mut", "span": 133, - "ty": 29 + "ty": 30 }, { "mutability": "Mut", - "span": 134, - "ty": 24 + "span": 132, + "ty": 16 }, { "mutability": "Mut", "span": 132, - "ty": 16 + "ty": 28 }, { "mutability": "Mut", "span": 132, - "ty": 28 + "ty": 25 }, { "mutability": "Mut", "span": 136, - "ty": 29 + "ty": 30 }, { "mutability": "Mut", "span": 137, - "ty": 24 + "ty": 25 }, { "mutability": "Mut", @@ -9261,67 +9324,67 @@ { "mutability": "Mut", "span": 135, - "ty": 28 + "ty": 29 }, { "mutability": "Mut", "span": 139, - "ty": 29 + "ty": 30 }, { "mutability": "Mut", - "span": 141, - "ty": 24 + "span": 140, + "ty": 25 }, { "mutability": "Mut", - "span": 140, + "span": 138, "ty": 16 }, { "mutability": "Mut", "span": 138, - "ty": 16 + "ty": 29 }, { "mutability": "Mut", - "span": 138, - "ty": 28 + "span": 142, + "ty": 30 }, { "mutability": "Mut", - "span": 140, - "ty": 28 + "span": 144, + "ty": 25 }, { "mutability": "Mut", "span": 143, - "ty": 29 + "ty": 16 }, { "mutability": "Mut", - "span": 144, - "ty": 24 + "span": 141, + "ty": 16 }, { "mutability": "Mut", - "span": 142, - "ty": 16 + "span": 141, + "ty": 29 }, { "mutability": "Mut", - "span": 142, - "ty": 28 + "span": 143, + "ty": 29 }, { "mutability": "Mut", "span": 146, - "ty": 29 + "ty": 30 }, { "mutability": "Mut", "span": 147, - "ty": 24 + "ty": 25 }, { "mutability": "Mut", @@ -9331,45 +9394,65 @@ { "mutability": "Mut", "span": 145, - "ty": 28 + "ty": 29 }, { "mutability": "Mut", "span": 149, - "ty": 29 + "ty": 30 }, { "mutability": "Mut", - "span": 151, - "ty": 24 + "span": 150, + "ty": 25 }, { "mutability": "Mut", - "span": 150, + "span": 148, "ty": 16 }, { "mutability": "Mut", "span": 148, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 152, + "ty": 30 + }, + { + "mutability": "Mut", + "span": 154, + "ty": 25 + }, + { + "mutability": "Mut", + "span": 153, "ty": 16 }, { "mutability": "Mut", - "span": 148, - "ty": 28 + "span": 151, + "ty": 16 }, { "mutability": "Mut", - "span": 150, - "ty": 28 + "span": 151, + "ty": 29 }, { "mutability": "Mut", "span": 153, "ty": 29 + }, + { + "mutability": "Mut", + "span": 156, + "ty": 30 } ], - "span": 157, + "span": 160, "spread_arg": null, "var_debug_info": [ { @@ -9378,7 +9461,7 @@ "name": "x", "source_info": { "scope": 0, - "span": 155 + "span": 158 }, "value": { "Place": { @@ -9393,7 +9476,7 @@ "name": "y", "source_info": { "scope": 0, - "span": 156 + "span": 159 }, "value": { "Place": { @@ -9450,14 +9533,14 @@ }, "ty": 16 }, - "span": 160, + "span": 163, "user_ty": null } } } ] }, - "span": 161 + "span": 164 }, { "kind": { @@ -9488,14 +9571,14 @@ }, "ty": 16 }, - "span": 162, + "span": 165, "user_ty": null } } } ] }, - "span": 163 + "span": 166 } ], "terminator": { @@ -9524,9 +9607,9 @@ "const_": { "id": 41, "kind": "ZeroSized", - "ty": 30 + "ty": 31 }, - "span": 158, + "span": 161, "user_ty": null } }, @@ -9534,40 +9617,40 @@ "unwind": "Continue" } }, - "span": 159 + "span": 162 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 164 + "span": 167 } } ], "locals": [ { "mutability": "Mut", - "span": 165, + "span": 168, "ty": 1 }, { "mutability": "Not", - "span": 159, + "span": 162, "ty": 1 }, { "mutability": "Mut", - "span": 161, + "span": 164, "ty": 16 }, { "mutability": "Mut", - "span": 163, + "span": 166, "ty": 16 } ], - "span": 168, + "span": 171, "spread_arg": null, "var_debug_info": [ { @@ -9576,7 +9659,7 @@ "name": "x", "source_info": { "scope": 1, - "span": 166 + "span": 169 }, "value": { "Const": { @@ -9599,7 +9682,7 @@ }, "ty": 16 }, - "span": 160, + "span": 163, "user_ty": null } } @@ -9610,7 +9693,7 @@ "name": "y", "source_info": { "scope": 2, - "span": 167 + "span": 170 }, "value": { "Const": { @@ -9633,7 +9716,7 @@ }, "ty": 16 }, - "span": 162, + "span": 165, "user_ty": null } } diff --git a/tests/integration/programs/char-trivial.smir.json.expected b/tests/integration/programs/char-trivial.smir.json.expected index a6e9bab..7ddca6f 100644 --- a/tests/integration/programs/char-trivial.smir.json.expected +++ b/tests/integration/programs/char-trivial.smir.json.expected @@ -125,16 +125,16 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 48, + "span": 51, "user_ty": null } } } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -157,14 +157,14 @@ } } }, - "span": 47 + "span": 50 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 50 + "span": 53 } }, { @@ -209,9 +209,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -225,9 +225,9 @@ "const_": { "id": 10, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 51, + "span": 54, "user_ty": null } }, @@ -235,28 +235,28 @@ "unwind": "Continue" } }, - "span": 51 + "span": 54 } } ], "locals": [ { "mutability": "Mut", - "span": 52, + "span": 55, "ty": 1 }, { "mutability": "Mut", - "span": 49, - "ty": 24 + "span": 52, + "ty": 25 }, { "mutability": "Mut", - "span": 51, - "ty": 27 + "span": 54, + "ty": 28 } ], - "span": 54, + "span": 57, "spread_arg": null, "var_debug_info": [ { @@ -265,7 +265,7 @@ "name": "a", "source_info": { "scope": 1, - "span": 53 + "span": 56 }, "value": { "Const": { @@ -286,9 +286,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -814,6 +814,42 @@ "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": { @@ -837,7 +873,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -851,7 +887,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -860,19 +896,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -884,7 +926,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -910,6 +952,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -945,7 +992,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -953,6 +1000,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -990,7 +1052,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1004,9 +1066,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1014,7 +1076,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1030,7 +1092,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1044,9 +1106,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1054,35 +1116,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1091,7 +1153,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1106,7 +1168,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1121,7 +1183,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1130,7 +1192,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1182,9 +1244,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1192,35 +1254,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1259,35 +1321,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1333,7 +1395,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1362,9 +1424,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1374,7 +1436,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1390,14 +1452,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1413,40 +1475,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1469,23 +1531,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1532,37 +1594,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, diff --git a/tests/integration/programs/closure-args.smir.json.expected b/tests/integration/programs/closure-args.smir.json.expected index 6baf4e6..bc1216b 100644 --- a/tests/integration/programs/closure-args.smir.json.expected +++ b/tests/integration/programs/closure-args.smir.json.expected @@ -133,7 +133,7 @@ } ] }, - "span": 47 + "span": 50 }, { "kind": { @@ -167,7 +167,7 @@ }, "ty": 16 }, - "span": 49, + "span": 52, "user_ty": null } }, @@ -192,7 +192,7 @@ }, "ty": 16 }, - "span": 50, + "span": 53, "user_ty": null } } @@ -201,7 +201,7 @@ } ] }, - "span": 48 + "span": 51 } ], "terminator": { @@ -230,9 +230,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 24 + "ty": 25 }, - "span": 47, + "span": 50, "user_ty": null } }, @@ -240,7 +240,7 @@ "unwind": "Continue" } }, - "span": 48 + "span": 51 } }, { @@ -265,14 +265,14 @@ } } }, - "span": 51 + "span": 54 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 52 + "span": 55 } }, { @@ -317,9 +317,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -333,9 +333,9 @@ "const_": { "id": 12, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 53, + "span": 56, "user_ty": null } }, @@ -343,43 +343,43 @@ "unwind": "Continue" } }, - "span": 53 + "span": 56 } } ], "locals": [ { "mutability": "Mut", - "span": 54, + "span": 57, "ty": 1 }, { "mutability": "Not", - "span": 55, - "ty": 27 + "span": 58, + "ty": 28 }, { "mutability": "Mut", - "span": 48, + "span": 51, "ty": 16 }, { "mutability": "Mut", - "span": 47, - "ty": 28 + "span": 50, + "ty": 29 }, { "mutability": "Mut", - "span": 48, - "ty": 29 + "span": 51, + "ty": 30 }, { "mutability": "Mut", - "span": 53, - "ty": 30 + "span": 56, + "ty": 31 } ], - "span": 56, + "span": 59, "spread_arg": null, "var_debug_info": [ { @@ -388,16 +388,16 @@ "name": "sum", "source_info": { "scope": 1, - "span": 55 + "span": 58 }, "value": { "Const": { "const_": { "id": 14, "kind": "ZeroSized", - "ty": 27 + "ty": 28 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -447,7 +447,7 @@ } ] }, - "span": 57 + "span": 60 } ], "terminator": { @@ -460,7 +460,7 @@ { "Field": [ 1, - 31 + 32 ] } ] @@ -488,7 +488,7 @@ "unwind": "Continue" } }, - "span": 57 + "span": 60 } }, { @@ -517,43 +517,43 @@ } ] }, - "span": 57 + "span": 60 } ], "terminator": { "kind": "Return", - "span": 58 + "span": 61 } } ], "locals": [ { "mutability": "Mut", - "span": 59, + "span": 62, "ty": 16 }, { "mutability": "Mut", - "span": 60, - "ty": 28 + "span": 63, + "ty": 29 }, { "mutability": "Not", - "span": 61, + "span": 64, "ty": 16 }, { "mutability": "Not", - "span": 62, + "span": 65, "ty": 16 }, { "mutability": "Mut", - "span": 57, - "ty": 32 + "span": 60, + "ty": 33 } ], - "span": 60, + "span": 63, "spread_arg": null, "var_debug_info": [ { @@ -562,7 +562,7 @@ "name": "x", "source_info": { "scope": 0, - "span": 61 + "span": 64 }, "value": { "Place": { @@ -577,7 +577,7 @@ "name": "y", "source_info": { "scope": 0, - "span": 62 + "span": 65 }, "value": { "Place": { @@ -1107,6 +1107,42 @@ "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": { @@ -1130,7 +1166,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -1144,7 +1180,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -1153,19 +1189,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -1177,7 +1219,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -1203,6 +1245,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -1238,7 +1285,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -1246,6 +1293,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1283,7 +1345,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1297,9 +1359,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1307,7 +1369,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1323,7 +1385,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1337,9 +1399,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1347,35 +1409,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1384,7 +1446,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1399,7 +1461,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1414,7 +1476,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1423,7 +1485,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1475,9 +1537,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1485,35 +1547,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1552,35 +1614,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1626,7 +1688,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1655,9 +1717,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1667,7 +1729,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1683,14 +1745,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1706,40 +1768,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1762,23 +1824,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1825,37 +1887,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, diff --git a/tests/integration/programs/closure-no-args.smir.json.expected b/tests/integration/programs/closure-no-args.smir.json.expected index 9d8e06f..40b91d8 100644 --- a/tests/integration/programs/closure-no-args.smir.json.expected +++ b/tests/integration/programs/closure-no-args.smir.json.expected @@ -127,7 +127,7 @@ } ] }, - "span": 47 + "span": 50 } ], "terminator": { @@ -147,7 +147,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -161,9 +161,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 24 + "ty": 25 }, - "span": 47, + "span": 50, "user_ty": null } }, @@ -171,7 +171,7 @@ "unwind": "Continue" } }, - "span": 48 + "span": 51 } }, { @@ -196,14 +196,14 @@ } } }, - "span": 49 + "span": 52 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 50 + "span": 53 } }, { @@ -248,9 +248,9 @@ } } }, - "ty": 26 + "ty": 27 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -264,9 +264,9 @@ "const_": { "id": 10, "kind": "ZeroSized", - "ty": 25 + "ty": 26 }, - "span": 51, + "span": 54, "user_ty": null } }, @@ -274,38 +274,38 @@ "unwind": "Continue" } }, - "span": 51 + "span": 54 } } ], "locals": [ { "mutability": "Mut", - "span": 52, + "span": 55, "ty": 1 }, { "mutability": "Not", - "span": 53, - "ty": 27 - }, - { - "mutability": "Mut", - "span": 48, + "span": 56, "ty": 28 }, { "mutability": "Mut", - "span": 47, + "span": 51, "ty": 29 }, { "mutability": "Mut", - "span": 51, + "span": 50, "ty": 30 + }, + { + "mutability": "Mut", + "span": 54, + "ty": 31 } ], - "span": 54, + "span": 57, "spread_arg": null, "var_debug_info": [ { @@ -314,16 +314,16 @@ "name": "sum", "source_info": { "scope": 1, - "span": 53 + "span": 56 }, "value": { "Const": { "const_": { "id": 12, "kind": "ZeroSized", - "ty": 27 + "ty": 28 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -374,37 +374,37 @@ } } }, - "ty": 28 + "ty": 29 }, - "span": 56, + "span": 59, "user_ty": null } } } ] }, - "span": 56 + "span": 59 } ], "terminator": { "kind": "Return", - "span": 55 + "span": 58 } } ], "locals": [ { "mutability": "Mut", - "span": 57, - "ty": 28 + "span": 60, + "ty": 29 }, { "mutability": "Mut", - "span": 58, - "ty": 29 + "span": 61, + "ty": 30 } ], - "span": 58, + "span": 61, "spread_arg": null, "var_debug_info": [] } @@ -927,6 +927,42 @@ "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": { @@ -950,7 +986,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -964,7 +1000,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -973,19 +1009,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -997,7 +1039,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -1023,6 +1065,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -1058,7 +1105,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -1066,6 +1113,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1103,7 +1165,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1117,9 +1179,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1127,7 +1189,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1143,7 +1205,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1157,9 +1219,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1167,35 +1229,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1204,7 +1266,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1219,7 +1281,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1234,7 +1296,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1243,7 +1305,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1295,9 +1357,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1305,35 +1367,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1372,35 +1434,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1446,7 +1508,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1475,9 +1537,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1487,7 +1549,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1503,14 +1565,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1526,40 +1588,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1582,23 +1644,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1645,37 +1707,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, diff --git a/tests/integration/programs/const-arithm-simple.smir.json.expected b/tests/integration/programs/const-arithm-simple.smir.json.expected index a5c6988..b62c9e7 100644 --- a/tests/integration/programs/const-arithm-simple.smir.json.expected +++ b/tests/integration/programs/const-arithm-simple.smir.json.expected @@ -127,16 +127,16 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 55, + "span": 58, "user_ty": null } } } ] }, - "span": 56 + "span": 59 }, { "kind": { @@ -169,16 +169,16 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 57, + "span": 60, "user_ty": null } } } ] }, - "span": 58 + "span": 61 } ], "terminator": { @@ -207,9 +207,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 53, + "span": 56, "user_ty": null } }, @@ -217,7 +217,7 @@ "unwind": "Continue" } }, - "span": 54 + "span": 57 } }, { @@ -242,7 +242,7 @@ } } }, - "span": 59 + "span": 62 } }, { @@ -287,9 +287,9 @@ } } }, - "ty": 28 + "ty": 29 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -303,9 +303,9 @@ "const_": { "id": 12, "kind": "ZeroSized", - "ty": 27 + "ty": 28 }, - "span": 60, + "span": 63, "user_ty": null } }, @@ -313,45 +313,45 @@ "unwind": "Continue" } }, - "span": 60 + "span": 63 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 61 + "span": 64 } } ], "locals": [ { "mutability": "Mut", - "span": 62, + "span": 65, "ty": 1 }, { "mutability": "Not", - "span": 63, - "ty": 24 + "span": 66, + "ty": 25 }, { "mutability": "Mut", - "span": 56, - "ty": 25 + "span": 59, + "ty": 26 }, { "mutability": "Mut", - "span": 58, - "ty": 25 + "span": 61, + "ty": 26 }, { "mutability": "Mut", - "span": 60, - "ty": 29 + "span": 63, + "ty": 30 } ], - "span": 66, + "span": 69, "spread_arg": null, "var_debug_info": [ { @@ -360,7 +360,7 @@ "name": "x", "source_info": { "scope": 1, - "span": 64 + "span": 67 }, "value": { "Const": { @@ -385,9 +385,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 55, + "span": 58, "user_ty": null } } @@ -398,7 +398,7 @@ "name": "y", "source_info": { "scope": 2, - "span": 65 + "span": 68 }, "value": { "Const": { @@ -423,9 +423,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 57, + "span": 60, "user_ty": null } } @@ -436,7 +436,7 @@ "name": "z", "source_info": { "scope": 3, - "span": 63 + "span": 66 }, "value": { "Place": { @@ -490,33 +490,33 @@ } ] }, - "span": 48 + "span": 51 } ], "terminator": { "kind": "Return", - "span": 47 + "span": 50 } } ], "locals": [ { "mutability": "Mut", - "span": 49, - "ty": 24 + "span": 52, + "ty": 25 }, { "mutability": "Not", - "span": 50, - "ty": 25 + "span": 53, + "ty": 26 }, { "mutability": "Not", - "span": 51, - "ty": 25 + "span": 54, + "ty": 26 } ], - "span": 52, + "span": 55, "spread_arg": null, "var_debug_info": [ { @@ -525,7 +525,7 @@ "name": "x", "source_info": { "scope": 0, - "span": 50 + "span": 53 }, "value": { "Place": { @@ -540,7 +540,7 @@ "name": "y", "source_info": { "scope": 0, - "span": 51 + "span": 54 }, "value": { "Place": { @@ -1070,6 +1070,42 @@ "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": { @@ -1093,7 +1129,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -1107,7 +1143,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -1116,19 +1152,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -1140,7 +1182,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -1166,6 +1208,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -1201,7 +1248,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -1209,6 +1256,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1246,7 +1308,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1260,9 +1322,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1270,7 +1332,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1286,7 +1348,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1300,9 +1362,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1310,35 +1372,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1347,7 +1409,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1362,7 +1424,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1377,7 +1439,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1386,7 +1448,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1438,9 +1500,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1448,35 +1510,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1515,35 +1577,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1589,7 +1651,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1618,9 +1680,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1630,7 +1692,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1646,14 +1708,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1669,40 +1731,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1725,23 +1787,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1788,37 +1850,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, diff --git a/tests/integration/programs/div.smir.json.expected b/tests/integration/programs/div.smir.json.expected index 7ce57f9..63a74e7 100644 --- a/tests/integration/programs/div.smir.json.expected +++ b/tests/integration/programs/div.smir.json.expected @@ -135,7 +135,7 @@ }, "ty": 16 }, - "span": 49, + "span": 52, "user_ty": null } }, @@ -160,7 +160,7 @@ }, "ty": 16 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -168,7 +168,7 @@ } ] }, - "span": 48 + "span": 51 } ], "terminator": { @@ -203,7 +203,7 @@ }, "ty": 16 }, - "span": 47, + "span": 50, "user_ty": null } } @@ -212,7 +212,7 @@ "unwind": "Continue" } }, - "span": 48 + "span": 51 } }, { @@ -248,7 +248,7 @@ }, "ty": 16 }, - "span": 49, + "span": 52, "user_ty": null } }, @@ -273,7 +273,7 @@ }, "ty": 16 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -281,7 +281,7 @@ } ] }, - "span": 48 + "span": 51 }, { "kind": { @@ -314,7 +314,7 @@ }, "ty": 16 }, - "span": 47, + "span": 50, "user_ty": null } }, @@ -339,7 +339,7 @@ }, "ty": 16 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -347,7 +347,7 @@ } ] }, - "span": 48 + "span": 51 }, { "kind": { @@ -375,7 +375,7 @@ } ] }, - "span": 48 + "span": 51 } ], "terminator": { @@ -412,7 +412,7 @@ }, "ty": 16 }, - "span": 47, + "span": 50, "user_ty": null } }, @@ -437,7 +437,7 @@ }, "ty": 16 }, - "span": 49, + "span": 52, "user_ty": null } } @@ -447,7 +447,7 @@ "unwind": "Continue" } }, - "span": 48 + "span": 51 } }, { @@ -483,7 +483,7 @@ }, "ty": 16 }, - "span": 47, + "span": 50, "user_ty": null } }, @@ -508,7 +508,7 @@ }, "ty": 16 }, - "span": 49, + "span": 52, "user_ty": null } } @@ -516,7 +516,7 @@ } ] }, - "span": 48 + "span": 51 } ], "terminator": { @@ -539,14 +539,14 @@ } } }, - "span": 50 + "span": 53 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 51 + "span": 54 } }, { @@ -591,9 +591,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -607,9 +607,9 @@ "const_": { "id": 14, "kind": "ZeroSized", - "ty": 24 + "ty": 25 }, - "span": 52, + "span": 55, "user_ty": null } }, @@ -617,48 +617,48 @@ "unwind": "Continue" } }, - "span": 52 + "span": 55 } } ], "locals": [ { "mutability": "Mut", - "span": 53, + "span": 56, "ty": 1 }, { "mutability": "Mut", - "span": 48, + "span": 51, "ty": 16 }, { "mutability": "Mut", - "span": 48, - "ty": 26 + "span": 51, + "ty": 27 }, { "mutability": "Mut", - "span": 48, - "ty": 26 + "span": 51, + "ty": 27 }, { "mutability": "Mut", - "span": 48, - "ty": 26 + "span": 51, + "ty": 27 }, { "mutability": "Mut", - "span": 48, - "ty": 26 + "span": 51, + "ty": 27 }, { "mutability": "Mut", - "span": 52, - "ty": 27 + "span": 55, + "ty": 28 } ], - "span": 54, + "span": 57, "spread_arg": null, "var_debug_info": [] } @@ -1181,6 +1181,42 @@ "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": { @@ -1204,7 +1240,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -1218,7 +1254,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -1227,19 +1263,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -1251,7 +1293,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -1277,6 +1319,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -1312,7 +1359,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -1320,6 +1367,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1357,7 +1419,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1371,9 +1433,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1381,7 +1443,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1397,7 +1459,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1411,9 +1473,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1421,35 +1483,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1458,7 +1520,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1473,7 +1535,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1488,7 +1550,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1497,7 +1559,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1549,9 +1611,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1559,35 +1621,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1626,35 +1688,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1700,7 +1762,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1729,9 +1791,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1741,7 +1803,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1757,14 +1819,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1780,40 +1842,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1836,23 +1898,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1899,37 +1961,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, diff --git a/tests/integration/programs/double-ref-deref.smir.json.expected b/tests/integration/programs/double-ref-deref.smir.json.expected index 53d05f1..dbec355 100644 --- a/tests/integration/programs/double-ref-deref.smir.json.expected +++ b/tests/integration/programs/double-ref-deref.smir.json.expected @@ -128,14 +128,14 @@ }, "ty": 16 }, - "span": 48, + "span": 51, "user_ty": null } } } ] }, - "span": 48 + "span": 51 }, { "kind": { @@ -158,7 +158,7 @@ } ] }, - "span": 49 + "span": 52 }, { "kind": { @@ -181,7 +181,7 @@ } ] }, - "span": 50 + "span": 53 }, { "kind": { @@ -200,7 +200,7 @@ } ] }, - "span": 51 + "span": 54 }, { "kind": { @@ -221,7 +221,7 @@ } ] }, - "span": 51 + "span": 54 } ], "terminator": { @@ -244,14 +244,14 @@ } } }, - "span": 47 + "span": 50 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 52 + "span": 55 } }, { @@ -296,9 +296,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -312,9 +312,9 @@ "const_": { "id": 10, "kind": "ZeroSized", - "ty": 24 + "ty": 25 }, - "span": 53, + "span": 56, "user_ty": null } }, @@ -322,48 +322,48 @@ "unwind": "Continue" } }, - "span": 53 + "span": 56 } } ], "locals": [ { "mutability": "Mut", - "span": 54, + "span": 57, "ty": 1 }, { "mutability": "Not", - "span": 55, + "span": 58, "ty": 16 }, { "mutability": "Not", - "span": 56, - "ty": 26 + "span": 59, + "ty": 27 }, { "mutability": "Not", - "span": 57, - "ty": 27 + "span": 60, + "ty": 28 }, { "mutability": "Mut", - "span": 51, + "span": 54, "ty": 16 }, { "mutability": "Mut", - "span": 53, - "ty": 28 + "span": 56, + "ty": 29 }, { "mutability": "Mut", - "span": 57, - "ty": 26 + "span": 60, + "ty": 27 } ], - "span": 58, + "span": 61, "spread_arg": null, "var_debug_info": [ { @@ -372,7 +372,7 @@ "name": "a", "source_info": { "scope": 1, - "span": 55 + "span": 58 }, "value": { "Place": { @@ -387,7 +387,7 @@ "name": "b", "source_info": { "scope": 2, - "span": 56 + "span": 59 }, "value": { "Place": { @@ -402,7 +402,7 @@ "name": "c", "source_info": { "scope": 3, - "span": 57 + "span": 60 }, "value": { "Place": { @@ -932,6 +932,42 @@ "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": { @@ -955,7 +991,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -969,7 +1005,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -978,19 +1014,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -1002,7 +1044,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -1028,6 +1070,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -1063,7 +1110,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -1071,6 +1118,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1108,7 +1170,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1122,9 +1184,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1132,7 +1194,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1148,7 +1210,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1162,9 +1224,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1172,35 +1234,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1209,7 +1271,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1224,7 +1286,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1239,7 +1301,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1248,7 +1310,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1300,9 +1362,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1310,35 +1372,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1377,35 +1439,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1451,7 +1513,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1480,9 +1542,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1492,7 +1554,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1508,14 +1570,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1531,40 +1593,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1587,23 +1649,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1650,37 +1712,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, diff --git a/tests/integration/programs/enum.smir.json.expected b/tests/integration/programs/enum.smir.json.expected index 6bb4000..50ded05 100644 --- a/tests/integration/programs/enum.smir.json.expected +++ b/tests/integration/programs/enum.smir.json.expected @@ -555,6 +555,42 @@ "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": { @@ -578,7 +614,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -592,7 +628,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -601,19 +637,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -625,7 +667,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -651,6 +693,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -686,7 +733,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -694,6 +741,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -731,7 +793,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -745,9 +807,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -755,7 +817,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -771,7 +833,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -785,9 +847,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -795,35 +857,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -832,7 +894,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -847,7 +909,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -862,7 +924,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -871,7 +933,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -923,9 +985,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -933,35 +995,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1000,35 +1062,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1074,7 +1136,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1103,9 +1165,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1115,7 +1177,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1131,14 +1193,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1154,40 +1216,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1210,23 +1272,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1270,28 +1332,28 @@ } ] }, - "span": 48 + "span": 51 } ], "terminator": { "kind": "Return", - "span": 47 + "span": 50 } } ], "locals": [ { "mutability": "Mut", - "span": 49, + "span": 52, "ty": 1 }, { "mutability": "Not", - "span": 50, - "ty": 24 + "span": 53, + "ty": 25 } ], - "span": 51, + "span": 54, "spread_arg": null, "var_debug_info": [ { @@ -1300,7 +1362,7 @@ "name": "a", "source_info": { "scope": 1, - "span": 50 + "span": 53 }, "value": { "Place": { @@ -1354,37 +1416,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, diff --git a/tests/integration/programs/fibonacci.smir.json.expected b/tests/integration/programs/fibonacci.smir.json.expected index b716cd6..309818f 100644 --- a/tests/integration/programs/fibonacci.smir.json.expected +++ b/tests/integration/programs/fibonacci.smir.json.expected @@ -605,6 +605,42 @@ "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": { @@ -628,7 +664,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -642,7 +678,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -651,19 +687,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -675,7 +717,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -701,6 +743,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -736,7 +783,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -744,6 +791,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -781,7 +843,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -795,9 +857,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -805,7 +867,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -821,7 +883,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -835,9 +897,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -845,35 +907,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -882,7 +944,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -897,7 +959,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -912,7 +974,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -921,7 +983,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -973,9 +1035,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -983,35 +1045,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1050,35 +1112,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1124,7 +1186,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1153,9 +1215,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1165,7 +1227,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1181,14 +1243,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1204,40 +1266,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1260,23 +1322,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1323,37 +1385,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, @@ -1395,9 +1478,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 65, + "span": 68, "user_ty": null } } @@ -1411,9 +1494,9 @@ "const_": { "id": 12, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 64, + "span": 67, "user_ty": null } }, @@ -1421,7 +1504,7 @@ "unwind": "Continue" } }, - "span": 66 + "span": 69 } }, { @@ -1446,14 +1529,14 @@ } } }, - "span": 67 + "span": 70 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 68 + "span": 71 } }, { @@ -1498,9 +1581,9 @@ } } }, - "ty": 29 + "ty": 30 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1514,9 +1597,9 @@ "const_": { "id": 14, "kind": "ZeroSized", - "ty": 28 + "ty": 29 }, - "span": 69, + "span": 72, "user_ty": null } }, @@ -1524,28 +1607,28 @@ "unwind": "Continue" } }, - "span": 69 + "span": 72 } } ], "locals": [ { "mutability": "Mut", - "span": 70, + "span": 73, "ty": 1 }, { "mutability": "Not", - "span": 71, - "ty": 25 + "span": 74, + "ty": 26 }, { "mutability": "Mut", - "span": 69, - "ty": 30 + "span": 72, + "ty": 31 } ], - "span": 72, + "span": 75, "spread_arg": null, "var_debug_info": [ { @@ -1554,7 +1637,7 @@ "name": "ans", "source_info": { "scope": 1, - "span": 71 + "span": 74 }, "value": { "Place": { @@ -1606,7 +1689,7 @@ } } }, - "span": 47 + "span": 50 } }, { @@ -1646,9 +1729,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -1656,7 +1739,7 @@ } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -1669,7 +1752,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -1704,9 +1787,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -1716,7 +1799,7 @@ "unwind": "Continue" } }, - "span": 49 + "span": 52 } }, { @@ -1748,16 +1831,16 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 50, + "span": 53, "user_ty": null } } } ] }, - "span": 50 + "span": 53 } ], "terminator": { @@ -1766,7 +1849,7 @@ "target": 9 } }, - "span": 50 + "span": 53 } }, { @@ -1798,16 +1881,16 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 51, + "span": 54, "user_ty": null } } } ] }, - "span": 51 + "span": 54 } ], "terminator": { @@ -1816,7 +1899,7 @@ "target": 9 } }, - "span": 51 + "span": 54 } }, { @@ -1836,7 +1919,7 @@ { "Field": [ 0, - 25 + 26 ] } ] @@ -1845,7 +1928,7 @@ } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -1868,9 +1951,9 @@ "const_": { "id": 12, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 52, + "span": 55, "user_ty": null } }, @@ -1878,7 +1961,7 @@ "unwind": "Continue" } }, - "span": 53 + "span": 56 } }, { @@ -1918,9 +2001,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 54, + "span": 57, "user_ty": null } } @@ -1928,7 +2011,7 @@ } ] }, - "span": 55 + "span": 58 } ], "terminator": { @@ -1941,7 +2024,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -1976,9 +2059,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 54, + "span": 57, "user_ty": null } } @@ -1988,7 +2071,7 @@ "unwind": "Continue" } }, - "span": 55 + "span": 58 } }, { @@ -2008,7 +2091,7 @@ { "Field": [ 0, - 25 + 26 ] } ] @@ -2017,7 +2100,7 @@ } ] }, - "span": 55 + "span": 58 } ], "terminator": { @@ -2040,9 +2123,9 @@ "const_": { "id": 12, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 56, + "span": 59, "user_ty": null } }, @@ -2050,7 +2133,7 @@ "unwind": "Continue" } }, - "span": 57 + "span": 60 } }, { @@ -2081,7 +2164,7 @@ } ] }, - "span": 58 + "span": 61 } ], "terminator": { @@ -2094,7 +2177,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -2122,7 +2205,7 @@ "unwind": "Continue" } }, - "span": 58 + "span": 61 } }, { @@ -2142,7 +2225,7 @@ { "Field": [ 0, - 25 + 26 ] } ] @@ -2151,7 +2234,7 @@ } ] }, - "span": 58 + "span": 61 } ], "terminator": { @@ -2160,65 +2243,65 @@ "target": 9 } }, - "span": 59 + "span": 62 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 60 + "span": 63 } } ], "locals": [ { "mutability": "Mut", - "span": 61, - "ty": 25 + "span": 64, + "ty": 26 }, { "mutability": "Not", - "span": 62, - "ty": 25 + "span": 65, + "ty": 26 }, { "mutability": "Mut", - "span": 53, - "ty": 25 + "span": 56, + "ty": 26 }, { "mutability": "Mut", - "span": 49, - "ty": 25 + "span": 52, + "ty": 26 }, { "mutability": "Mut", - "span": 49, - "ty": 27 + "span": 52, + "ty": 28 }, { "mutability": "Mut", - "span": 57, - "ty": 25 + "span": 60, + "ty": 26 }, { "mutability": "Mut", - "span": 55, - "ty": 25 + "span": 58, + "ty": 26 }, { "mutability": "Mut", - "span": 55, - "ty": 27 + "span": 58, + "ty": 28 }, { "mutability": "Mut", - "span": 58, - "ty": 27 + "span": 61, + "ty": 28 } ], - "span": 63, + "span": 66, "spread_arg": null, "var_debug_info": [ { @@ -2227,7 +2310,7 @@ "name": "n", "source_info": { "scope": 0, - "span": 62 + "span": 65 }, "value": { "Place": { diff --git a/tests/integration/programs/float.smir.json.expected b/tests/integration/programs/float.smir.json.expected index 6466afa..59bb1d5 100644 --- a/tests/integration/programs/float.smir.json.expected +++ b/tests/integration/programs/float.smir.json.expected @@ -647,6 +647,42 @@ "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": { @@ -670,7 +706,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -684,7 +720,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -693,19 +729,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -717,7 +759,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -743,6 +785,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -778,7 +825,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -786,6 +833,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -823,7 +885,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -837,9 +899,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -847,7 +909,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -863,7 +925,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -877,9 +939,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -887,35 +949,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -924,7 +986,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -939,7 +1001,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -954,7 +1016,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -963,7 +1025,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1015,9 +1077,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1025,35 +1087,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1092,35 +1154,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1166,7 +1228,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1195,9 +1257,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1207,7 +1269,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1223,14 +1285,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1246,40 +1308,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1302,23 +1364,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1365,37 +1427,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, @@ -1441,16 +1524,16 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 48, + "span": 51, "user_ty": null } } } ] }, - "span": 49 + "span": 52 }, { "kind": { @@ -1479,16 +1562,16 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 50, + "span": 53, "user_ty": null } } } ] }, - "span": 51 + "span": 54 }, { "kind": { @@ -1516,7 +1599,7 @@ } ] }, - "span": 52 + "span": 55 }, { "kind": { @@ -1553,9 +1636,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 53, + "span": 56, "user_ty": null } } @@ -1563,7 +1646,7 @@ } ] }, - "span": 47 + "span": 50 } ], "terminator": { @@ -1586,7 +1669,7 @@ } } }, - "span": 47 + "span": 50 } }, { @@ -1622,16 +1705,16 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 55, + "span": 58, "user_ty": null } } } ] }, - "span": 56 + "span": 59 }, { "kind": { @@ -1664,16 +1747,16 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 57, + "span": 60, "user_ty": null } } } ] }, - "span": 58 + "span": 61 }, { "kind": { @@ -1701,7 +1784,7 @@ } ] }, - "span": 59 + "span": 62 }, { "kind": { @@ -1742,9 +1825,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 60, + "span": 63, "user_ty": null } } @@ -1752,7 +1835,7 @@ } ] }, - "span": 54 + "span": 57 } ], "terminator": { @@ -1775,7 +1858,7 @@ } } }, - "span": 54 + "span": 57 } }, { @@ -1820,9 +1903,9 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1836,9 +1919,9 @@ "const_": { "id": 15, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 61, + "span": 64, "user_ty": null } }, @@ -1846,14 +1929,14 @@ "unwind": "Continue" } }, - "span": 61 + "span": 64 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 62 + "span": 65 } }, { @@ -1898,9 +1981,9 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1914,9 +1997,9 @@ "const_": { "id": 15, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 63, + "span": 66, "user_ty": null } }, @@ -1924,68 +2007,68 @@ "unwind": "Continue" } }, - "span": 63 + "span": 66 } } ], "locals": [ { "mutability": "Mut", - "span": 64, + "span": 67, "ty": 1 }, { "mutability": "Mut", - "span": 47, - "ty": 28 + "span": 50, + "ty": 29 }, { "mutability": "Mut", - "span": 52, - "ty": 24 + "span": 55, + "ty": 25 }, { "mutability": "Mut", - "span": 49, - "ty": 24 + "span": 52, + "ty": 25 }, { "mutability": "Mut", - "span": 51, - "ty": 24 + "span": 54, + "ty": 25 }, { "mutability": "Mut", - "span": 61, - "ty": 29 + "span": 64, + "ty": 30 }, { "mutability": "Mut", - "span": 54, - "ty": 28 + "span": 57, + "ty": 29 }, { "mutability": "Mut", - "span": 59, - "ty": 25 + "span": 62, + "ty": 26 }, { "mutability": "Mut", - "span": 56, - "ty": 25 + "span": 59, + "ty": 26 }, { "mutability": "Mut", - "span": 58, - "ty": 25 + "span": 61, + "ty": 26 }, { "mutability": "Mut", - "span": 63, - "ty": 29 + "span": 66, + "ty": 30 } ], - "span": 69, + "span": 72, "spread_arg": null, "var_debug_info": [ { @@ -1994,7 +2077,7 @@ "name": "a", "source_info": { "scope": 1, - "span": 65 + "span": 68 }, "value": { "Const": { @@ -2015,9 +2098,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -2028,7 +2111,7 @@ "name": "b", "source_info": { "scope": 2, - "span": 66 + "span": 69 }, "value": { "Const": { @@ -2049,9 +2132,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 50, + "span": 53, "user_ty": null } } @@ -2062,7 +2145,7 @@ "name": "c", "source_info": { "scope": 3, - "span": 67 + "span": 70 }, "value": { "Const": { @@ -2087,9 +2170,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 55, + "span": 58, "user_ty": null } } @@ -2100,7 +2183,7 @@ "name": "d", "source_info": { "scope": 4, - "span": 68 + "span": 71 }, "value": { "Const": { @@ -2125,9 +2208,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 57, + "span": 60, "user_ty": null } } diff --git a/tests/integration/programs/modulo.smir.json.expected b/tests/integration/programs/modulo.smir.json.expected index 145f9b9..b7904ca 100644 --- a/tests/integration/programs/modulo.smir.json.expected +++ b/tests/integration/programs/modulo.smir.json.expected @@ -604,6 +604,42 @@ "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": { @@ -627,7 +663,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -641,7 +677,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -650,19 +686,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -674,7 +716,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -700,6 +742,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -735,7 +782,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -743,6 +790,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -780,7 +842,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -794,9 +856,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -804,7 +866,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -820,7 +882,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -834,9 +896,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -844,35 +906,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -881,7 +943,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -896,7 +958,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -911,7 +973,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -920,7 +982,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -972,9 +1034,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -982,35 +1044,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1049,35 +1111,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1123,7 +1185,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1152,9 +1214,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1164,7 +1226,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1180,14 +1242,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1203,40 +1265,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1259,23 +1321,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1322,37 +1384,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, @@ -1402,7 +1485,7 @@ }, "ty": 16 }, - "span": 49, + "span": 52, "user_ty": null } }, @@ -1427,7 +1510,7 @@ }, "ty": 16 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -1435,7 +1518,7 @@ } ] }, - "span": 48 + "span": 51 } ], "terminator": { @@ -1470,7 +1553,7 @@ }, "ty": 16 }, - "span": 47, + "span": 50, "user_ty": null } } @@ -1479,7 +1562,7 @@ "unwind": "Continue" } }, - "span": 48 + "span": 51 } }, { @@ -1515,7 +1598,7 @@ }, "ty": 16 }, - "span": 49, + "span": 52, "user_ty": null } }, @@ -1540,7 +1623,7 @@ }, "ty": 16 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -1548,7 +1631,7 @@ } ] }, - "span": 48 + "span": 51 }, { "kind": { @@ -1581,7 +1664,7 @@ }, "ty": 16 }, - "span": 47, + "span": 50, "user_ty": null } }, @@ -1606,7 +1689,7 @@ }, "ty": 16 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -1614,7 +1697,7 @@ } ] }, - "span": 48 + "span": 51 }, { "kind": { @@ -1642,7 +1725,7 @@ } ] }, - "span": 48 + "span": 51 } ], "terminator": { @@ -1679,7 +1762,7 @@ }, "ty": 16 }, - "span": 47, + "span": 50, "user_ty": null } }, @@ -1704,7 +1787,7 @@ }, "ty": 16 }, - "span": 49, + "span": 52, "user_ty": null } } @@ -1714,7 +1797,7 @@ "unwind": "Continue" } }, - "span": 48 + "span": 51 } }, { @@ -1750,7 +1833,7 @@ }, "ty": 16 }, - "span": 47, + "span": 50, "user_ty": null } }, @@ -1775,7 +1858,7 @@ }, "ty": 16 }, - "span": 49, + "span": 52, "user_ty": null } } @@ -1783,7 +1866,7 @@ } ] }, - "span": 48 + "span": 51 } ], "terminator": { @@ -1806,14 +1889,14 @@ } } }, - "span": 50 + "span": 53 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 51 + "span": 54 } }, { @@ -1858,9 +1941,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1874,9 +1957,9 @@ "const_": { "id": 14, "kind": "ZeroSized", - "ty": 24 + "ty": 25 }, - "span": 52, + "span": 55, "user_ty": null } }, @@ -1884,48 +1967,48 @@ "unwind": "Continue" } }, - "span": 52 + "span": 55 } } ], "locals": [ { "mutability": "Mut", - "span": 53, + "span": 56, "ty": 1 }, { "mutability": "Mut", - "span": 48, + "span": 51, "ty": 16 }, { "mutability": "Mut", - "span": 48, - "ty": 26 + "span": 51, + "ty": 27 }, { "mutability": "Mut", - "span": 48, - "ty": 26 + "span": 51, + "ty": 27 }, { "mutability": "Mut", - "span": 48, - "ty": 26 + "span": 51, + "ty": 27 }, { "mutability": "Mut", - "span": 48, - "ty": 26 + "span": 51, + "ty": 27 }, { "mutability": "Mut", - "span": 52, - "ty": 27 + "span": 55, + "ty": 28 } ], - "span": 54, + "span": 57, "spread_arg": null, "var_debug_info": [] } diff --git a/tests/integration/programs/mutual_recursion.smir.json.expected b/tests/integration/programs/mutual_recursion.smir.json.expected index 33812a9..c6c9511 100644 --- a/tests/integration/programs/mutual_recursion.smir.json.expected +++ b/tests/integration/programs/mutual_recursion.smir.json.expected @@ -134,9 +134,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 70, + "span": 73, "user_ty": null } } @@ -150,9 +150,9 @@ "const_": { "id": 13, "kind": "ZeroSized", - "ty": 28 + "ty": 29 }, - "span": 69, + "span": 72, "user_ty": null } }, @@ -160,7 +160,7 @@ "unwind": "Continue" } }, - "span": 71 + "span": 74 } }, { @@ -185,14 +185,14 @@ } } }, - "span": 72 + "span": 75 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 73 + "span": 76 } }, { @@ -237,9 +237,9 @@ } } }, - "ty": 30 + "ty": 31 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -253,9 +253,9 @@ "const_": { "id": 15, "kind": "ZeroSized", - "ty": 29 + "ty": 30 }, - "span": 74, + "span": 77, "user_ty": null } }, @@ -263,28 +263,28 @@ "unwind": "Continue" } }, - "span": 74 + "span": 77 } } ], "locals": [ { "mutability": "Mut", - "span": 75, + "span": 78, "ty": 1 }, { "mutability": "Not", - "span": 76, - "ty": 24 + "span": 79, + "ty": 25 }, { "mutability": "Mut", - "span": 74, - "ty": 31 + "span": 77, + "ty": 32 } ], - "span": 77, + "span": 80, "spread_arg": null, "var_debug_info": [ { @@ -293,7 +293,7 @@ "name": "ans", "source_info": { "scope": 1, - "span": 76 + "span": 79 }, "value": { "Place": { @@ -341,7 +341,7 @@ } } }, - "span": 58 + "span": 61 } }, { @@ -370,16 +370,16 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 60, + "span": 63, "user_ty": null } } } ] }, - "span": 60 + "span": 63 } ], "terminator": { @@ -388,7 +388,7 @@ "target": 4 } }, - "span": 59 + "span": 62 } }, { @@ -428,9 +428,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 61, + "span": 64, "user_ty": null } } @@ -438,7 +438,7 @@ } ] }, - "span": 62 + "span": 65 } ], "terminator": { @@ -451,7 +451,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -486,9 +486,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 61, + "span": 64, "user_ty": null } } @@ -498,7 +498,7 @@ "unwind": "Continue" } }, - "span": 62 + "span": 65 } }, { @@ -518,7 +518,7 @@ { "Field": [ 0, - 25 + 26 ] } ] @@ -527,7 +527,7 @@ } ] }, - "span": 62 + "span": 65 } ], "terminator": { @@ -550,9 +550,9 @@ "const_": { "id": 13, "kind": "ZeroSized", - "ty": 28 + "ty": 29 }, - "span": 63, + "span": 66, "user_ty": null } }, @@ -560,40 +560,40 @@ "unwind": "Continue" } }, - "span": 64 + "span": 67 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 65 + "span": 68 } } ], "locals": [ { "mutability": "Mut", - "span": 66, - "ty": 24 + "span": 69, + "ty": 25 }, { "mutability": "Not", - "span": 67, - "ty": 25 + "span": 70, + "ty": 26 }, { "mutability": "Mut", - "span": 62, - "ty": 25 + "span": 65, + "ty": 26 }, { "mutability": "Mut", - "span": 62, - "ty": 27 + "span": 65, + "ty": 28 } ], - "span": 68, + "span": 71, "spread_arg": null, "var_debug_info": [ { @@ -602,7 +602,7 @@ "name": "n", "source_info": { "scope": 0, - "span": 67 + "span": 70 }, "value": { "Place": { @@ -650,7 +650,7 @@ } } }, - "span": 47 + "span": 50 } }, { @@ -679,16 +679,16 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 49, + "span": 52, "user_ty": null } } } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -697,7 +697,7 @@ "target": 4 } }, - "span": 48 + "span": 51 } }, { @@ -737,9 +737,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 50, + "span": 53, "user_ty": null } } @@ -747,7 +747,7 @@ } ] }, - "span": 51 + "span": 54 } ], "terminator": { @@ -760,7 +760,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -795,9 +795,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 50, + "span": 53, "user_ty": null } } @@ -807,7 +807,7 @@ "unwind": "Continue" } }, - "span": 51 + "span": 54 } }, { @@ -827,7 +827,7 @@ { "Field": [ 0, - 25 + 26 ] } ] @@ -836,7 +836,7 @@ } ] }, - "span": 51 + "span": 54 } ], "terminator": { @@ -859,9 +859,9 @@ "const_": { "id": 11, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 52, + "span": 55, "user_ty": null } }, @@ -869,40 +869,40 @@ "unwind": "Continue" } }, - "span": 53 + "span": 56 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 54 + "span": 57 } } ], "locals": [ { "mutability": "Mut", - "span": 55, - "ty": 24 + "span": 58, + "ty": 25 }, { "mutability": "Not", - "span": 56, - "ty": 25 + "span": 59, + "ty": 26 }, { "mutability": "Mut", - "span": 51, - "ty": 25 + "span": 54, + "ty": 26 }, { "mutability": "Mut", - "span": 51, - "ty": 27 + "span": 54, + "ty": 28 } ], - "span": 57, + "span": 60, "spread_arg": null, "var_debug_info": [ { @@ -911,7 +911,7 @@ "name": "n", "source_info": { "scope": 0, - "span": 56 + "span": 59 }, "value": { "Place": { @@ -1441,6 +1441,42 @@ "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": { @@ -1464,7 +1500,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -1478,7 +1514,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -1487,19 +1523,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -1511,7 +1553,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -1537,6 +1579,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -1572,7 +1619,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -1580,6 +1627,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1617,7 +1679,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1631,9 +1693,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1641,7 +1703,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1657,7 +1719,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1671,9 +1733,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1681,35 +1743,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1718,7 +1780,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1733,7 +1795,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1748,7 +1810,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1757,7 +1819,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1809,9 +1871,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1819,35 +1881,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1886,35 +1948,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1960,7 +2022,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1989,9 +2051,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -2001,7 +2063,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -2017,14 +2079,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -2040,40 +2102,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -2096,23 +2158,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -2159,37 +2221,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, diff --git a/tests/integration/programs/option-construction.smir.json.expected b/tests/integration/programs/option-construction.smir.json.expected index 7f7aa4a..4c91367 100644 --- a/tests/integration/programs/option-construction.smir.json.expected +++ b/tests/integration/programs/option-construction.smir.json.expected @@ -78,7 +78,7 @@ 1, [ { - "Type": 25 + "Type": 26 } ], null, @@ -105,9 +105,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 59, + "span": 62, "user_ty": null } } @@ -116,7 +116,7 @@ } ] }, - "span": 60 + "span": 63 }, { "kind": { @@ -133,7 +133,7 @@ 0, [ { - "Type": 25 + "Type": 26 } ], null, @@ -145,7 +145,7 @@ } ] }, - "span": 61 + "span": 64 } ], "terminator": { @@ -168,9 +168,9 @@ "const_": { "id": 10, "kind": "ZeroSized", - "ty": 28 + "ty": 29 }, - "span": 57, + "span": 60, "user_ty": null } }, @@ -178,40 +178,40 @@ "unwind": "Continue" } }, - "span": 58 + "span": 61 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 62 + "span": 65 } } ], "locals": [ { "mutability": "Mut", - "span": 63, + "span": 66, "ty": 1 }, { "mutability": "Not", - "span": 64, - "ty": 26 + "span": 67, + "ty": 27 }, { "mutability": "Not", - "span": 65, - "ty": 26 + "span": 68, + "ty": 27 }, { "mutability": "Not", - "span": 66, - "ty": 25 + "span": 69, + "ty": 26 } ], - "span": 67, + "span": 70, "spread_arg": null, "var_debug_info": [ { @@ -220,7 +220,7 @@ "name": "a", "source_info": { "scope": 1, - "span": 64 + "span": 67 }, "value": { "Place": { @@ -235,7 +235,7 @@ "name": "b", "source_info": { "scope": 2, - "span": 65 + "span": 68 }, "value": { "Place": { @@ -250,7 +250,7 @@ "name": "c", "source_info": { "scope": 3, - "span": 66 + "span": 69 }, "value": { "Place": { @@ -780,6 +780,42 @@ "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": { @@ -803,7 +839,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -817,7 +853,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -826,19 +862,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -850,7 +892,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -876,6 +918,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -911,7 +958,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -919,6 +966,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -956,7 +1018,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -970,9 +1032,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -980,7 +1042,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -996,7 +1058,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1010,9 +1072,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1020,35 +1082,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1057,7 +1119,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1072,7 +1134,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1087,7 +1149,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1096,7 +1158,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1148,9 +1210,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1158,35 +1220,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1225,35 +1287,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1299,7 +1361,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1328,9 +1390,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1340,7 +1402,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1356,14 +1418,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1379,40 +1441,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1435,23 +1497,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1487,7 +1549,7 @@ } ] }, - "span": 43 + "span": 46 } ], "terminator": { @@ -1514,14 +1576,14 @@ } } }, - "span": 42 + "span": 45 } }, { "statements": [], "terminator": { "kind": "Unreachable", - "span": 43 + "span": 46 } }, { @@ -1539,9 +1601,9 @@ "const_": { "id": 8, "kind": "ZeroSized", - "ty": 24 + "ty": 25 }, - "span": 44, + "span": 47, "user_ty": null } }, @@ -1549,7 +1611,7 @@ "unwind": "Continue" } }, - "span": 45 + "span": 48 } }, { @@ -1572,7 +1634,7 @@ { "Field": [ 0, - 25 + 26 ] } ] @@ -1581,38 +1643,38 @@ } ] }, - "span": 47 + "span": 50 } ], "terminator": { "kind": "Return", - "span": 46 + "span": 49 } } ], "locals": [ { "mutability": "Mut", - "span": 48, - "ty": 25 + "span": 51, + "ty": 26 }, { "mutability": "Not", - "span": 49, - "ty": 26 + "span": 52, + "ty": 27 }, { "mutability": "Mut", - "span": 50, + "span": 53, "ty": 6 }, { "mutability": "Mut", - "span": 45, - "ty": 27 + "span": 48, + "ty": 28 } ], - "span": 51, + "span": 54, "spread_arg": null, "var_debug_info": [ { @@ -1621,7 +1683,7 @@ "name": "self", "source_info": { "scope": 0, - "span": 49 + "span": 52 }, "value": { "Place": { @@ -1636,7 +1698,7 @@ "name": "val", "source_info": { "scope": 1, - "span": 47 + "span": 50 }, "value": { "Place": { @@ -1690,37 +1752,58 @@ }, "ty": 17 }, - "span": 53, + "span": 56, "user_ty": null } } } ] }, - "span": 53 + "span": 56 } ], "terminator": { "kind": "Return", - "span": 52 + "span": 55 } } ], "locals": [ { "mutability": "Mut", - "span": 54, + "span": 57, "ty": 17 }, { "mutability": "Not", - "span": 55, + "span": 58, "ty": 1 } ], - "span": 56, + "span": 59, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 58 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 6, diff --git a/tests/integration/programs/primitive-type-bounds.smir.json.expected b/tests/integration/programs/primitive-type-bounds.smir.json.expected index 86bf1a4..4d1cc99 100644 --- a/tests/integration/programs/primitive-type-bounds.smir.json.expected +++ b/tests/integration/programs/primitive-type-bounds.smir.json.expected @@ -125,9 +125,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 47, + "span": 50, "user_ty": null } }, @@ -150,9 +150,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -160,7 +160,7 @@ } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -173,7 +173,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -202,9 +202,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 47, + "span": 50, "user_ty": null } }, @@ -227,9 +227,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -239,7 +239,7 @@ "unwind": "Continue" } }, - "span": 49 + "span": 52 } }, { @@ -259,7 +259,7 @@ { "Field": [ 0, - 25 + 26 ] } ] @@ -268,7 +268,7 @@ } ] }, - "span": 49 + "span": 52 }, { "kind": { @@ -297,16 +297,16 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 51, + "span": 54, "user_ty": null } } } ] }, - "span": 52 + "span": 55 }, { "kind": { @@ -334,7 +334,7 @@ } ] }, - "span": 50 + "span": 53 } ], "terminator": { @@ -357,14 +357,14 @@ } } }, - "span": 50 + "span": 53 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 53 + "span": 56 } }, { @@ -409,9 +409,9 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -425,9 +425,9 @@ "const_": { "id": 12, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 54, + "span": 57, "user_ty": null } }, @@ -435,43 +435,43 @@ "unwind": "Continue" } }, - "span": 54 + "span": 57 } } ], "locals": [ { "mutability": "Mut", - "span": 55, + "span": 58, "ty": 1 }, { "mutability": "Not", - "span": 56, - "ty": 25 + "span": 59, + "ty": 26 }, { "mutability": "Mut", - "span": 49, - "ty": 28 + "span": 52, + "ty": 29 }, { "mutability": "Mut", - "span": 50, - "ty": 24 + "span": 53, + "ty": 25 }, { "mutability": "Mut", - "span": 52, - "ty": 25 + "span": 55, + "ty": 26 }, { "mutability": "Mut", - "span": 54, - "ty": 29 + "span": 57, + "ty": 30 } ], - "span": 58, + "span": 61, "spread_arg": null, "var_debug_info": [ { @@ -480,7 +480,7 @@ "name": "a", "source_info": { "scope": 1, - "span": 57 + "span": 60 }, "value": { "Const": { @@ -501,9 +501,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 51, + "span": 54, "user_ty": null } } @@ -514,7 +514,7 @@ "name": "b", "source_info": { "scope": 2, - "span": 56 + "span": 59 }, "value": { "Place": { @@ -1044,6 +1044,42 @@ "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": { @@ -1067,7 +1103,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -1081,7 +1117,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -1090,19 +1126,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -1114,7 +1156,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -1140,6 +1182,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -1175,7 +1222,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -1183,6 +1230,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1220,7 +1282,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1234,9 +1296,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1244,7 +1306,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1260,7 +1322,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1274,9 +1336,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1284,35 +1346,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1321,7 +1383,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1336,7 +1398,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1351,7 +1413,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1360,7 +1422,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1412,9 +1474,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1422,35 +1484,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1489,35 +1551,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1563,7 +1625,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1592,9 +1654,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1604,7 +1666,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1620,14 +1682,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1643,40 +1705,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1699,23 +1761,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1762,37 +1824,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, diff --git a/tests/integration/programs/recursion-simple-match.smir.json.expected b/tests/integration/programs/recursion-simple-match.smir.json.expected index d6f6751..b419e3e 100644 --- a/tests/integration/programs/recursion-simple-match.smir.json.expected +++ b/tests/integration/programs/recursion-simple-match.smir.json.expected @@ -124,7 +124,7 @@ } } }, - "span": 47 + "span": 50 } }, { @@ -164,9 +164,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -174,7 +174,7 @@ } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -187,7 +187,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -222,9 +222,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -234,7 +234,7 @@ "unwind": "Continue" } }, - "span": 49 + "span": 52 } }, { @@ -266,16 +266,16 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 50, + "span": 53, "user_ty": null } } } ] }, - "span": 50 + "span": 53 } ], "terminator": { @@ -284,7 +284,7 @@ "target": 6 } }, - "span": 50 + "span": 53 } }, { @@ -304,7 +304,7 @@ { "Field": [ 0, - 25 + 26 ] } ] @@ -313,7 +313,7 @@ } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -336,9 +336,9 @@ "const_": { "id": 11, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 51, + "span": 54, "user_ty": null } }, @@ -346,7 +346,7 @@ "unwind": "Continue" } }, - "span": 52 + "span": 55 } }, { @@ -377,7 +377,7 @@ } ] }, - "span": 53 + "span": 56 } ], "terminator": { @@ -390,7 +390,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -418,7 +418,7 @@ "unwind": "Continue" } }, - "span": 53 + "span": 56 } }, { @@ -438,7 +438,7 @@ { "Field": [ 0, - 25 + 26 ] } ] @@ -447,7 +447,7 @@ } ] }, - "span": 53 + "span": 56 } ], "terminator": { @@ -456,50 +456,50 @@ "target": 6 } }, - "span": 54 + "span": 57 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 55 + "span": 58 } } ], "locals": [ { "mutability": "Mut", - "span": 56, - "ty": 25 + "span": 59, + "ty": 26 }, { "mutability": "Not", - "span": 57, - "ty": 25 + "span": 60, + "ty": 26 }, { "mutability": "Mut", - "span": 52, - "ty": 25 + "span": 55, + "ty": 26 }, { "mutability": "Mut", - "span": 49, - "ty": 25 + "span": 52, + "ty": 26 }, { "mutability": "Mut", - "span": 49, - "ty": 27 + "span": 52, + "ty": 28 }, { "mutability": "Mut", - "span": 53, - "ty": 27 + "span": 56, + "ty": 28 } ], - "span": 58, + "span": 61, "spread_arg": null, "var_debug_info": [ { @@ -508,7 +508,7 @@ "name": "n", "source_info": { "scope": 0, - "span": 57 + "span": 60 }, "value": { "Place": { @@ -559,9 +559,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 60, + "span": 63, "user_ty": null } } @@ -575,9 +575,9 @@ "const_": { "id": 11, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 59, + "span": 62, "user_ty": null } }, @@ -585,7 +585,7 @@ "unwind": "Continue" } }, - "span": 61 + "span": 64 } }, { @@ -610,14 +610,14 @@ } } }, - "span": 62 + "span": 65 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 63 + "span": 66 } }, { @@ -662,9 +662,9 @@ } } }, - "ty": 29 + "ty": 30 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -678,9 +678,9 @@ "const_": { "id": 13, "kind": "ZeroSized", - "ty": 28 + "ty": 29 }, - "span": 64, + "span": 67, "user_ty": null } }, @@ -688,28 +688,28 @@ "unwind": "Continue" } }, - "span": 64 + "span": 67 } } ], "locals": [ { "mutability": "Mut", - "span": 65, + "span": 68, "ty": 1 }, { "mutability": "Not", - "span": 66, - "ty": 25 + "span": 69, + "ty": 26 }, { "mutability": "Mut", - "span": 64, - "ty": 30 + "span": 67, + "ty": 31 } ], - "span": 67, + "span": 70, "spread_arg": null, "var_debug_info": [ { @@ -718,7 +718,7 @@ "name": "ans", "source_info": { "scope": 1, - "span": 66 + "span": 69 }, "value": { "Place": { @@ -1248,6 +1248,42 @@ "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": { @@ -1271,7 +1307,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -1285,7 +1321,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -1294,19 +1330,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -1318,7 +1360,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -1344,6 +1386,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -1379,7 +1426,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -1387,6 +1434,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1424,7 +1486,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1438,9 +1500,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1448,7 +1510,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1464,7 +1526,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1478,9 +1540,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1488,35 +1550,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1525,7 +1587,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1540,7 +1602,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1555,7 +1617,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1564,7 +1626,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1616,9 +1678,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1626,35 +1688,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1693,35 +1755,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1767,7 +1829,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1796,9 +1858,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1808,7 +1870,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1824,14 +1886,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1847,40 +1909,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1903,23 +1965,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1966,37 +2028,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, diff --git a/tests/integration/programs/recursion-simple.smir.json.expected b/tests/integration/programs/recursion-simple.smir.json.expected index ebc6d5f..0537a71 100644 --- a/tests/integration/programs/recursion-simple.smir.json.expected +++ b/tests/integration/programs/recursion-simple.smir.json.expected @@ -124,7 +124,7 @@ } } }, - "span": 47 + "span": 50 } }, { @@ -156,16 +156,16 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 49, + "span": 52, "user_ty": null } } } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -174,7 +174,7 @@ "target": 6 } }, - "span": 48 + "span": 51 } }, { @@ -214,9 +214,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 50, + "span": 53, "user_ty": null } } @@ -224,7 +224,7 @@ } ] }, - "span": 51 + "span": 54 } ], "terminator": { @@ -237,7 +237,7 @@ { "Field": [ 1, - 25 + 26 ] } ] @@ -272,9 +272,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 50, + "span": 53, "user_ty": null } } @@ -284,7 +284,7 @@ "unwind": "Continue" } }, - "span": 51 + "span": 54 } }, { @@ -304,7 +304,7 @@ { "Field": [ 0, - 24 + 25 ] } ] @@ -313,7 +313,7 @@ } ] }, - "span": 51 + "span": 54 } ], "terminator": { @@ -336,9 +336,9 @@ "const_": { "id": 11, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 52, + "span": 55, "user_ty": null } }, @@ -346,7 +346,7 @@ "unwind": "Continue" } }, - "span": 53 + "span": 56 } }, { @@ -377,7 +377,7 @@ } ] }, - "span": 54 + "span": 57 } ], "terminator": { @@ -390,7 +390,7 @@ { "Field": [ 1, - 25 + 26 ] } ] @@ -418,7 +418,7 @@ "unwind": "Continue" } }, - "span": 54 + "span": 57 } }, { @@ -438,7 +438,7 @@ { "Field": [ 0, - 24 + 25 ] } ] @@ -447,7 +447,7 @@ } ] }, - "span": 54 + "span": 57 } ], "terminator": { @@ -456,50 +456,50 @@ "target": 6 } }, - "span": 48 + "span": 51 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 55 + "span": 58 } } ], "locals": [ { "mutability": "Mut", - "span": 56, - "ty": 24 + "span": 59, + "ty": 25 }, { "mutability": "Not", - "span": 57, - "ty": 24 + "span": 60, + "ty": 25 }, { "mutability": "Mut", - "span": 53, - "ty": 24 + "span": 56, + "ty": 25 }, { "mutability": "Mut", - "span": 51, - "ty": 24 + "span": 54, + "ty": 25 }, { "mutability": "Mut", - "span": 51, - "ty": 27 + "span": 54, + "ty": 28 }, { "mutability": "Mut", - "span": 54, - "ty": 27 + "span": 57, + "ty": 28 } ], - "span": 58, + "span": 61, "spread_arg": null, "var_debug_info": [ { @@ -508,7 +508,7 @@ "name": "n", "source_info": { "scope": 0, - "span": 57 + "span": 60 }, "value": { "Place": { @@ -559,9 +559,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 60, + "span": 63, "user_ty": null } } @@ -575,9 +575,9 @@ "const_": { "id": 11, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 59, + "span": 62, "user_ty": null } }, @@ -585,7 +585,7 @@ "unwind": "Continue" } }, - "span": 61 + "span": 64 } }, { @@ -610,14 +610,14 @@ } } }, - "span": 62 + "span": 65 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 63 + "span": 66 } }, { @@ -662,9 +662,9 @@ } } }, - "ty": 29 + "ty": 30 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -678,9 +678,9 @@ "const_": { "id": 13, "kind": "ZeroSized", - "ty": 28 + "ty": 29 }, - "span": 64, + "span": 67, "user_ty": null } }, @@ -688,28 +688,28 @@ "unwind": "Continue" } }, - "span": 64 + "span": 67 } } ], "locals": [ { "mutability": "Mut", - "span": 65, + "span": 68, "ty": 1 }, { "mutability": "Not", - "span": 66, - "ty": 24 + "span": 69, + "ty": 25 }, { "mutability": "Mut", - "span": 64, - "ty": 30 + "span": 67, + "ty": 31 } ], - "span": 67, + "span": 70, "spread_arg": null, "var_debug_info": [ { @@ -718,7 +718,7 @@ "name": "ans", "source_info": { "scope": 1, - "span": 66 + "span": 69 }, "value": { "Place": { @@ -1248,6 +1248,42 @@ "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": { @@ -1271,7 +1307,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -1285,7 +1321,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -1294,19 +1330,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -1318,7 +1360,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -1344,6 +1386,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -1379,7 +1426,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -1387,6 +1434,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1424,7 +1486,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1438,9 +1500,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1448,7 +1510,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1464,7 +1526,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1478,9 +1540,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1488,35 +1550,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1525,7 +1587,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1540,7 +1602,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1555,7 +1617,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1564,7 +1626,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1616,9 +1678,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1626,35 +1688,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1693,35 +1755,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1767,7 +1829,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1796,9 +1858,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1808,7 +1870,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1824,14 +1886,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1847,40 +1909,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1903,23 +1965,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1966,37 +2028,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, diff --git a/tests/integration/programs/ref-deref.smir.json.expected b/tests/integration/programs/ref-deref.smir.json.expected index 65d04b7..643be03 100644 --- a/tests/integration/programs/ref-deref.smir.json.expected +++ b/tests/integration/programs/ref-deref.smir.json.expected @@ -599,6 +599,42 @@ "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": { @@ -622,7 +658,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -636,7 +672,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -645,19 +681,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -669,7 +711,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -695,6 +737,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -730,7 +777,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -738,6 +785,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -775,7 +837,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -789,9 +851,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -799,7 +861,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -815,7 +877,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -829,9 +891,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -839,35 +901,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -876,7 +938,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -891,7 +953,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -906,7 +968,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -915,7 +977,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -967,9 +1029,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -977,35 +1039,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1044,35 +1106,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1118,7 +1180,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1147,9 +1209,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1159,7 +1221,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1175,14 +1237,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1198,40 +1260,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1254,23 +1316,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1317,37 +1379,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, @@ -1395,14 +1478,14 @@ }, "ty": 16 }, - "span": 48, + "span": 51, "user_ty": null } } } ] }, - "span": 48 + "span": 51 }, { "kind": { @@ -1425,7 +1508,7 @@ } ] }, - "span": 49 + "span": 52 }, { "kind": { @@ -1446,7 +1529,7 @@ } ] }, - "span": 50 + "span": 53 } ], "terminator": { @@ -1469,14 +1552,14 @@ } } }, - "span": 47 + "span": 50 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 51 + "span": 54 } }, { @@ -1521,9 +1604,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1537,9 +1620,9 @@ "const_": { "id": 10, "kind": "ZeroSized", - "ty": 24 + "ty": 25 }, - "span": 52, + "span": 55, "user_ty": null } }, @@ -1547,38 +1630,38 @@ "unwind": "Continue" } }, - "span": 52 + "span": 55 } } ], "locals": [ { "mutability": "Mut", - "span": 53, + "span": 56, "ty": 1 }, { "mutability": "Not", - "span": 54, + "span": 57, "ty": 16 }, { "mutability": "Not", - "span": 55, - "ty": 26 + "span": 58, + "ty": 27 }, { "mutability": "Not", - "span": 56, + "span": 59, "ty": 16 }, { "mutability": "Mut", - "span": 52, - "ty": 27 + "span": 55, + "ty": 28 } ], - "span": 57, + "span": 60, "spread_arg": null, "var_debug_info": [ { @@ -1587,7 +1670,7 @@ "name": "a", "source_info": { "scope": 1, - "span": 54 + "span": 57 }, "value": { "Place": { @@ -1602,7 +1685,7 @@ "name": "b", "source_info": { "scope": 2, - "span": 55 + "span": 58 }, "value": { "Place": { @@ -1617,7 +1700,7 @@ "name": "c", "source_info": { "scope": 3, - "span": 56 + "span": 59 }, "value": { "Place": { diff --git a/tests/integration/programs/shl_min.smir.json.expected b/tests/integration/programs/shl_min.smir.json.expected index e8d84cc..b349c56 100644 --- a/tests/integration/programs/shl_min.smir.json.expected +++ b/tests/integration/programs/shl_min.smir.json.expected @@ -867,6 +867,42 @@ "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": { @@ -890,7 +926,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -904,7 +940,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -913,19 +949,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -937,7 +979,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -963,6 +1005,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -998,7 +1045,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -1006,6 +1053,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1043,7 +1105,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1057,9 +1119,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1067,7 +1129,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1083,7 +1145,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1097,9 +1159,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1107,35 +1169,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1144,7 +1206,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1159,7 +1221,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1174,7 +1236,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1183,7 +1245,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1235,9 +1297,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1245,35 +1307,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1312,35 +1374,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1386,7 +1448,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1415,9 +1477,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1427,7 +1489,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1443,14 +1505,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1466,40 +1528,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1522,23 +1584,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1585,37 +1647,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, @@ -1665,16 +1748,16 @@ }, "ty": 16 }, - "span": 48, + "span": 51, "user_ty": null } }, - 24 + 25 ] } ] }, - "span": 49 + "span": 52 }, { "kind": { @@ -1711,9 +1794,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 49, + "span": 52, "user_ty": null } } @@ -1721,7 +1804,7 @@ } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -1755,7 +1838,7 @@ }, "ty": 2 }, - "span": 47, + "span": 50, "user_ty": null } }, @@ -1780,7 +1863,7 @@ }, "ty": 16 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -1790,7 +1873,7 @@ "unwind": "Continue" } }, - "span": 49 + "span": 52 } }, { @@ -1823,7 +1906,7 @@ }, "ty": 2 }, - "span": 47, + "span": 50, "user_ty": null } }, @@ -1848,7 +1931,7 @@ }, "ty": 16 }, - "span": 48, + "span": 51, "user_ty": null } } @@ -1856,7 +1939,7 @@ } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -1879,7 +1962,7 @@ } } }, - "span": 50 + "span": 53 } }, { @@ -1915,16 +1998,16 @@ }, "ty": 16 }, - "span": 52, + "span": 55, "user_ty": null } }, - 24 + 25 ] } ] }, - "span": 53 + "span": 56 }, { "kind": { @@ -1961,9 +2044,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 53, + "span": 56, "user_ty": null } } @@ -1971,7 +2054,7 @@ } ] }, - "span": 53 + "span": 56 } ], "terminator": { @@ -2004,9 +2087,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 51, + "span": 54, "user_ty": null } }, @@ -2031,7 +2114,7 @@ }, "ty": 16 }, - "span": 52, + "span": 55, "user_ty": null } } @@ -2041,7 +2124,7 @@ "unwind": "Continue" } }, - "span": 53 + "span": 56 } }, { @@ -2086,9 +2169,9 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -2102,9 +2185,9 @@ "const_": { "id": 14, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 54, + "span": 57, "user_ty": null } }, @@ -2112,7 +2195,7 @@ "unwind": "Continue" } }, - "span": 54 + "span": 57 } }, { @@ -2144,9 +2227,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 51, + "span": 54, "user_ty": null } }, @@ -2171,7 +2254,7 @@ }, "ty": 16 }, - "span": 52, + "span": 55, "user_ty": null } } @@ -2179,7 +2262,7 @@ } ] }, - "span": 53 + "span": 56 } ], "terminator": { @@ -2202,7 +2285,7 @@ } } }, - "span": 55 + "span": 58 } }, { @@ -2238,16 +2321,16 @@ }, "ty": 16 }, - "span": 57, + "span": 60, "user_ty": null } }, - 24 + 25 ] } ] }, - "span": 58 + "span": 61 }, { "kind": { @@ -2284,9 +2367,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 58, + "span": 61, "user_ty": null } } @@ -2294,7 +2377,7 @@ } ] }, - "span": 58 + "span": 61 } ], "terminator": { @@ -2331,7 +2414,7 @@ }, "ty": 16 }, - "span": 56, + "span": 59, "user_ty": null } }, @@ -2356,7 +2439,7 @@ }, "ty": 16 }, - "span": 57, + "span": 60, "user_ty": null } } @@ -2366,7 +2449,7 @@ "unwind": "Continue" } }, - "span": 58 + "span": 61 } }, { @@ -2411,9 +2494,9 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -2427,9 +2510,9 @@ "const_": { "id": 14, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 59, + "span": 62, "user_ty": null } }, @@ -2437,7 +2520,7 @@ "unwind": "Continue" } }, - "span": 59 + "span": 62 } }, { @@ -2473,7 +2556,7 @@ }, "ty": 16 }, - "span": 56, + "span": 59, "user_ty": null } }, @@ -2498,7 +2581,7 @@ }, "ty": 16 }, - "span": 57, + "span": 60, "user_ty": null } } @@ -2506,7 +2589,7 @@ } ] }, - "span": 58 + "span": 61 } ], "terminator": { @@ -2529,7 +2612,7 @@ } } }, - "span": 60 + "span": 63 } }, { @@ -2565,16 +2648,16 @@ }, "ty": 16 }, - "span": 62, + "span": 65, "user_ty": null } }, - 24 + 25 ] } ] }, - "span": 63 + "span": 66 }, { "kind": { @@ -2611,9 +2694,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 63, + "span": 66, "user_ty": null } } @@ -2621,7 +2704,7 @@ } ] }, - "span": 63 + "span": 66 } ], "terminator": { @@ -2660,9 +2743,9 @@ } } }, - "ty": 28 + "ty": 29 }, - "span": 61, + "span": 64, "user_ty": null } }, @@ -2687,7 +2770,7 @@ }, "ty": 16 }, - "span": 62, + "span": 65, "user_ty": null } } @@ -2697,7 +2780,7 @@ "unwind": "Continue" } }, - "span": 63 + "span": 66 } }, { @@ -2742,9 +2825,9 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -2758,9 +2841,9 @@ "const_": { "id": 14, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 64, + "span": 67, "user_ty": null } }, @@ -2768,7 +2851,7 @@ "unwind": "Continue" } }, - "span": 64 + "span": 67 } }, { @@ -2806,9 +2889,9 @@ } } }, - "ty": 28 + "ty": 29 }, - "span": 61, + "span": 64, "user_ty": null } }, @@ -2833,7 +2916,7 @@ }, "ty": 16 }, - "span": 62, + "span": 65, "user_ty": null } } @@ -2841,7 +2924,7 @@ } ] }, - "span": 63 + "span": 66 } ], "terminator": { @@ -2864,7 +2947,7 @@ } } }, - "span": 65 + "span": 68 } }, { @@ -2900,16 +2983,16 @@ }, "ty": 16 }, - "span": 67, + "span": 70, "user_ty": null } }, - 24 + 25 ] } ] }, - "span": 68 + "span": 71 }, { "kind": { @@ -2946,9 +3029,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 68, + "span": 71, "user_ty": null } } @@ -2956,7 +3039,7 @@ } ] }, - "span": 68 + "span": 71 } ], "terminator": { @@ -3003,9 +3086,9 @@ } } }, - "ty": 29 + "ty": 30 }, - "span": 66, + "span": 69, "user_ty": null } }, @@ -3030,7 +3113,7 @@ }, "ty": 16 }, - "span": 67, + "span": 70, "user_ty": null } } @@ -3040,7 +3123,7 @@ "unwind": "Continue" } }, - "span": 68 + "span": 71 } }, { @@ -3085,9 +3168,9 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -3101,9 +3184,9 @@ "const_": { "id": 14, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 69, + "span": 72, "user_ty": null } }, @@ -3111,7 +3194,7 @@ "unwind": "Continue" } }, - "span": 69 + "span": 72 } }, { @@ -3157,9 +3240,9 @@ } } }, - "ty": 29 + "ty": 30 }, - "span": 66, + "span": 69, "user_ty": null } }, @@ -3184,7 +3267,7 @@ }, "ty": 16 }, - "span": 67, + "span": 70, "user_ty": null } } @@ -3192,7 +3275,7 @@ } ] }, - "span": 68 + "span": 71 } ], "terminator": { @@ -3215,14 +3298,14 @@ } } }, - "span": 70 + "span": 73 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 71 + "span": 74 } }, { @@ -3267,9 +3350,9 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -3283,9 +3366,9 @@ "const_": { "id": 14, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 72, + "span": 75, "user_ty": null } }, @@ -3293,118 +3376,118 @@ "unwind": "Continue" } }, - "span": 72 + "span": 75 } } ], "locals": [ { "mutability": "Mut", - "span": 73, + "span": 76, "ty": 1 }, { "mutability": "Mut", - "span": 49, + "span": 52, "ty": 2 }, { "mutability": "Mut", - "span": 49, - "ty": 24 - }, - { - "mutability": "Mut", - "span": 49, - "ty": 30 + "span": 52, + "ty": 25 }, { "mutability": "Mut", - "span": 54, + "span": 52, "ty": 31 }, { "mutability": "Mut", - "span": 53, - "ty": 25 + "span": 57, + "ty": 32 }, { "mutability": "Mut", - "span": 53, - "ty": 24 + "span": 56, + "ty": 26 }, { "mutability": "Mut", - "span": 53, - "ty": 30 + "span": 56, + "ty": 25 }, { "mutability": "Mut", - "span": 59, + "span": 56, "ty": 31 }, { "mutability": "Mut", - "span": 58, - "ty": 16 + "span": 62, + "ty": 32 }, { "mutability": "Mut", - "span": 58, - "ty": 24 + "span": 61, + "ty": 16 }, { "mutability": "Mut", - "span": 58, - "ty": 30 + "span": 61, + "ty": 25 }, { "mutability": "Mut", - "span": 64, + "span": 61, "ty": 31 }, { "mutability": "Mut", - "span": 63, - "ty": 28 + "span": 67, + "ty": 32 }, { "mutability": "Mut", - "span": 63, - "ty": 24 + "span": 66, + "ty": 29 }, { "mutability": "Mut", - "span": 63, - "ty": 30 + "span": 66, + "ty": 25 }, { "mutability": "Mut", - "span": 69, + "span": 66, "ty": 31 }, { "mutability": "Mut", - "span": 68, - "ty": 29 + "span": 72, + "ty": 32 }, { "mutability": "Mut", - "span": 68, - "ty": 24 + "span": 71, + "ty": 30 }, { "mutability": "Mut", - "span": 68, - "ty": 30 + "span": 71, + "ty": 25 }, { "mutability": "Mut", - "span": 72, + "span": 71, "ty": 31 + }, + { + "mutability": "Mut", + "span": 75, + "ty": 32 } ], - "span": 74, + "span": 77, "spread_arg": null, "var_debug_info": [] } diff --git a/tests/integration/programs/slice.smir.json.expected b/tests/integration/programs/slice.smir.json.expected index 6f1b9bf..4bc3772 100644 --- a/tests/integration/programs/slice.smir.json.expected +++ b/tests/integration/programs/slice.smir.json.expected @@ -860,7 +860,7 @@ "ty": 2 } ], - "span": 40, + "span": 41, "spread_arg": null, "var_debug_info": [ { @@ -983,6 +983,21 @@ } } }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 4, + "span": 32 + }, + "value": { + "Place": { + "local": 15, + "projection": [] + } + } + }, { "argument_index": 1, "composite": null, @@ -997,6 +1012,36 @@ "projection": [] } } + }, + { + "argument_index": 2, + "composite": null, + "name": "index", + "source_info": { + "scope": 5, + "span": 40 + }, + "value": { + "Place": { + "local": 7, + "projection": [] + } + } + }, + { + "argument_index": null, + "composite": null, + "name": "ptr", + "source_info": { + "scope": 6, + "span": 33 + }, + "value": { + "Place": { + "local": 16, + "projection": [] + } + } } ] } @@ -1021,19 +1066,19 @@ "kind": { "StorageLive": 5 }, - "span": 42 + "span": 43 }, { "kind": { "StorageLive": 6 }, - "span": 43 + "span": 44 }, { "kind": { "StorageLive": 8 }, - "span": 44 + "span": 45 }, { "kind": { @@ -1075,7 +1120,7 @@ } ] }, - "span": 44 + "span": 45 }, { "kind": { @@ -1098,7 +1143,7 @@ } ] }, - "span": 43 + "span": 44 }, { "kind": { @@ -1123,7 +1168,7 @@ } ] }, - "span": 43 + "span": 44 } ], "terminator": { @@ -1166,7 +1211,7 @@ "kind": "ZeroSized", "ty": 11 }, - "span": 41, + "span": 42, "user_ty": null } }, @@ -1174,7 +1219,7 @@ "unwind": "Continue" } }, - "span": 42 + "span": 43 } }, { @@ -1183,7 +1228,7 @@ "kind": { "StorageDead": 6 }, - "span": 46 + "span": 47 }, { "kind": { @@ -1212,75 +1257,75 @@ } ] }, - "span": 47 + "span": 48 }, { "kind": { "StorageDead": 8 }, - "span": 48 + "span": 49 }, { "kind": { "StorageDead": 5 }, - "span": 48 + "span": 49 } ], "terminator": { "kind": "Return", - "span": 45 + "span": 46 } } ], "locals": [ { "mutability": "Mut", - "span": 49, + "span": 50, "ty": 17 }, { "mutability": "Not", - "span": 50, + "span": 51, "ty": 18 }, { "mutability": "Not", - "span": 51, + "span": 52, "ty": 17 }, { "mutability": "Not", - "span": 52, + "span": 53, "ty": 19 }, { "mutability": "Not", - "span": 53, + "span": 54, "ty": 20 }, { "mutability": "Mut", - "span": 42, + "span": 43, "ty": 21 }, { "mutability": "Mut", - "span": 43, + "span": 44, "ty": 16 }, { "mutability": "Not", - "span": 43, + "span": 44, "ty": 22 }, { "mutability": "Not", - "span": 44, + "span": 45, "ty": 23 } ], - "span": 54, + "span": 55, "spread_arg": null, "var_debug_info": [ { @@ -1289,7 +1334,7 @@ "name": "main", "source_info": { "scope": 0, - "span": 50 + "span": 51 }, "value": { "Place": { @@ -1304,7 +1349,7 @@ "name": "argc", "source_info": { "scope": 0, - "span": 51 + "span": 52 }, "value": { "Place": { @@ -1319,7 +1364,7 @@ "name": "argv", "source_info": { "scope": 0, - "span": 52 + "span": 53 }, "value": { "Place": { @@ -1334,7 +1379,7 @@ "name": "sigpipe", "source_info": { "scope": 0, - "span": 53 + "span": 54 }, "value": { "Place": { @@ -1349,7 +1394,7 @@ "name": "v", "source_info": { "scope": 1, - "span": 47 + "span": 48 }, "value": { "Place": { @@ -1381,19 +1426,19 @@ "kind": { "StorageLive": 2 }, - "span": 57 + "span": 58 }, { "kind": { "StorageLive": 3 }, - "span": 56 + "span": 57 }, { "kind": { "StorageLive": 4 }, - "span": 58 + "span": 59 }, { "kind": { @@ -1420,7 +1465,7 @@ } ] }, - "span": 58 + "span": 59 } ], "terminator": { @@ -1445,7 +1490,7 @@ "kind": "ZeroSized", "ty": 24 }, - "span": 55, + "span": 56, "user_ty": null } }, @@ -1453,7 +1498,7 @@ "unwind": "Continue" } }, - "span": 56 + "span": 57 } }, { @@ -1462,7 +1507,7 @@ "kind": { "StorageDead": 4 }, - "span": 60 + "span": 61 } ], "terminator": { @@ -1487,7 +1532,7 @@ "kind": "ZeroSized", "ty": 25 }, - "span": 59, + "span": 60, "user_ty": null } }, @@ -1495,7 +1540,7 @@ "unwind": "Continue" } }, - "span": 57 + "span": 58 } }, { @@ -1504,13 +1549,13 @@ "kind": { "StorageDead": 3 }, - "span": 62 + "span": 63 }, { "kind": { "StorageLive": 5 }, - "span": 63 + "span": 64 }, { "kind": { @@ -1519,6 +1564,42 @@ "local": 5, "projection": [] }, + { + "Ref": [ + { + "kind": "ReErased" + }, + "Shared", + { + "local": 2, + "projection": [ + { + "Field": [ + 0, + 26 + ] + } + ] + } + ] + } + ] + }, + "span": 64 + }, + { + "kind": { + "StorageLive": 6 + }, + "span": 65 + }, + { + "kind": { + "Assign": [ + { + "local": 6, + "projection": [] + }, { "Use": { "Copy": { @@ -1542,7 +1623,7 @@ } ] }, - "span": 63 + "span": 65 }, { "kind": { @@ -1556,7 +1637,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -1565,60 +1646,71 @@ } ] }, - "span": 64 + "span": 66 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 67 }, { "kind": { "StorageDead": 5 }, - "span": 65 + "span": 68 }, { "kind": { "StorageDead": 2 }, - "span": 66 + "span": 69 } ], "terminator": { "kind": "Return", - "span": 61 + "span": 62 } } ], "locals": [ { "mutability": "Mut", - "span": 67, + "span": 70, "ty": 27 }, { "mutability": "Mut", - "span": 44, + "span": 45, "ty": 22 }, { "mutability": "Mut", - "span": 57, + "span": 58, "ty": 28 }, { "mutability": "Mut", - "span": 56, + "span": 57, "ty": 12 }, { "mutability": "Mut", - "span": 58, + "span": 59, "ty": 18 }, { "mutability": "Mut", - "span": 63, + "span": 64, + "ty": 29 + }, + { + "mutability": "Mut", + "span": 65, "ty": 20 } ], - "span": 44, + "span": 45, "spread_arg": null, "var_debug_info": [ { @@ -1627,7 +1719,7 @@ "name": "main", "source_info": { "scope": 0, - "span": 50 + "span": 51 }, "value": { "Place": { @@ -1650,7 +1742,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 68 + "span": 71 }, "value": { "Place": { @@ -1658,6 +1750,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 72 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1695,7 +1802,7 @@ "kind": "ZeroSized", "ty": 12 }, - "span": 70, + "span": 74, "user_ty": null } } @@ -1709,9 +1816,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 29 + "ty": 30 }, - "span": 69, + "span": 73, "user_ty": null } }, @@ -1719,7 +1826,7 @@ "unwind": "Continue" } }, - "span": 71 + "span": 75 } }, { @@ -1735,7 +1842,7 @@ "kind": "ZeroSized", "ty": 12 }, - "span": 70, + "span": 74, "user_ty": null } } @@ -1749,9 +1856,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 30 + "ty": 31 }, - "span": 72, + "span": 76, "user_ty": null } }, @@ -1759,35 +1866,35 @@ "unwind": "Unreachable" } }, - "span": 73 + "span": 77 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 74 + "span": 78 } } ], "locals": [ { "mutability": "Mut", - "span": 75, + "span": 79, "ty": 12 }, { "mutability": "Not", - "span": 76, + "span": 80, "ty": 18 }, { "mutability": "Not", - "span": 77, + "span": 81, "ty": 12 } ], - "span": 80, + "span": 84, "spread_arg": null, "var_debug_info": [ { @@ -1796,7 +1903,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 76 + "span": 80 }, "value": { "Place": { @@ -1811,7 +1918,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 78 + "span": 82 }, "value": { "Place": { @@ -1826,7 +1933,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 79 + "span": 83 }, "value": { "Const": { @@ -1835,7 +1942,7 @@ "kind": "ZeroSized", "ty": 12 }, - "span": 70, + "span": 74, "user_ty": null } } @@ -1887,9 +1994,9 @@ "const_": { "id": 8, "kind": "ZeroSized", - "ty": 31 + "ty": 32 }, - "span": 81, + "span": 85, "user_ty": null } }, @@ -1897,35 +2004,35 @@ "unwind": "Continue" } }, - "span": 81 + "span": 85 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 81 + "span": 85 } } ], "locals": [ { "mutability": "Mut", - "span": 81, + "span": 85, "ty": 27 }, { "mutability": "Not", - "span": 81, - "ty": 32 + "span": 85, + "ty": 33 }, { "mutability": "Not", - "span": 81, + "span": 85, "ty": 12 } ], - "span": 81, + "span": 85, "spread_arg": 2, "var_debug_info": [] } @@ -1964,35 +2071,35 @@ "unwind": "Continue" } }, - "span": 81 + "span": 85 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 81 + "span": 85 } } ], "locals": [ { "mutability": "Mut", - "span": 81, + "span": 85, "ty": 12 }, { "mutability": "Not", - "span": 81, + "span": 85, "ty": 18 }, { "mutability": "Not", - "span": 81, + "span": 85, "ty": 12 } ], - "span": 81, + "span": 85, "spread_arg": 2, "var_debug_info": [] } @@ -2038,7 +2145,7 @@ } ] }, - "span": 81 + "span": 85 } ], "terminator": { @@ -2067,9 +2174,9 @@ "const_": { "id": 9, "kind": "ZeroSized", - "ty": 33 + "ty": 34 }, - "span": 81, + "span": 85, "user_ty": null } }, @@ -2079,7 +2186,7 @@ } } }, - "span": 81 + "span": 85 } }, { @@ -2095,14 +2202,14 @@ "unwind": "Continue" } }, - "span": 81 + "span": 85 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 81 + "span": 85 } }, { @@ -2118,40 +2225,40 @@ "unwind": "Terminate" } }, - "span": 81 + "span": 85 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 81 + "span": 85 } } ], "locals": [ { "mutability": "Mut", - "span": 81, + "span": 85, "ty": 27 }, { "mutability": "Not", - "span": 81, + "span": 85, "ty": 23 }, { "mutability": "Not", - "span": 81, + "span": 85, "ty": 12 }, { "mutability": "Not", - "span": 81, - "ty": 34 + "span": 85, + "ty": 35 } ], - "span": 81, + "span": 85, "spread_arg": 2, "var_debug_info": [] } @@ -2174,23 +2281,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 82 + "span": 86 } } ], "locals": [ { "mutability": "Mut", - "span": 82, + "span": 86, "ty": 12 }, { "mutability": "Not", - "span": 82, - "ty": 32 + "span": 86, + "ty": 33 } ], - "span": 82, + "span": 86, "spread_arg": null, "var_debug_info": [] } @@ -2234,7 +2341,7 @@ } ] }, - "span": 85 + "span": 89 } ], "terminator": { @@ -2263,9 +2370,9 @@ "const_": { "id": 10, "kind": "ZeroSized", - "ty": 35 + "ty": 36 }, - "span": 83, + "span": 87, "user_ty": null } }, @@ -2273,40 +2380,40 @@ "unwind": "Continue" } }, - "span": 84 + "span": 88 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 86 + "span": 90 } } ], "locals": [ { "mutability": "Mut", - "span": 87, + "span": 91, "ty": 5 }, { "mutability": "Not", - "span": 88, - "ty": 36 + "span": 92, + "ty": 37 }, { "mutability": "Not", - "span": 89, + "span": 93, "ty": 6 }, { "mutability": "Not", - "span": 85, + "span": 89, "ty": 5 } ], - "span": 90, + "span": 94, "spread_arg": null, "var_debug_info": [ { @@ -2315,7 +2422,7 @@ "name": "self", "source_info": { "scope": 0, - "span": 88 + "span": 92 }, "value": { "Place": { @@ -2330,7 +2437,7 @@ "name": "index", "source_info": { "scope": 0, - "span": 89 + "span": 93 }, "value": { "Place": { @@ -2362,37 +2469,37 @@ "kind": { "StorageLive": 3 }, - "span": 92 + "span": 96 }, { "kind": { "StorageLive": 5 }, - "span": 93 + "span": 97 }, { "kind": { "StorageLive": 9 }, - "span": 94 + "span": 98 }, { "kind": { "StorageLive": 10 }, - "span": 94 + "span": 98 }, { "kind": { "StorageLive": 6 }, - "span": 91 + "span": 95 }, { "kind": { "StorageLive": 7 }, - "span": 95 + "span": 99 }, { "kind": { @@ -2414,7 +2521,7 @@ } ] }, - "span": 95 + "span": 99 }, { "kind": { @@ -2457,7 +2564,7 @@ }, "ty": 0 }, - "span": 96, + "span": 100, "user_ty": null } } @@ -2465,7 +2572,7 @@ } ] }, - "span": 91 + "span": 95 } ], "terminator": { @@ -2488,7 +2595,7 @@ } } }, - "span": 91 + "span": 95 } }, { @@ -2497,12 +2604,12 @@ "kind": { "StorageDead": 3 }, - "span": 98 + "span": 102 } ], "terminator": { "kind": "Return", - "span": 97 + "span": 101 } }, { @@ -2511,13 +2618,13 @@ "kind": { "StorageDead": 7 }, - "span": 96 + "span": 100 }, { "kind": { "StorageLive": 8 }, - "span": 101 + "span": 105 }, { "kind": { @@ -2539,7 +2646,7 @@ } ] }, - "span": 102 + "span": 106 }, { "kind": { @@ -2557,12 +2664,12 @@ "projection": [] } }, - 38 + 39 ] } ] }, - "span": 103 + "span": 107 }, { "kind": { @@ -2587,7 +2694,7 @@ } ] }, - "span": 104 + "span": 108 }, { "kind": { @@ -2604,7 +2711,7 @@ 1, [ { - "Type": 39 + "Type": 40 } ], null, @@ -2623,37 +2730,37 @@ } ] }, - "span": 105 + "span": 109 }, { "kind": { "StorageDead": 8 }, - "span": 106 + "span": 110 }, { "kind": { "StorageDead": 6 }, - "span": 107 + "span": 111 }, { "kind": { "StorageDead": 10 }, - "span": 94 + "span": 98 }, { "kind": { "StorageDead": 9 }, - "span": 94 + "span": 98 }, { "kind": { "StorageLive": 11 }, - "span": 108 + "span": 112 }, { "kind": { @@ -2673,7 +2780,7 @@ { "Field": [ 0, - 39 + 40 ] } ] @@ -2682,7 +2789,7 @@ } ] }, - "span": 109 + "span": 113 }, { "kind": { @@ -2699,10 +2806,10 @@ 0, [ { - "Type": 39 + "Type": 40 }, { - "Type": 40 + "Type": 41 } ], null, @@ -2721,19 +2828,19 @@ } ] }, - "span": 110 + "span": 114 }, { "kind": { "StorageDead": 11 }, - "span": 108 + "span": 112 }, { "kind": { "StorageDead": 5 }, - "span": 111 + "span": 115 }, { "kind": { @@ -2753,7 +2860,7 @@ { "Field": [ 0, - 39 + 40 ] } ] @@ -2762,7 +2869,7 @@ } ] }, - "span": 112 + "span": 116 } ], "terminator": { @@ -2791,9 +2898,9 @@ "const_": { "id": 12, "kind": "ZeroSized", - "ty": 37 + "ty": 38 }, - "span": 99, + "span": 103, "user_ty": null } }, @@ -2801,7 +2908,7 @@ "unwind": "Continue" } }, - "span": 100 + "span": 104 } }, { @@ -2810,7 +2917,7 @@ "kind": { "StorageDead": 7 }, - "span": 96 + "span": 100 }, { "kind": { @@ -2843,40 +2950,40 @@ } } }, - "ty": 41 + "ty": 42 }, - "span": 70, + "span": 74, "user_ty": null } } } ] }, - "span": 114 + "span": 118 }, { "kind": { "StorageDead": 6 }, - "span": 107 + "span": 111 }, { "kind": { "StorageDead": 10 }, - "span": 94 + "span": 98 }, { "kind": { "StorageDead": 9 }, - "span": 94 + "span": 98 }, { "kind": { "StorageLive": 11 }, - "span": 108 + "span": 112 }, { "kind": { @@ -2909,28 +3016,28 @@ } } }, - "ty": 42 + "ty": 43 }, - "span": 70, + "span": 74, "user_ty": null } } } ] }, - "span": 115 + "span": 119 }, { "kind": { "StorageDead": 11 }, - "span": 108 + "span": 112 }, { "kind": { "StorageDead": 5 }, - "span": 111 + "span": 115 }, { "kind": { @@ -2958,14 +3065,14 @@ }, "ty": 9 }, - "span": 113, + "span": 117, "user_ty": null } } } ] }, - "span": 113 + "span": 117 } ], "terminator": { @@ -2974,73 +3081,73 @@ "target": 1 } }, - "span": 113 + "span": 117 } } ], "locals": [ { "mutability": "Mut", - "span": 116, + "span": 120, "ty": 9 }, { "mutability": "Not", - "span": 117, + "span": 121, "ty": 5 }, { "mutability": "Not", - "span": 118, - "ty": 39 + "span": 122, + "ty": 40 }, { "mutability": "Not", - "span": 92, - "ty": 42 + "span": 96, + "ty": 43 }, { "mutability": "Not", - "span": 112, - "ty": 39 + "span": 116, + "ty": 40 }, { "mutability": "Mut", - "span": 93, - "ty": 41 + "span": 97, + "ty": 42 }, { "mutability": "Mut", - "span": 91, + "span": 95, "ty": 9 }, { "mutability": "Mut", - "span": 95, + "span": 99, "ty": 0 }, { "mutability": "Not", - "span": 101, - "ty": 38 + "span": 105, + "ty": 39 }, { "mutability": "Not", - "span": 119, - "ty": 39 + "span": 123, + "ty": 40 }, { "mutability": "Mut", - "span": 120, + "span": 124, "ty": 10 }, { "mutability": "Not", - "span": 109, - "ty": 39 + "span": 113, + "ty": 40 } ], - "span": 129, + "span": 133, "spread_arg": null, "var_debug_info": [ { @@ -3049,7 +3156,7 @@ "name": "self", "source_info": { "scope": 0, - "span": 117 + "span": 121 }, "value": { "Place": { @@ -3064,7 +3171,7 @@ "name": "other", "source_info": { "scope": 0, - "span": 118 + "span": 122 }, "value": { "Place": { @@ -3079,7 +3186,7 @@ "name": "b", "source_info": { "scope": 1, - "span": 92 + "span": 96 }, "value": { "Place": { @@ -3094,7 +3201,7 @@ "name": "b", "source_info": { "scope": 2, - "span": 112 + "span": 116 }, "value": { "Place": { @@ -3109,7 +3216,7 @@ "name": "self", "source_info": { "scope": 3, - "span": 121 + "span": 125 }, "value": { "Place": { @@ -3124,7 +3231,7 @@ "name": "slice", "source_info": { "scope": 4, - "span": 122 + "span": 126 }, "value": { "Place": { @@ -3139,7 +3246,7 @@ "name": "self", "source_info": { "scope": 5, - "span": 123 + "span": 127 }, "value": { "Place": { @@ -3154,7 +3261,7 @@ "name": "ptr", "source_info": { "scope": 6, - "span": 101 + "span": 105 }, "value": { "Place": { @@ -3169,7 +3276,7 @@ "name": "me", "source_info": { "scope": 7, - "span": 119 + "span": 123 }, "value": { "Place": { @@ -3184,7 +3291,7 @@ "name": "self", "source_info": { "scope": 8, - "span": 124 + "span": 128 }, "value": { "Place": { @@ -3199,7 +3306,7 @@ "name": "self", "source_info": { "scope": 9, - "span": 125 + "span": 129 }, "value": { "Place": { @@ -3214,16 +3321,16 @@ "name": "err", "source_info": { "scope": 9, - "span": 126 + "span": 130 }, "value": { "Const": { "const_": { "id": 16, "kind": "ZeroSized", - "ty": 40 + "ty": 41 }, - "span": 70, + "span": 74, "user_ty": null } } @@ -3234,7 +3341,7 @@ "name": "v", "source_info": { "scope": 10, - "span": 109 + "span": 113 }, "value": { "Place": { @@ -3249,7 +3356,7 @@ "name": "self", "source_info": { "scope": 11, - "span": 127 + "span": 131 }, "value": { "Place": { @@ -3264,7 +3371,7 @@ "name": "other", "source_info": { "scope": 11, - "span": 128 + "span": 132 }, "value": { "Place": { @@ -3311,7 +3418,7 @@ } ] }, - "span": 131 + "span": 135 } ], "terminator": { @@ -3340,9 +3447,9 @@ "const_": { "id": 17, "kind": "ZeroSized", - "ty": 43 + "ty": 44 }, - "span": 130, + "span": 134, "user_ty": null } }, @@ -3350,40 +3457,40 @@ "unwind": "Continue" } }, - "span": 130 + "span": 134 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 132 + "span": 136 } } ], "locals": [ { "mutability": "Mut", - "span": 133, + "span": 137, "ty": 9 }, { "mutability": "Not", - "span": 134, - "ty": 44 + "span": 138, + "ty": 45 }, { "mutability": "Not", - "span": 135, - "ty": 39 + "span": 139, + "ty": 40 }, { "mutability": "Mut", - "span": 134, + "span": 138, "ty": 5 } ], - "span": 136, + "span": 140, "spread_arg": null, "var_debug_info": [ { @@ -3392,7 +3499,7 @@ "name": "self", "source_info": { "scope": 0, - "span": 134 + "span": 138 }, "value": { "Place": { @@ -3407,7 +3514,7 @@ "name": "other", "source_info": { "scope": 0, - "span": 135 + "span": 139 }, "value": { "Place": { @@ -3461,9 +3568,9 @@ "const_": { "id": 18, "kind": "ZeroSized", - "ty": 45 + "ty": 46 }, - "span": 137, + "span": 141, "user_ty": null } }, @@ -3471,35 +3578,35 @@ "unwind": "Continue" } }, - "span": 138 + "span": 142 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 139 + "span": 143 } } ], "locals": [ { "mutability": "Mut", - "span": 140, + "span": 144, "ty": 5 }, { "mutability": "Not", - "span": 141, + "span": 145, "ty": 5 }, { "mutability": "Not", - "span": 142, + "span": 146, "ty": 6 } ], - "span": 143, + "span": 147, "spread_arg": null, "var_debug_info": [ { @@ -3508,7 +3615,7 @@ "name": "self", "source_info": { "scope": 0, - "span": 141 + "span": 145 }, "value": { "Place": { @@ -3523,7 +3630,7 @@ "name": "index", "source_info": { "scope": 0, - "span": 142 + "span": 146 }, "value": { "Place": { @@ -3577,37 +3684,58 @@ }, "ty": 28 }, - "span": 145, + "span": 149, "user_ty": null } } } ] }, - "span": 145 + "span": 149 } ], "terminator": { "kind": "Return", - "span": 144 + "span": 148 } } ], "locals": [ { "mutability": "Mut", - "span": 146, + "span": 150, "ty": 28 }, { "mutability": "Not", - "span": 147, + "span": 151, "ty": 12 } ], - "span": 148, + "span": 152, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 151 + }, + "value": { + "Const": { + "const_": { + "id": 6, + "kind": "ZeroSized", + "ty": 12 + }, + "span": 74, + "user_ty": null + } + } + } + ] } ], "id": 12, @@ -3660,7 +3788,7 @@ }, "ty": 27 }, - "span": 159, + "span": 163, "user_ty": null } }, @@ -3685,7 +3813,7 @@ }, "ty": 27 }, - "span": 160, + "span": 164, "user_ty": null } }, @@ -3710,7 +3838,7 @@ }, "ty": 27 }, - "span": 161, + "span": 165, "user_ty": null } }, @@ -3735,7 +3863,7 @@ }, "ty": 27 }, - "span": 162, + "span": 166, "user_ty": null } } @@ -3744,7 +3872,7 @@ } ] }, - "span": 163 + "span": 167 }, { "kind": { @@ -3767,7 +3895,7 @@ } ] }, - "span": 164 + "span": 168 }, { "kind": { @@ -3817,7 +3945,7 @@ }, "ty": 0 }, - "span": 165, + "span": 169, "user_ty": null } }, @@ -3846,7 +3974,7 @@ }, "ty": 0 }, - "span": 166, + "span": 170, "user_ty": null } } @@ -3855,7 +3983,7 @@ } ] }, - "span": 167 + "span": 171 } ], "terminator": { @@ -3884,9 +4012,9 @@ "const_": { "id": 21, "kind": "ZeroSized", - "ty": 47 + "ty": 48 }, - "span": 158, + "span": 162, "user_ty": null } }, @@ -3894,7 +4022,7 @@ "unwind": "Continue" } }, - "span": 158 + "span": 162 } }, { @@ -3916,7 +4044,7 @@ } ] }, - "span": 169 + "span": 173 }, { "kind": { @@ -3939,7 +4067,7 @@ } ] }, - "span": 170 + "span": 174 }, { "kind": { @@ -3977,16 +4105,16 @@ } } }, - "ty": 39 + "ty": 40 }, - "span": 171, + "span": 175, "user_ty": null } } } ] }, - "span": 171 + "span": 175 } ], "terminator": { @@ -4015,9 +4143,9 @@ "const_": { "id": 28, "kind": "ZeroSized", - "ty": 48 + "ty": 49 }, - "span": 168, + "span": 172, "user_ty": null } }, @@ -4025,7 +4153,7 @@ "unwind": "Continue" } }, - "span": 168 + "span": 172 } }, { @@ -4050,14 +4178,14 @@ } } }, - "span": 168 + "span": 172 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 172 + "span": 176 } }, { @@ -4102,9 +4230,9 @@ } } }, - "ty": 50 + "ty": 51 }, - "span": 70, + "span": 74, "user_ty": null } } @@ -4118,9 +4246,9 @@ "const_": { "id": 30, "kind": "ZeroSized", - "ty": 49 + "ty": 50 }, - "span": 173, + "span": 177, "user_ty": null } }, @@ -4128,63 +4256,63 @@ "unwind": "Continue" } }, - "span": 173 + "span": 177 } } ], "locals": [ { "mutability": "Mut", - "span": 174, + "span": 178, "ty": 12 }, { "mutability": "Not", - "span": 175, - "ty": 51 + "span": 179, + "ty": 52 }, { "mutability": "Not", - "span": 176, + "span": 180, "ty": 5 }, { "mutability": "Not", - "span": 158, + "span": 162, "ty": 5 }, { "mutability": "Mut", - "span": 164, - "ty": 36 + "span": 168, + "ty": 37 }, { "mutability": "Mut", - "span": 167, + "span": 171, "ty": 6 }, { "mutability": "Mut", - "span": 168, + "span": 172, "ty": 9 }, { "mutability": "Mut", - "span": 170, - "ty": 44 + "span": 174, + "ty": 45 }, { "mutability": "Mut", - "span": 171, - "ty": 39 + "span": 175, + "ty": 40 }, { "mutability": "Mut", - "span": 173, + "span": 177, "ty": 7 } ], - "span": 177, + "span": 181, "spread_arg": null, "var_debug_info": [ { @@ -4193,7 +4321,7 @@ "name": "a", "source_info": { "scope": 1, - "span": 175 + "span": 179 }, "value": { "Place": { @@ -4208,7 +4336,7 @@ "name": "b", "source_info": { "scope": 2, - "span": 176 + "span": 180 }, "value": { "Place": { @@ -4258,7 +4386,7 @@ }, "ty": 27 }, - "span": 178, + "span": 182, "user_ty": null } }, @@ -4283,7 +4411,7 @@ }, "ty": 27 }, - "span": 179, + "span": 183, "user_ty": null } } @@ -4292,7 +4420,7 @@ } ] }, - "span": 171 + "span": 175 }, { "kind": { @@ -4315,28 +4443,28 @@ } ] }, - "span": 171 + "span": 175 } ], "terminator": { "kind": "Return", - "span": 171 + "span": 175 } } ], "locals": [ { "mutability": "Mut", - "span": 171, - "ty": 39 + "span": 175, + "ty": 40 }, { "mutability": "Mut", - "span": 171, - "ty": 52 + "span": 175, + "ty": 53 } ], - "span": 171, + "span": 175, "spread_arg": null, "var_debug_info": [] } @@ -4361,7 +4489,7 @@ "kind": { "StorageLive": 3 }, - "span": 151 + "span": 155 }, { "kind": { @@ -4379,12 +4507,12 @@ "projection": [] } }, - 39 + 40 ] } ] }, - "span": 151 + "span": 155 } ], "terminator": { @@ -4413,9 +4541,9 @@ "const_": { "id": 20, "kind": "ZeroSized", - "ty": 46 + "ty": 47 }, - "span": 149, + "span": 153, "user_ty": null } }, @@ -4423,7 +4551,7 @@ "unwind": "Unreachable" } }, - "span": 150 + "span": 154 } }, { @@ -4432,38 +4560,38 @@ "kind": { "StorageDead": 3 }, - "span": 153 + "span": 157 } ], "terminator": { "kind": "Return", - "span": 152 + "span": 156 } } ], "locals": [ { "mutability": "Mut", - "span": 154, + "span": 158, "ty": 9 }, { "mutability": "Not", - "span": 155, - "ty": 39 + "span": 159, + "ty": 40 }, { "mutability": "Not", - "span": 156, - "ty": 39 + "span": 160, + "ty": 40 }, { "mutability": "Mut", - "span": 151, - "ty": 39 + "span": 155, + "ty": 40 } ], - "span": 157, + "span": 161, "spread_arg": null, "var_debug_info": [ { @@ -4472,7 +4600,7 @@ "name": "a", "source_info": { "scope": 0, - "span": 155 + "span": 159 }, "value": { "Place": { @@ -4487,7 +4615,7 @@ "name": "b", "source_info": { "scope": 0, - "span": 156 + "span": 160 }, "value": { "Place": { diff --git a/tests/integration/programs/strange-ref-deref.smir.json.expected b/tests/integration/programs/strange-ref-deref.smir.json.expected index cb37763..d045300 100644 --- a/tests/integration/programs/strange-ref-deref.smir.json.expected +++ b/tests/integration/programs/strange-ref-deref.smir.json.expected @@ -127,14 +127,14 @@ }, "ty": 16 }, - "span": 48, + "span": 51, "user_ty": null } } } ] }, - "span": 48 + "span": 51 }, { "kind": { @@ -157,7 +157,7 @@ } ] }, - "span": 49 + "span": 52 }, { "kind": { @@ -180,7 +180,7 @@ } ] }, - "span": 50 + "span": 53 }, { "kind": { @@ -199,7 +199,7 @@ } ] }, - "span": 50 + "span": 53 }, { "kind": { @@ -218,7 +218,7 @@ } ] }, - "span": 51 + "span": 54 }, { "kind": { @@ -239,7 +239,7 @@ } ] }, - "span": 52 + "span": 55 } ], "terminator": { @@ -262,14 +262,14 @@ } } }, - "span": 47 + "span": 50 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 53 + "span": 56 } }, { @@ -314,9 +314,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -330,9 +330,9 @@ "const_": { "id": 10, "kind": "ZeroSized", - "ty": 24 + "ty": 25 }, - "span": 54, + "span": 57, "user_ty": null } }, @@ -340,48 +340,48 @@ "unwind": "Continue" } }, - "span": 54 + "span": 57 } } ], "locals": [ { "mutability": "Mut", - "span": 55, + "span": 58, "ty": 1 }, { "mutability": "Not", - "span": 56, + "span": 59, "ty": 16 }, { "mutability": "Mut", - "span": 57, - "ty": 26 + "span": 60, + "ty": 27 }, { "mutability": "Not", - "span": 50, - "ty": 27 + "span": 53, + "ty": 28 }, { "mutability": "Mut", - "span": 52, + "span": 55, "ty": 16 }, { "mutability": "Mut", - "span": 54, - "ty": 28 + "span": 57, + "ty": 29 }, { "mutability": "Mut", - "span": 50, - "ty": 26 + "span": 53, + "ty": 27 } ], - "span": 58, + "span": 61, "spread_arg": null, "var_debug_info": [ { @@ -390,7 +390,7 @@ "name": "a", "source_info": { "scope": 1, - "span": 56 + "span": 59 }, "value": { "Place": { @@ -405,7 +405,7 @@ "name": "b", "source_info": { "scope": 2, - "span": 57 + "span": 60 }, "value": { "Place": { @@ -935,6 +935,42 @@ "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": { @@ -958,7 +994,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -972,7 +1008,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -981,19 +1017,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -1005,7 +1047,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -1031,6 +1073,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -1066,7 +1113,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -1074,6 +1121,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1111,7 +1173,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1125,9 +1187,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1135,7 +1197,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1151,7 +1213,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1165,9 +1227,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1175,35 +1237,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1212,7 +1274,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1227,7 +1289,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1242,7 +1304,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1251,7 +1313,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1303,9 +1365,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1313,35 +1375,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1380,35 +1442,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1454,7 +1516,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1483,9 +1545,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1495,7 +1557,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1511,14 +1573,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1534,40 +1596,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1590,23 +1652,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1653,37 +1715,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, diff --git a/tests/integration/programs/struct.smir.json.expected b/tests/integration/programs/struct.smir.json.expected index cf13294..91ec6a3 100644 --- a/tests/integration/programs/struct.smir.json.expected +++ b/tests/integration/programs/struct.smir.json.expected @@ -606,6 +606,42 @@ "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": { @@ -629,7 +665,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -643,7 +679,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -652,19 +688,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -676,7 +718,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -702,6 +744,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -737,7 +784,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -745,6 +792,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -782,7 +844,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -796,9 +858,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -806,7 +868,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -822,7 +884,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -836,9 +898,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -846,35 +908,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -883,7 +945,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -898,7 +960,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -913,7 +975,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -922,7 +984,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -974,9 +1036,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -984,35 +1046,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1051,35 +1113,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1125,7 +1187,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1154,9 +1216,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1166,7 +1228,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1182,14 +1244,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1205,40 +1267,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1261,23 +1323,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1324,37 +1386,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, @@ -1411,9 +1494,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 49, + "span": 52, "user_ty": null } }, @@ -1436,9 +1519,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 50, + "span": 53, "user_ty": null } } @@ -1447,7 +1530,7 @@ } ] }, - "span": 51 + "span": 54 }, { "kind": { @@ -1464,7 +1547,7 @@ { "Field": [ 0, - 25 + 26 ] } ] @@ -1473,7 +1556,7 @@ } ] }, - "span": 52 + "span": 55 }, { "kind": { @@ -1510,9 +1593,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 47, + "span": 50, "user_ty": null } } @@ -1520,7 +1603,7 @@ } ] }, - "span": 48 + "span": 51 } ], "terminator": { @@ -1533,7 +1616,7 @@ { "Field": [ 1, - 24 + 25 ] } ] @@ -1568,9 +1651,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 47, + "span": 50, "user_ty": null } } @@ -1580,7 +1663,7 @@ "unwind": "Continue" } }, - "span": 48 + "span": 51 } }, { @@ -1600,7 +1683,7 @@ { "Field": [ 0, - 25 + 26 ] } ] @@ -1609,7 +1692,7 @@ } ] }, - "span": 48 + "span": 51 }, { "kind": { @@ -1626,7 +1709,7 @@ { "Field": [ 1, - 25 + 26 ] } ] @@ -1635,7 +1718,7 @@ } ] }, - "span": 54 + "span": 57 }, { "kind": { @@ -1663,7 +1746,7 @@ } ] }, - "span": 53 + "span": 56 } ], "terminator": { @@ -1686,14 +1769,14 @@ } } }, - "span": 53 + "span": 56 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 55 + "span": 58 } }, { @@ -1738,9 +1821,9 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1754,9 +1837,9 @@ "const_": { "id": 11, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 56, + "span": 59, "user_ty": null } }, @@ -1764,53 +1847,53 @@ "unwind": "Continue" } }, - "span": 56 + "span": 59 } } ], "locals": [ { "mutability": "Mut", - "span": 57, + "span": 60, "ty": 1 }, { "mutability": "Not", - "span": 58, - "ty": 28 + "span": 61, + "ty": 29 }, { "mutability": "Mut", - "span": 53, - "ty": 24 + "span": 56, + "ty": 25 }, { "mutability": "Mut", - "span": 48, - "ty": 25 + "span": 51, + "ty": 26 }, { "mutability": "Mut", - "span": 52, - "ty": 25 + "span": 55, + "ty": 26 }, { "mutability": "Mut", - "span": 48, - "ty": 29 + "span": 51, + "ty": 30 }, { "mutability": "Mut", - "span": 54, - "ty": 25 + "span": 57, + "ty": 26 }, { "mutability": "Mut", - "span": 56, - "ty": 30 + "span": 59, + "ty": 31 } ], - "span": 59, + "span": 62, "spread_arg": null, "var_debug_info": [ { @@ -1819,7 +1902,7 @@ "name": "s", "source_info": { "scope": 1, - "span": 58 + "span": 61 }, "value": { "Place": { diff --git a/tests/integration/programs/sum-to-n.smir.json.expected b/tests/integration/programs/sum-to-n.smir.json.expected index 5b34262..fd8f104 100644 --- a/tests/integration/programs/sum-to-n.smir.json.expected +++ b/tests/integration/programs/sum-to-n.smir.json.expected @@ -608,6 +608,42 @@ "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": { @@ -631,7 +667,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -645,7 +681,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -654,19 +690,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -678,7 +720,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -704,6 +746,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -739,7 +786,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -747,6 +794,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -784,7 +846,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -798,9 +860,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -808,7 +870,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -824,7 +886,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -838,9 +900,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -848,35 +910,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -885,7 +947,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -900,7 +962,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -915,7 +977,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -924,7 +986,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -976,9 +1038,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -986,35 +1048,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1053,35 +1115,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1127,7 +1189,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1156,9 +1218,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1168,7 +1230,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1184,14 +1246,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1207,40 +1269,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1263,23 +1325,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1326,37 +1388,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5, @@ -1406,16 +1489,16 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 68, + "span": 71, "user_ty": null } } } ] }, - "span": 69 + "span": 72 } ], "terminator": { @@ -1438,9 +1521,9 @@ "const_": { "id": 11, "kind": "ZeroSized", - "ty": 27 + "ty": 28 }, - "span": 66, + "span": 69, "user_ty": null } }, @@ -1448,7 +1531,7 @@ "unwind": "Continue" } }, - "span": 67 + "span": 70 } }, { @@ -1484,16 +1567,16 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 71, + "span": 74, "user_ty": null } } } ] }, - "span": 72 + "span": 75 }, { "kind": { @@ -1521,7 +1604,7 @@ } ] }, - "span": 73 + "span": 76 } ], "terminator": { @@ -1544,7 +1627,7 @@ } } }, - "span": 70 + "span": 73 } }, { @@ -1589,9 +1672,9 @@ } } }, - "ty": 29 + "ty": 30 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1605,9 +1688,9 @@ "const_": { "id": 14, "kind": "ZeroSized", - "ty": 28 + "ty": 29 }, - "span": 74, + "span": 77, "user_ty": null } }, @@ -1615,50 +1698,50 @@ "unwind": "Continue" } }, - "span": 74 + "span": 77 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 75 + "span": 78 } } ], "locals": [ { "mutability": "Mut", - "span": 76, + "span": 79, "ty": 1 }, { "mutability": "Not", - "span": 77, - "ty": 25 + "span": 80, + "ty": 26 }, { "mutability": "Mut", - "span": 67, - "ty": 24 + "span": 70, + "ty": 25 }, { "mutability": "Mut", - "span": 69, - "ty": 24 + "span": 72, + "ty": 25 }, { "mutability": "Mut", - "span": 72, - "ty": 24 + "span": 75, + "ty": 25 }, { "mutability": "Mut", - "span": 74, - "ty": 30 + "span": 77, + "ty": 31 } ], - "span": 80, + "span": 83, "spread_arg": null, "var_debug_info": [ { @@ -1667,7 +1750,7 @@ "name": "n", "source_info": { "scope": 1, - "span": 78 + "span": 81 }, "value": { "Const": { @@ -1692,9 +1775,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 68, + "span": 71, "user_ty": null } } @@ -1705,7 +1788,7 @@ "name": "golden", "source_info": { "scope": 2, - "span": 79 + "span": 82 }, "value": { "Const": { @@ -1730,9 +1813,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 71, + "span": 74, "user_ty": null } } @@ -1743,7 +1826,7 @@ "name": "sucess", "source_info": { "scope": 3, - "span": 77 + "span": 80 }, "value": { "Place": { @@ -1784,9 +1867,9 @@ "const_": { "id": 16, "kind": "ZeroSized", - "ty": 31 + "ty": 32 }, - "span": 81, + "span": 84, "user_ty": null } }, @@ -1794,30 +1877,30 @@ "unwind": "Continue" } }, - "span": 82 + "span": 85 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 83 + "span": 86 } } ], "locals": [ { "mutability": "Mut", - "span": 84, + "span": 87, "ty": 1 }, { "mutability": "Not", - "span": 82, + "span": 85, "ty": 1 } ], - "span": 85, + "span": 88, "spread_arg": null, "var_debug_info": [] } @@ -1869,16 +1952,16 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 48, + "span": 51, "user_ty": null } } } ] }, - "span": 48 + "span": 51 }, { "kind": { @@ -1897,7 +1980,7 @@ } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -1906,7 +1989,7 @@ "target": 1 } }, - "span": 47 + "span": 50 } }, { @@ -1928,7 +2011,7 @@ } ] }, - "span": 51 + "span": 54 }, { "kind": { @@ -1969,9 +2052,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 52, + "span": 55, "user_ty": null } } @@ -1979,7 +2062,7 @@ } ] }, - "span": 50 + "span": 53 } ], "terminator": { @@ -2002,7 +2085,7 @@ } } }, - "span": 50 + "span": 53 } }, { @@ -2024,7 +2107,7 @@ } ] }, - "span": 54 + "span": 57 }, { "kind": { @@ -2052,7 +2135,7 @@ } ] }, - "span": 53 + "span": 56 } ], "terminator": { @@ -2065,7 +2148,7 @@ { "Field": [ 1, - 25 + 26 ] } ] @@ -2093,7 +2176,7 @@ "unwind": "Continue" } }, - "span": 53 + "span": 56 } }, { @@ -2113,7 +2196,7 @@ { "Field": [ 0, - 24 + 25 ] } ] @@ -2122,7 +2205,7 @@ } ] }, - "span": 53 + "span": 56 }, { "kind": { @@ -2141,7 +2224,7 @@ } ] }, - "span": 57 + "span": 60 }, { "kind": { @@ -2182,9 +2265,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 55, + "span": 58, "user_ty": null } } @@ -2192,7 +2275,7 @@ } ] }, - "span": 56 + "span": 59 } ], "terminator": { @@ -2205,7 +2288,7 @@ { "Field": [ 1, - 25 + 26 ] } ] @@ -2244,9 +2327,9 @@ } } }, - "ty": 24 + "ty": 25 }, - "span": 55, + "span": 58, "user_ty": null } } @@ -2256,7 +2339,7 @@ "unwind": "Continue" } }, - "span": 56 + "span": 59 } }, { @@ -2276,7 +2359,7 @@ { "Field": [ 0, - 24 + 25 ] } ] @@ -2285,7 +2368,7 @@ } ] }, - "span": 58 + "span": 61 } ], "terminator": { @@ -2294,7 +2377,7 @@ "target": 1 } }, - "span": 47 + "span": 50 } }, { @@ -2316,68 +2399,68 @@ } ] }, - "span": 60 + "span": 63 } ], "terminator": { "kind": "Return", - "span": 59 + "span": 62 } } ], "locals": [ { "mutability": "Mut", - "span": 61, - "ty": 24 + "span": 64, + "ty": 25 }, { "mutability": "Not", - "span": 62, - "ty": 24 + "span": 65, + "ty": 25 }, { "mutability": "Mut", - "span": 63, - "ty": 24 + "span": 66, + "ty": 25 }, { "mutability": "Mut", - "span": 64, - "ty": 24 + "span": 67, + "ty": 25 }, { "mutability": "Mut", - "span": 50, - "ty": 25 + "span": 53, + "ty": 26 }, { "mutability": "Mut", - "span": 51, - "ty": 24 + "span": 54, + "ty": 25 }, { "mutability": "Mut", - "span": 54, - "ty": 24 + "span": 57, + "ty": 25 }, { "mutability": "Mut", - "span": 53, - "ty": 26 + "span": 56, + "ty": 27 }, { "mutability": "Mut", - "span": 57, - "ty": 24 + "span": 60, + "ty": 25 }, { "mutability": "Mut", - "span": 56, - "ty": 26 + "span": 59, + "ty": 27 } ], - "span": 65, + "span": 68, "spread_arg": null, "var_debug_info": [ { @@ -2386,7 +2469,7 @@ "name": "n", "source_info": { "scope": 0, - "span": 62 + "span": 65 }, "value": { "Place": { @@ -2401,7 +2484,7 @@ "name": "sum", "source_info": { "scope": 1, - "span": 63 + "span": 66 }, "value": { "Place": { @@ -2416,7 +2499,7 @@ "name": "counter", "source_info": { "scope": 2, - "span": 64 + "span": 67 }, "value": { "Place": { diff --git a/tests/integration/programs/tuple-eq.smir.json.expected b/tests/integration/programs/tuple-eq.smir.json.expected index d64beff..8340618 100644 --- a/tests/integration/programs/tuple-eq.smir.json.expected +++ b/tests/integration/programs/tuple-eq.smir.json.expected @@ -638,6 +638,42 @@ "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": { @@ -661,7 +697,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -675,7 +711,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -684,19 +720,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -708,7 +750,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -734,6 +776,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -769,7 +816,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -777,6 +824,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -814,7 +876,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -828,9 +890,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -838,7 +900,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -854,7 +916,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -868,9 +930,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -878,35 +940,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -915,7 +977,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -930,7 +992,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -945,7 +1007,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -954,7 +1016,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -982,7 +1044,7 @@ "kind": { "StorageLive": 3 }, - "span": 41 + "span": 44 }, { "kind": { @@ -1003,13 +1065,13 @@ } ] }, - "span": 41 + "span": 44 }, { "kind": { "StorageLive": 4 }, - "span": 42 + "span": 45 }, { "kind": { @@ -1030,7 +1092,7 @@ } ] }, - "span": 42 + "span": 45 }, { "kind": { @@ -1058,55 +1120,55 @@ } ] }, - "span": 43 + "span": 46 }, { "kind": { "StorageDead": 4 }, - "span": 44 + "span": 47 }, { "kind": { "StorageDead": 3 }, - "span": 44 + "span": 47 } ], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 45, - "ty": 20 + "span": 48, + "ty": 21 }, { "mutability": "Not", - "span": 46, - "ty": 21 + "span": 49, + "ty": 22 }, { "mutability": "Not", - "span": 47, - "ty": 21 + "span": 50, + "ty": 22 }, { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 16 }, { "mutability": "Mut", - "span": 42, + "span": 45, "ty": 16 } ], - "span": 48, + "span": 51, "spread_arg": null, "var_debug_info": [ { @@ -1115,7 +1177,7 @@ "name": "self", "source_info": { "scope": 0, - "span": 46 + "span": 49 }, "value": { "Place": { @@ -1130,7 +1192,7 @@ "name": "other", "source_info": { "scope": 0, - "span": 47 + "span": 50 }, "value": { "Place": { @@ -1186,9 +1248,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 49, + "span": 52, "user_ty": null } }, @@ -1196,35 +1258,35 @@ "unwind": "Continue" } }, - "span": 49 + "span": 52 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 49 + "span": 52 } } ], "locals": [ { "mutability": "Mut", - "span": 49, + "span": 52, "ty": 16 }, { "mutability": "Not", - "span": 49, - "ty": 23 + "span": 52, + "ty": 24 }, { "mutability": "Not", - "span": 49, + "span": 52, "ty": 1 } ], - "span": 49, + "span": 52, "spread_arg": 2, "var_debug_info": [] } @@ -1263,35 +1325,35 @@ "unwind": "Continue" } }, - "span": 49 + "span": 52 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 49 + "span": 52 } } ], "locals": [ { "mutability": "Mut", - "span": 49, + "span": 52, "ty": 1 }, { "mutability": "Not", - "span": 49, + "span": 52, "ty": 7 }, { "mutability": "Not", - "span": 49, + "span": 52, "ty": 1 } ], - "span": 49, + "span": 52, "spread_arg": 2, "var_debug_info": [] } @@ -1337,7 +1399,7 @@ } ] }, - "span": 49 + "span": 52 } ], "terminator": { @@ -1366,9 +1428,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 24 + "ty": 25 }, - "span": 49, + "span": 52, "user_ty": null } }, @@ -1378,7 +1440,7 @@ } } }, - "span": 49 + "span": 52 } }, { @@ -1394,14 +1456,14 @@ "unwind": "Continue" } }, - "span": 49 + "span": 52 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 49 + "span": 52 } }, { @@ -1417,40 +1479,40 @@ "unwind": "Terminate" } }, - "span": 49 + "span": 52 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 49 + "span": 52 } } ], "locals": [ { "mutability": "Mut", - "span": 49, + "span": 52, "ty": 16 }, { "mutability": "Not", - "span": 49, + "span": 52, "ty": 12 }, { "mutability": "Not", - "span": 49, + "span": 52, "ty": 1 }, { "mutability": "Not", - "span": 49, - "ty": 25 + "span": 52, + "ty": 26 } ], - "span": 49, + "span": 52, "spread_arg": 2, "var_debug_info": [] } @@ -1473,23 +1535,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 50 + "span": 53 } } ], "locals": [ { "mutability": "Mut", - "span": 50, + "span": 53, "ty": 1 }, { "mutability": "Not", - "span": 50, - "ty": 23 + "span": 53, + "ty": 24 } ], - "span": 50, + "span": 53, "spread_arg": null, "var_debug_info": [] } @@ -1514,13 +1576,13 @@ "kind": { "StorageLive": 3 }, - "span": 51 + "span": 54 }, { "kind": { "StorageLive": 4 }, - "span": 52 + "span": 55 }, { "kind": { @@ -1551,13 +1613,13 @@ } ] }, - "span": 52 + "span": 55 }, { "kind": { "StorageLive": 5 }, - "span": 53 + "span": 56 }, { "kind": { @@ -1588,7 +1650,7 @@ } ] }, - "span": 53 + "span": 56 } ], "terminator": { @@ -1617,9 +1679,9 @@ "const_": { "id": 8, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 51, + "span": 54, "user_ty": null } }, @@ -1627,7 +1689,7 @@ "unwind": "Continue" } }, - "span": 51 + "span": 54 } }, { @@ -1652,7 +1714,7 @@ } } }, - "span": 51 + "span": 54 } }, { @@ -1661,19 +1723,19 @@ "kind": { "StorageDead": 5 }, - "span": 54 + "span": 57 }, { "kind": { "StorageDead": 4 }, - "span": 54 + "span": 57 }, { "kind": { "StorageLive": 6 }, - "span": 52 + "span": 55 }, { "kind": { @@ -1704,13 +1766,13 @@ } ] }, - "span": 52 + "span": 55 }, { "kind": { "StorageLive": 7 }, - "span": 53 + "span": 56 }, { "kind": { @@ -1741,7 +1803,7 @@ } ] }, - "span": 53 + "span": 56 } ], "terminator": { @@ -1770,9 +1832,9 @@ "const_": { "id": 8, "kind": "ZeroSized", - "ty": 26 + "ty": 27 }, - "span": 51, + "span": 54, "user_ty": null } }, @@ -1780,7 +1842,7 @@ "unwind": "Continue" } }, - "span": 51 + "span": 54 } }, { @@ -1789,13 +1851,13 @@ "kind": { "StorageDead": 5 }, - "span": 54 + "span": 57 }, { "kind": { "StorageDead": 4 }, - "span": 54 + "span": 57 }, { "kind": { @@ -1821,16 +1883,16 @@ } } }, - "ty": 20 + "ty": 21 }, - "span": 51, + "span": 54, "user_ty": null } } } ] }, - "span": 51 + "span": 54 } ], "terminator": { @@ -1839,7 +1901,7 @@ "target": 5 } }, - "span": 51 + "span": 54 } }, { @@ -1848,13 +1910,13 @@ "kind": { "StorageDead": 7 }, - "span": 54 + "span": 57 }, { "kind": { "StorageDead": 6 }, - "span": 54 + "span": 57 } ], "terminator": { @@ -1863,7 +1925,7 @@ "target": 5 } }, - "span": 51 + "span": 54 } }, { @@ -1872,58 +1934,58 @@ "kind": { "StorageDead": 3 }, - "span": 54 + "span": 57 } ], "terminator": { "kind": "Return", - "span": 55 + "span": 58 } } ], "locals": [ { "mutability": "Mut", - "span": 56, - "ty": 20 + "span": 59, + "ty": 21 }, { "mutability": "Not", - "span": 57, - "ty": 27 + "span": 60, + "ty": 28 }, { "mutability": "Not", - "span": 58, - "ty": 27 + "span": 61, + "ty": 28 }, { "mutability": "Mut", - "span": 51, - "ty": 20 + "span": 54, + "ty": 21 }, { "mutability": "Mut", - "span": 52, - "ty": 21 + "span": 55, + "ty": 22 }, { "mutability": "Mut", - "span": 53, - "ty": 21 + "span": 56, + "ty": 22 }, { "mutability": "Mut", - "span": 52, - "ty": 21 + "span": 55, + "ty": 22 }, { "mutability": "Mut", - "span": 53, - "ty": 21 + "span": 56, + "ty": 22 } ], - "span": 59, + "span": 62, "spread_arg": null, "var_debug_info": [ { @@ -1932,7 +1994,7 @@ "name": "self", "source_info": { "scope": 0, - "span": 57 + "span": 60 }, "value": { "Place": { @@ -1947,7 +2009,7 @@ "name": "other", "source_info": { "scope": 0, - "span": 58 + "span": 61 }, "value": { "Place": { @@ -2001,37 +2063,58 @@ }, "ty": 17 }, - "span": 61, + "span": 64, "user_ty": null } } } ] }, - "span": 61 + "span": 64 } ], "terminator": { "kind": "Return", - "span": 60 + "span": 63 } } ], "locals": [ { "mutability": "Mut", - "span": 62, + "span": 65, "ty": 17 }, { "mutability": "Not", - "span": 63, + "span": 66, "ty": 1 } ], - "span": 64, + "span": 67, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 66 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 7, @@ -2082,7 +2165,7 @@ }, "ty": 16 }, - "span": 66, + "span": 69, "user_ty": null } }, @@ -2107,7 +2190,7 @@ }, "ty": 16 }, - "span": 67, + "span": 70, "user_ty": null } } @@ -2116,7 +2199,7 @@ } ] }, - "span": 68 + "span": 71 }, { "kind": { @@ -2139,7 +2222,7 @@ } ] }, - "span": 69 + "span": 72 }, { "kind": { @@ -2177,16 +2260,16 @@ } } }, - "ty": 27 + "ty": 28 }, - "span": 70, + "span": 73, "user_ty": null } } } ] }, - "span": 70 + "span": 73 } ], "terminator": { @@ -2215,9 +2298,9 @@ "const_": { "id": 11, "kind": "ZeroSized", - "ty": 28 + "ty": 29 }, - "span": 65, + "span": 68, "user_ty": null } }, @@ -2225,7 +2308,7 @@ "unwind": "Continue" } }, - "span": 65 + "span": 68 } }, { @@ -2250,14 +2333,14 @@ } } }, - "span": 65 + "span": 68 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 71 + "span": 74 } }, { @@ -2302,9 +2385,9 @@ } } }, - "ty": 30 + "ty": 31 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -2318,9 +2401,9 @@ "const_": { "id": 15, "kind": "ZeroSized", - "ty": 29 + "ty": 30 }, - "span": 72, + "span": 75, "user_ty": null } }, @@ -2328,43 +2411,43 @@ "unwind": "Continue" } }, - "span": 72 + "span": 75 } } ], "locals": [ { "mutability": "Mut", - "span": 73, + "span": 76, "ty": 1 }, { "mutability": "Not", - "span": 74, - "ty": 31 + "span": 77, + "ty": 32 }, { "mutability": "Mut", - "span": 65, - "ty": 20 + "span": 68, + "ty": 21 }, { "mutability": "Mut", - "span": 69, - "ty": 27 + "span": 72, + "ty": 28 }, { "mutability": "Mut", - "span": 70, - "ty": 27 + "span": 73, + "ty": 28 }, { "mutability": "Mut", - "span": 72, - "ty": 32 + "span": 75, + "ty": 33 } ], - "span": 75, + "span": 78, "spread_arg": null, "var_debug_info": [ { @@ -2373,7 +2456,7 @@ "name": "tup", "source_info": { "scope": 1, - "span": 74 + "span": 77 }, "value": { "Place": { @@ -2421,7 +2504,7 @@ }, "ty": 16 }, - "span": 76, + "span": 79, "user_ty": null } }, @@ -2446,7 +2529,7 @@ }, "ty": 16 }, - "span": 77, + "span": 80, "user_ty": null } } @@ -2455,7 +2538,7 @@ } ] }, - "span": 70 + "span": 73 }, { "kind": { @@ -2478,28 +2561,28 @@ } ] }, - "span": 70 + "span": 73 } ], "terminator": { "kind": "Return", - "span": 70 + "span": 73 } } ], "locals": [ { "mutability": "Mut", - "span": 70, - "ty": 27 + "span": 73, + "ty": 28 }, { "mutability": "Mut", - "span": 70, - "ty": 31 + "span": 73, + "ty": 32 } ], - "span": 70, + "span": 73, "spread_arg": null, "var_debug_info": [] } diff --git a/tests/integration/programs/tuples-simple.smir.json.expected b/tests/integration/programs/tuples-simple.smir.json.expected index b289b9d..e51b2a4 100644 --- a/tests/integration/programs/tuples-simple.smir.json.expected +++ b/tests/integration/programs/tuples-simple.smir.json.expected @@ -136,7 +136,7 @@ }, "ty": 16 }, - "span": 48, + "span": 51, "user_ty": null } }, @@ -161,7 +161,7 @@ }, "ty": 16 }, - "span": 49, + "span": 52, "user_ty": null } } @@ -170,7 +170,7 @@ } ] }, - "span": 50 + "span": 53 }, { "kind": { @@ -196,7 +196,7 @@ } ] }, - "span": 51 + "span": 54 }, { "kind": { @@ -222,7 +222,7 @@ } ] }, - "span": 52 + "span": 55 }, { "kind": { @@ -250,7 +250,7 @@ } ] }, - "span": 47 + "span": 50 } ], "terminator": { @@ -273,14 +273,14 @@ } } }, - "span": 47 + "span": 50 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 53 + "span": 56 } }, { @@ -325,9 +325,9 @@ } } }, - "ty": 25 + "ty": 26 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -341,9 +341,9 @@ "const_": { "id": 11, "kind": "ZeroSized", - "ty": 24 + "ty": 25 }, - "span": 54, + "span": 57, "user_ty": null } }, @@ -351,43 +351,43 @@ "unwind": "Continue" } }, - "span": 54 + "span": 57 } } ], "locals": [ { "mutability": "Mut", - "span": 55, + "span": 58, "ty": 1 }, { "mutability": "Not", - "span": 56, - "ty": 26 + "span": 59, + "ty": 27 }, { "mutability": "Mut", - "span": 47, - "ty": 27 + "span": 50, + "ty": 28 }, { "mutability": "Mut", - "span": 51, + "span": 54, "ty": 16 }, { "mutability": "Mut", - "span": 52, + "span": 55, "ty": 16 }, { "mutability": "Mut", - "span": 54, - "ty": 28 + "span": 57, + "ty": 29 } ], - "span": 57, + "span": 60, "spread_arg": null, "var_debug_info": [ { @@ -396,7 +396,7 @@ "name": "tup", "source_info": { "scope": 1, - "span": 56 + "span": 59 }, "value": { "Place": { @@ -926,6 +926,42 @@ "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": { @@ -949,7 +985,7 @@ } ] }, - "span": 22 + "span": 23 }, { "kind": { @@ -963,7 +999,7 @@ "IntToInt", { "Move": { - "local": 5, + "local": 6, "projection": [] } }, @@ -972,19 +1008,25 @@ } ] }, - "span": 23 + "span": 24 + }, + { + "kind": { + "StorageDead": 6 + }, + "span": 25 }, { "kind": { "StorageDead": 5 }, - "span": 24 + "span": 26 }, { "kind": { "StorageDead": 2 }, - "span": 25 + "span": 27 } ], "terminator": { @@ -996,7 +1038,7 @@ "locals": [ { "mutability": "Mut", - "span": 26, + "span": 28, "ty": 16 }, { @@ -1022,6 +1064,11 @@ { "mutability": "Mut", "span": 22, + "ty": 18 + }, + { + "mutability": "Mut", + "span": 23, "ty": 9 } ], @@ -1057,7 +1104,7 @@ "name": "self", "source_info": { "scope": 1, - "span": 27 + "span": 29 }, "value": { "Place": { @@ -1065,6 +1112,21 @@ "projection": [] } } + }, + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 2, + "span": 30 + }, + "value": { + "Place": { + "local": 5, + "projection": [] + } + } } ] } @@ -1102,7 +1164,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1116,9 +1178,9 @@ "const_": { "id": 3, "kind": "ZeroSized", - "ty": 18 + "ty": 19 }, - "span": 28, + "span": 31, "user_ty": null } }, @@ -1126,7 +1188,7 @@ "unwind": "Continue" } }, - "span": 30 + "span": 33 } }, { @@ -1142,7 +1204,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1156,9 +1218,9 @@ "const_": { "id": 5, "kind": "ZeroSized", - "ty": 19 + "ty": 20 }, - "span": 31, + "span": 34, "user_ty": null } }, @@ -1166,35 +1228,35 @@ "unwind": "Unreachable" } }, - "span": 32 + "span": 35 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 33 + "span": 36 } } ], "locals": [ { "mutability": "Mut", - "span": 34, + "span": 37, "ty": 1 }, { "mutability": "Not", - "span": 35, + "span": 38, "ty": 7 }, { "mutability": "Not", - "span": 36, + "span": 39, "ty": 1 } ], - "span": 39, + "span": 42, "spread_arg": null, "var_debug_info": [ { @@ -1203,7 +1265,7 @@ "name": "f", "source_info": { "scope": 0, - "span": 35 + "span": 38 }, "value": { "Place": { @@ -1218,7 +1280,7 @@ "name": "result", "source_info": { "scope": 1, - "span": 37 + "span": 40 }, "value": { "Place": { @@ -1233,7 +1295,7 @@ "name": "dummy", "source_info": { "scope": 2, - "span": 38 + "span": 41 }, "value": { "Const": { @@ -1242,7 +1304,7 @@ "kind": "ZeroSized", "ty": 1 }, - "span": 29, + "span": 32, "user_ty": null } } @@ -1294,9 +1356,9 @@ "const_": { "id": 6, "kind": "ZeroSized", - "ty": 20 + "ty": 21 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1304,35 +1366,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, - "ty": 21 + "span": 43, + "ty": 22 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1371,35 +1433,35 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 7 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1445,7 +1507,7 @@ } ] }, - "span": 40 + "span": 43 } ], "terminator": { @@ -1474,9 +1536,9 @@ "const_": { "id": 7, "kind": "ZeroSized", - "ty": 22 + "ty": 23 }, - "span": 40, + "span": 43, "user_ty": null } }, @@ -1486,7 +1548,7 @@ } } }, - "span": 40 + "span": 43 } }, { @@ -1502,14 +1564,14 @@ "unwind": "Continue" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Return", - "span": 40 + "span": 43 } }, { @@ -1525,40 +1587,40 @@ "unwind": "Terminate" } }, - "span": 40 + "span": 43 } }, { "statements": [], "terminator": { "kind": "Resume", - "span": 40 + "span": 43 } } ], "locals": [ { "mutability": "Mut", - "span": 40, + "span": 43, "ty": 16 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 12 }, { "mutability": "Not", - "span": 40, + "span": 43, "ty": 1 }, { "mutability": "Not", - "span": 40, - "ty": 23 + "span": 43, + "ty": 24 } ], - "span": 40, + "span": 43, "spread_arg": 2, "var_debug_info": [] } @@ -1581,23 +1643,23 @@ "statements": [], "terminator": { "kind": "Return", - "span": 41 + "span": 44 } } ], "locals": [ { "mutability": "Mut", - "span": 41, + "span": 44, "ty": 1 }, { "mutability": "Not", - "span": 41, - "ty": 21 + "span": 44, + "ty": 22 } ], - "span": 41, + "span": 44, "spread_arg": null, "var_debug_info": [] } @@ -1644,37 +1706,58 @@ }, "ty": 17 }, - "span": 43, + "span": 46, "user_ty": null } } } ] }, - "span": 43 + "span": 46 } ], "terminator": { "kind": "Return", - "span": 42 + "span": 45 } } ], "locals": [ { "mutability": "Mut", - "span": 44, + "span": 47, "ty": 17 }, { "mutability": "Not", - "span": 45, + "span": 48, "ty": 1 } ], - "span": 46, + "span": 49, "spread_arg": null, - "var_debug_info": [] + "var_debug_info": [ + { + "argument_index": 1, + "composite": null, + "name": "self", + "source_info": { + "scope": 0, + "span": 48 + }, + "value": { + "Const": { + "const_": { + "id": 4, + "kind": "ZeroSized", + "ty": 1 + }, + "span": 32, + "user_ty": null + } + } + } + ] } ], "id": 5,