diff --git a/Cargo.lock b/Cargo.lock index 4ebb7751c44..32636cc20d7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -167,7 +167,7 @@ dependencies = [ "chalk-ir 0.1.0", "chalk-macros 0.1.0", "chalk-parse 0.1.0", - "ena 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ena 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -222,12 +222,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "ena" -version = "0.4.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "ena" -version = "0.9.3" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -794,7 +797,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum docopt 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d8acd393692c503b168471874953a2531df0e9ab77d0b6bbc582395743300a4a" "checksum docopt 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d60c92df70dfaaabecc14b409fd79f55ba0f247780529db1d73bfa601e1d3ac0" "checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0" -"checksum ena 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5c109645f12ca057044ef2ffa56670cf7e3fd1fa530d73cd185e8298b03380b5" +"checksum ena 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "25b4e5febb25f08c49f1b07dc33a182729a6b21edfb562b5aef95f78e0dbe5bb" "checksum ena 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "88dc8393b3c7352f94092497f6b52019643e493b6b890eb417cdb7c46117e621" "checksum encode_unicode 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "28d65f1f5841ef7c6792861294b72beda34c664deb8be27970f36c306b7da1ce" "checksum error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07e791d3be96241c77c43846b665ef1384606da2cd2a48730abe606a12906e02" diff --git a/chalk-solve/Cargo.toml b/chalk-solve/Cargo.toml index 5a652624e35..18e9ca2a330 100644 --- a/chalk-solve/Cargo.toml +++ b/chalk-solve/Cargo.toml @@ -9,7 +9,7 @@ readme = "README.md" keywords = ["compiler", "traits", "prolog"] [dependencies] -ena = "0.4" +ena = "0.10.1" [dependencies.chalk-macros] version = "0.1.0" diff --git a/chalk-solve/src/infer.rs b/chalk-solve/src/infer.rs index e0b2e74959d..ccb9386eff4 100644 --- a/chalk-solve/src/infer.rs +++ b/chalk-solve/src/infer.rs @@ -15,13 +15,13 @@ use self::var::*; #[derive(Clone)] pub struct InferenceTable { - unify: ena::UnificationTable, + unify: ena::InPlaceUnificationTable, vars: Vec, max_universe: UniverseIndex, } pub struct InferenceSnapshot { - unify_snapshot: ena::Snapshot, + unify_snapshot: ena::Snapshot>, max_universe: UniverseIndex, vars: Vec, } diff --git a/chalk-solve/src/infer/var.rs b/chalk-solve/src/infer/var.rs index d202b0e108a..676b4f99dcf 100644 --- a/chalk-solve/src/infer/var.rs +++ b/chalk-solve/src/infer/var.rs @@ -95,6 +95,8 @@ impl From for InferenceValue { } impl UnifyValue for InferenceValue { + type Error = (InferenceValue, InferenceValue); + fn unify_values( a: &InferenceValue, b: &InferenceValue,