internal: normalize name

All def types in hir are unsubstituted
This commit is contained in:
Aleksey Kladov 2021-04-30 11:52:31 +03:00
parent 49b219b103
commit cb3ef552e8
5 changed files with 6 additions and 6 deletions

View File

@ -170,7 +170,7 @@ impl HirDisplay for Field {
fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
write_visibility(self.parent.module(f.db).id, self.visibility(f.db), f)?;
write!(f, "{}: ", self.name(f.db))?;
self.signature_ty(f.db).hir_fmt(f)
self.ty(f.db).hir_fmt(f)
}
}

View File

@ -509,7 +509,7 @@ pub fn name(&self, db: &dyn HirDatabase) -> Name {
/// placeholder types for type parameters). This is good for showing
/// signature help, but not so good to actually get the type of the field
/// when you actually have a variable of the struct.
pub fn signature_ty(&self, db: &dyn HirDatabase) -> Type {
pub fn ty(&self, db: &dyn HirDatabase) -> Type {
let var_id = self.parent.into();
let generic_def_id: GenericDefId = match self.parent {
VariantDef::Struct(it) => it.id.into(),

View File

@ -91,7 +91,7 @@ fn existing_from_impl(
let enum_type = enum_.ty(sema.db);
let wrapped_type = variant.fields(sema.db).get(0)?.signature_ty(sema.db);
let wrapped_type = variant.fields(sema.db).get(0)?.ty(sema.db);
if enum_type.impls_trait(sema.db, from_trait, &[wrapped_type]) {
Some(())

View File

@ -347,7 +347,7 @@ fn fill(
.and_then(|node| ast::RecordExprField::cast(node))
.and_then(|rf| self.sema.resolve_record_field(&rf).zip(Some(rf)))
.map(|(f, rf)|(
Some(f.0.signature_ty(self.db)),
Some(f.0.ty(self.db)),
rf.field_name().map(NameOrNameRef::NameRef),
))
.unwrap_or((None, None))
@ -357,7 +357,7 @@ fn fill(
self.sema
.resolve_record_field(&it)
.map(|f|(
Some(f.0.signature_ty(self.db)),
Some(f.0.ty(self.db)),
it.field_name().map(NameOrNameRef::NameRef),
))
.unwrap_or((None, None))

View File

@ -93,7 +93,7 @@ fn detail(&self) -> String {
.variant
.fields(self.ctx.db())
.into_iter()
.map(|field| (field.name(self.ctx.db()), field.signature_ty(self.ctx.db())));
.map(|field| (field.name(self.ctx.db()), field.ty(self.ctx.db())));
match self.variant_kind {
StructKind::Tuple | StructKind::Unit => format!(