mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 06:11:35 +00:00
Align FnPointer with Chalk
This commit is contained in:
parent
f25c1e7c6a
commit
edc59d897d
9 changed files with 86 additions and 40 deletions
|
@ -46,18 +46,18 @@ impl TyFingerprint {
|
|||
/// have impls: if we have some `struct S`, we can have an `impl S`, but not
|
||||
/// `impl &S`. Hence, this will return `None` for reference types and such.
|
||||
pub fn for_impl(ty: &Ty) -> Option<TyFingerprint> {
|
||||
let fp = match *ty.kind(&Interner) {
|
||||
let fp = match ty.kind(&Interner) {
|
||||
TyKind::Str => TyFingerprint::Str,
|
||||
TyKind::Never => TyFingerprint::Never,
|
||||
TyKind::Slice(..) => TyFingerprint::Slice,
|
||||
TyKind::Array(..) => TyFingerprint::Array,
|
||||
TyKind::Scalar(scalar) => TyFingerprint::Scalar(scalar),
|
||||
TyKind::Adt(AdtId(adt), _) => TyFingerprint::Adt(adt),
|
||||
TyKind::Tuple(cardinality, _) => TyFingerprint::Tuple(cardinality),
|
||||
TyKind::Raw(mutability, ..) => TyFingerprint::RawPtr(mutability),
|
||||
TyKind::Foreign(alias_id, ..) => TyFingerprint::ForeignType(alias_id),
|
||||
TyKind::Function(FnPointer { num_args, sig, .. }) => {
|
||||
TyFingerprint::FnPtr(num_args, sig)
|
||||
TyKind::Scalar(scalar) => TyFingerprint::Scalar(*scalar),
|
||||
TyKind::Adt(AdtId(adt), _) => TyFingerprint::Adt(*adt),
|
||||
TyKind::Tuple(cardinality, _) => TyFingerprint::Tuple(*cardinality),
|
||||
TyKind::Raw(mutability, ..) => TyFingerprint::RawPtr(*mutability),
|
||||
TyKind::Foreign(alias_id, ..) => TyFingerprint::ForeignType(*alias_id),
|
||||
TyKind::Function(FnPointer { sig, substitution: substs, .. }) => {
|
||||
TyFingerprint::FnPtr(substs.0.len(&Interner) - 1, *sig)
|
||||
}
|
||||
TyKind::Dyn(_) => ty.dyn_trait().map(|trait_| TyFingerprint::Dyn(trait_))?,
|
||||
_ => return None,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue