From 60bdb66ef23f78d8c73afa1897a4542e7e722ed2 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sat, 7 Sep 2019 14:31:43 +0200 Subject: Lower bounds on trait definition, and resolve assoc types from super traits --- crates/ra_hir/src/ty/traits/chalk.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/ra_hir/src/ty/traits') diff --git a/crates/ra_hir/src/ty/traits/chalk.rs b/crates/ra_hir/src/ty/traits/chalk.rs index c201c5e50..cfe0cab16 100644 --- a/crates/ra_hir/src/ty/traits/chalk.rs +++ b/crates/ra_hir/src/ty/traits/chalk.rs @@ -636,7 +636,7 @@ pub(crate) fn impl_datum_query( _ => None, }) .filter_map(|t| { - let assoc_ty = trait_.associated_type_by_name(db, t.name(db))?; + let assoc_ty = trait_.associated_type_by_name(db, &t.name(db))?; let ty = db.type_for_def(t.into(), crate::Namespace::Types).subst(&bound_vars); Some(chalk_rust_ir::AssociatedTyValue { impl_id, -- cgit v1.2.3 From 9db34eec209c740ed919afb288f75daa755cd268 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sat, 7 Sep 2019 16:30:37 +0200 Subject: Fix Chalk environments The clauses need to be wrapped in `FromEnv` clauses for elaboration (i.e. things like inferring `T: Clone` from `T: Copy`) to work correctly. --- crates/ra_hir/src/ty/traits/chalk.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'crates/ra_hir/src/ty/traits') diff --git a/crates/ra_hir/src/ty/traits/chalk.rs b/crates/ra_hir/src/ty/traits/chalk.rs index cfe0cab16..8a127efa1 100644 --- a/crates/ra_hir/src/ty/traits/chalk.rs +++ b/crates/ra_hir/src/ty/traits/chalk.rs @@ -314,7 +314,8 @@ impl ToChalk for Arc { // for env, we just ignore errors continue; } - clauses.push(pred.clone().to_chalk(db).cast()); + let program_clause: chalk_ir::ProgramClause = pred.clone().to_chalk(db).cast(); + clauses.push(program_clause.into_from_env_clause()); } chalk_ir::Environment::new().add_clauses(clauses) } -- cgit v1.2.3