- hir::ExprKind::Struct(qpath, ..) => {
- let segment = match qpath {
- hir::QPath::Resolved(_, path) => path.segments.last().unwrap(),
- hir::QPath::TypeRelative(_, segment) => segment,
- hir::QPath::LangItem(..) => unimplemented!(),
- };
- match ty.kind {
- ty::Adt(def, _) => {
- let sub_span = segment.ident.span;
- filter!(self.span_utils, sub_span);
- let span = self.span_from_span(sub_span);
- Some(Data::RefData(Ref {
- kind: RefKind::Type,
- span,
- ref_id: id_from_def_id(def.did),
- }))
- }
- _ => {
- debug!("expected adt, found {:?}", ty);
- None
- }
+ hir::ExprKind::Struct(qpath, ..) => match ty.kind {
+ ty::Adt(def, _) => {
+ let sub_span = qpath.last_segment_span();
+ filter!(self.span_utils, sub_span);
+ let span = self.span_from_span(sub_span);
+ Some(Data::RefData(Ref {
+ kind: RefKind::Type,
+ span,
+ ref_id: id_from_def_id(def.did),
+ }))