From d6dc75f9f22b73faf8c526be69ca43e52d6db1bf Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Tue, 7 May 2019 18:53:16 +0200 Subject: Handle auto traits & negative impls We don't pass field types to Chalk yet though, so the auto trait inference won't be correct. --- crates/ra_hir/src/traits.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'crates/ra_hir/src/traits.rs') diff --git a/crates/ra_hir/src/traits.rs b/crates/ra_hir/src/traits.rs index 15f0977b7..dfe883fa4 100644 --- a/crates/ra_hir/src/traits.rs +++ b/crates/ra_hir/src/traits.rs @@ -11,6 +11,7 @@ use crate::{Function, Const, TypeAlias, Name, DefDatabase, Trait, ids::LocationC pub struct TraitData { name: Option, items: Vec, + auto: bool, } impl TraitData { @@ -19,6 +20,7 @@ impl TraitData { let name = node.name().map(|n| n.as_name()); let module = tr.module(db); let ctx = LocationCtx::new(db, module, file_id); + let auto = node.is_auto(); let items = if let Some(item_list) = node.item_list() { item_list .impl_items() @@ -31,7 +33,7 @@ impl TraitData { } else { Vec::new() }; - Arc::new(TraitData { name, items }) + Arc::new(TraitData { name, items, auto }) } pub(crate) fn name(&self) -> &Option { @@ -41,6 +43,10 @@ impl TraitData { pub(crate) fn items(&self) -> &[TraitItem] { &self.items } + + pub(crate) fn is_auto(&self) -> bool { + self.auto + } } #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -- cgit v1.2.3