rustdoc: simplify sugared_async_return_type
This commit is contained in:
parent
085acd02d4
commit
854cdff972
1 changed files with 9 additions and 26 deletions
|
@ -1604,14 +1604,16 @@ impl Type {
|
|||
///
|
||||
/// This function will panic if the return type does not match the expected sugaring for async
|
||||
/// functions.
|
||||
pub(crate) fn sugared_async_return_type(&self) -> Type {
|
||||
if let Type::ImplTrait(v) = self &&
|
||||
let [GenericBound::TraitBound(PolyTrait { trait_, .. }, _ )] = &v[..]
|
||||
pub(crate) fn sugared_async_return_type(self) -> Type {
|
||||
if let Type::ImplTrait(mut v) = self
|
||||
&& let Some(GenericBound::TraitBound(PolyTrait { mut trait_, .. }, _ )) = v.pop()
|
||||
&& let Some(segment) = trait_.segments.pop()
|
||||
&& let GenericArgs::AngleBracketed { mut bindings, .. } = segment.args
|
||||
&& let Some(binding) = bindings.pop()
|
||||
&& let TypeBindingKind::Equality { term } = binding.kind
|
||||
&& let Term::Type(ty) = term
|
||||
{
|
||||
let bindings = trait_.bindings().unwrap();
|
||||
let ret_ty = bindings[0].term();
|
||||
let ty = ret_ty.ty().expect("unexpected constant in async fn return term");
|
||||
ty.clone()
|
||||
ty
|
||||
} else {
|
||||
panic!("unexpected async fn return type")
|
||||
}
|
||||
|
@ -2189,16 +2191,6 @@ impl Path {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
pub(crate) fn bindings(&self) -> Option<&[TypeBinding]> {
|
||||
self.segments.last().and_then(|seg| {
|
||||
if let GenericArgs::AngleBracketed { ref bindings, .. } = seg.args {
|
||||
Some(&**bindings)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, PartialEq, Eq, Debug, Hash)]
|
||||
|
@ -2478,15 +2470,6 @@ pub(crate) enum TypeBindingKind {
|
|||
Constraint { bounds: Vec<GenericBound> },
|
||||
}
|
||||
|
||||
impl TypeBinding {
|
||||
pub(crate) fn term(&self) -> &Term {
|
||||
match self.kind {
|
||||
TypeBindingKind::Equality { ref term } => term,
|
||||
_ => panic!("expected equality type binding for parenthesized generic args"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// The type, lifetime, or constant that a private type alias's parameter should be
|
||||
/// replaced with when expanding a use of that type alias.
|
||||
///
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue