if f.should_truncate() {
return write!(f, "{}", TYPE_HINT_TRUNCATION);
}
-
+
match self.kind(Interner) {
TyKind::Never => write!(f, "!")?,
TyKind::Str => write!(f, "str")?,
write!(f, "]")?;
}
TypeRef::Fn(parameters, is_varargs) => {
+ // FIXME: Function pointer qualifiers.
write!(f, "fn(")?;
for index in 0..parameters.len() - 1 {
- let (param_name,param_type) = ¶meters[index];
- match param_name {
- Some(name) => {
- write!(f, "{}: ", name)?;
- param_type.hir_fmt(f)?;
- },
- None => write!(f, " : {:?}", param_type)?,
- };
+ let (param_name, param_type) = ¶meters[index];
+ if let Some(name) = param_name {
+ write!(f, "{}: ", name)?;
+ }
+ param_type.hir_fmt(f)?;
+
+ // Last index contains the return type so we stop writing commas on the second-to-last index
if index != parameters.len() - 2 {
write!(f, ", ")?;
}
write!(f, "{}...", if parameters.len() == 1 { "" } else { ", " })?;
}
write!(f, ")")?;
- let ret_ty = ¶meters.last().unwrap().1;
- match ret_ty {
- TypeRef::Tuple(tup) if tup.is_empty() => {}
- _ => {
- write!(f, " -> ")?;
- ret_ty.hir_fmt(f)?;
+ if let Some((_, ret_ty)) = ¶meters.last() {
+ match ret_ty {
+ TypeRef::Tuple(tup) if tup.is_empty() => {}
+ _ => {
+ write!(f, " -> ")?;
+ ret_ty.hir_fmt(f)?;
+ }
}
}
}