internal: normalize name
All def types in hir are unsubstituted
This commit is contained in:
parent
49b219b103
commit
cb3ef552e8
@ -170,7 +170,7 @@ impl HirDisplay for Field {
|
|||||||
fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
|
fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
|
||||||
write_visibility(self.parent.module(f.db).id, self.visibility(f.db), f)?;
|
write_visibility(self.parent.module(f.db).id, self.visibility(f.db), f)?;
|
||||||
write!(f, "{}: ", self.name(f.db))?;
|
write!(f, "{}: ", self.name(f.db))?;
|
||||||
self.signature_ty(f.db).hir_fmt(f)
|
self.ty(f.db).hir_fmt(f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -509,7 +509,7 @@ pub fn name(&self, db: &dyn HirDatabase) -> Name {
|
|||||||
/// placeholder types for type parameters). This is good for showing
|
/// placeholder types for type parameters). This is good for showing
|
||||||
/// signature help, but not so good to actually get the type of the field
|
/// signature help, but not so good to actually get the type of the field
|
||||||
/// when you actually have a variable of the struct.
|
/// 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 var_id = self.parent.into();
|
||||||
let generic_def_id: GenericDefId = match self.parent {
|
let generic_def_id: GenericDefId = match self.parent {
|
||||||
VariantDef::Struct(it) => it.id.into(),
|
VariantDef::Struct(it) => it.id.into(),
|
||||||
|
@ -91,7 +91,7 @@ fn existing_from_impl(
|
|||||||
|
|
||||||
let enum_type = enum_.ty(sema.db);
|
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]) {
|
if enum_type.impls_trait(sema.db, from_trait, &[wrapped_type]) {
|
||||||
Some(())
|
Some(())
|
||||||
|
@ -347,7 +347,7 @@ fn fill(
|
|||||||
.and_then(|node| ast::RecordExprField::cast(node))
|
.and_then(|node| ast::RecordExprField::cast(node))
|
||||||
.and_then(|rf| self.sema.resolve_record_field(&rf).zip(Some(rf)))
|
.and_then(|rf| self.sema.resolve_record_field(&rf).zip(Some(rf)))
|
||||||
.map(|(f, rf)|(
|
.map(|(f, rf)|(
|
||||||
Some(f.0.signature_ty(self.db)),
|
Some(f.0.ty(self.db)),
|
||||||
rf.field_name().map(NameOrNameRef::NameRef),
|
rf.field_name().map(NameOrNameRef::NameRef),
|
||||||
))
|
))
|
||||||
.unwrap_or((None, None))
|
.unwrap_or((None, None))
|
||||||
@ -357,7 +357,7 @@ fn fill(
|
|||||||
self.sema
|
self.sema
|
||||||
.resolve_record_field(&it)
|
.resolve_record_field(&it)
|
||||||
.map(|f|(
|
.map(|f|(
|
||||||
Some(f.0.signature_ty(self.db)),
|
Some(f.0.ty(self.db)),
|
||||||
it.field_name().map(NameOrNameRef::NameRef),
|
it.field_name().map(NameOrNameRef::NameRef),
|
||||||
))
|
))
|
||||||
.unwrap_or((None, None))
|
.unwrap_or((None, None))
|
||||||
|
@ -93,7 +93,7 @@ fn detail(&self) -> String {
|
|||||||
.variant
|
.variant
|
||||||
.fields(self.ctx.db())
|
.fields(self.ctx.db())
|
||||||
.into_iter()
|
.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 {
|
match self.variant_kind {
|
||||||
StructKind::Tuple | StructKind::Unit => format!(
|
StructKind::Tuple | StructKind::Unit => format!(
|
||||||
|
Loading…
Reference in New Issue
Block a user