diff --git a/Cargo.lock b/Cargo.lock index f0b1a3fe97..1844b3df3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "ab_glyph" version = "0.2.11" @@ -3356,6 +3358,7 @@ dependencies = [ "roc_types", "roc_unify", "ven_ena", + "ven_graph", "ven_pretty", ] diff --git a/compiler/mono/Cargo.toml b/compiler/mono/Cargo.toml index cd0e0e6d77..9bd2127016 100644 --- a/compiler/mono/Cargo.toml +++ b/compiler/mono/Cargo.toml @@ -19,6 +19,7 @@ morphic_lib = { path = "../../vendor/morphic_lib" } bumpalo = { version = "3.6.1", features = ["collections"] } hashbrown = { version = "0.11.2", features = [ "bumpalo" ] } ven_ena = { path = "../../vendor/ena" } +ven_graph = { path = "../../vendor/pathfinding" } linked-hash-map = "0.5.4" [dev-dependencies] diff --git a/compiler/mono/src/ir.rs b/compiler/mono/src/ir.rs index 88186f6ecc..b4a5cd3681 100644 --- a/compiler/mono/src/ir.rs +++ b/compiler/mono/src/ir.rs @@ -848,13 +848,21 @@ impl<'a, 'i> Env<'a, 'i> { #[derive(Clone, Debug, PartialEq, Copy, Eq, Hash)] pub struct JoinPointId(pub Symbol); -#[derive(Clone, Debug, PartialEq)] +#[derive(Clone, Copy, Debug, PartialEq)] pub struct Param<'a> { pub symbol: Symbol, pub borrow: bool, pub layout: Layout<'a>, } +impl<'a> Param<'a> { + pub const EMPTY: Self = Param { + symbol: Symbol::EMPTY_PARAM, + borrow: false, + layout: Layout::Struct(&[]), + }; +} + pub fn cond<'a>( env: &mut Env<'a, '_>, cond_symbol: Symbol,