From 8a5fbf471305894094726834f7701747fce9c961 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sun, 17 Mar 2019 19:37:09 +0100 Subject: Remove the old variants replaced by Ty::Apply --- crates/ra_ide_api/src/completion/complete_dot.rs | 27 ++++++++++------------ .../src/completion/complete_struct_literal.rs | 6 ++--- 2 files changed, 15 insertions(+), 18 deletions(-) (limited to 'crates/ra_ide_api/src/completion') diff --git a/crates/ra_ide_api/src/completion/complete_dot.rs b/crates/ra_ide_api/src/completion/complete_dot.rs index 94c66be31..dc5206a64 100644 --- a/crates/ra_ide_api/src/completion/complete_dot.rs +++ b/crates/ra_ide_api/src/completion/complete_dot.rs @@ -1,4 +1,4 @@ -use hir::{Ty, AdtDef}; +use hir::{Ty, AdtDef, TypeName}; use crate::completion::{CompletionContext, Completions}; @@ -24,23 +24,20 @@ pub(super) fn complete_dot(acc: &mut Completions, ctx: &CompletionContext) { fn complete_fields(acc: &mut Completions, ctx: &CompletionContext, receiver: Ty) { for receiver in receiver.autoderef(ctx.db) { match receiver { - Ty::Adt { def_id, ref substs, .. } => { - match def_id { - AdtDef::Struct(s) => { - for field in s.fields(ctx.db) { - acc.add_field(ctx, field, substs); - } + Ty::Apply(a_ty) => match a_ty.name { + TypeName::Adt(AdtDef::Struct(s)) => { + for field in s.fields(ctx.db) { + acc.add_field(ctx, field, &a_ty.parameters); } - - // TODO unions - AdtDef::Enum(_) => (), } - } - Ty::Tuple(fields) => { - for (i, ty) in fields.iter().enumerate() { - acc.add_pos_field(ctx, i, ty); + // TODO unions + TypeName::Tuple => { + for (i, ty) in a_ty.parameters.iter().enumerate() { + acc.add_pos_field(ctx, i, ty); + } } - } + _ => {} + }, _ => {} }; } diff --git a/crates/ra_ide_api/src/completion/complete_struct_literal.rs b/crates/ra_ide_api/src/completion/complete_struct_literal.rs index 6bef9624e..b75526282 100644 --- a/crates/ra_ide_api/src/completion/complete_struct_literal.rs +++ b/crates/ra_ide_api/src/completion/complete_struct_literal.rs @@ -1,4 +1,4 @@ -use hir::{Ty, AdtDef}; +use hir::AdtDef; use crate::completion::{CompletionContext, Completions}; @@ -15,8 +15,8 @@ pub(super) fn complete_struct_literal(acc: &mut Completions, ctx: &CompletionCon None => return, }; let ty = infer_result[expr].clone(); - let (adt, substs) = match ty { - Ty::Adt { def_id, ref substs, .. } => (def_id, substs), + let (adt, substs) = match ty.as_adt() { + Some(res) => res, _ => return, }; match adt { -- cgit v1.2.3