Skip to content

Commit 855461b

Browse files
committed
Split foreign item resolving into its own method
1 parent 3583880 commit 855461b

File tree

1 file changed

+38
-34
lines changed

1 file changed

+38
-34
lines changed

compiler/rustc_resolve/src/late.rs

+38-34
Original file line numberDiff line numberDiff line change
@@ -987,40 +987,7 @@ impl<'ra: 'ast, 'ast, 'tcx> Visitor<'ast> for LateResolutionVisitor<'_, 'ast, 'r
987987
);
988988
}
989989
fn visit_foreign_item(&mut self, foreign_item: &'ast ForeignItem) {
990-
self.resolve_doc_links(&foreign_item.attrs, MaybeExported::Ok(foreign_item.id));
991-
let def_kind = self.r.local_def_kind(foreign_item.id);
992-
match foreign_item.kind {
993-
ForeignItemKind::TyAlias(box TyAlias { ref generics, .. }) => {
994-
self.with_generic_param_rib(
995-
&generics.params,
996-
RibKind::Item(HasGenericParams::Yes(generics.span), def_kind),
997-
LifetimeRibKind::Generics {
998-
binder: foreign_item.id,
999-
kind: LifetimeBinderKind::Item,
1000-
span: generics.span,
1001-
},
1002-
|this| visit::walk_item(this, foreign_item),
1003-
);
1004-
}
1005-
ForeignItemKind::Fn(box Fn { ref generics, .. }) => {
1006-
self.with_generic_param_rib(
1007-
&generics.params,
1008-
RibKind::Item(HasGenericParams::Yes(generics.span), def_kind),
1009-
LifetimeRibKind::Generics {
1010-
binder: foreign_item.id,
1011-
kind: LifetimeBinderKind::Function,
1012-
span: generics.span,
1013-
},
1014-
|this| visit::walk_item(this, foreign_item),
1015-
);
1016-
}
1017-
ForeignItemKind::Static(..) => {
1018-
self.with_static_rib(def_kind, |this| visit::walk_item(this, foreign_item))
1019-
}
1020-
ForeignItemKind::MacCall(..) => {
1021-
panic!("unexpanded macro in resolve!")
1022-
}
1023-
}
990+
self.with_owner(foreign_item.id, |this| this.resolve_foreign_item(foreign_item))
1024991
}
1025992
fn visit_fn(&mut self, fn_kind: FnKind<'ast>, sp: Span, fn_id: NodeId) {
1026993
let previous_value = self.diag_metadata.current_function;
@@ -3484,6 +3451,43 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
34843451
}
34853452
}
34863453

3454+
fn resolve_foreign_item(&mut self, foreign_item: &'ast ForeignItem) {
3455+
self.resolve_doc_links(&foreign_item.attrs, MaybeExported::Ok(foreign_item.id));
3456+
let def_kind = self.r.local_def_kind(foreign_item.id);
3457+
match foreign_item.kind {
3458+
ForeignItemKind::TyAlias(box TyAlias { ref generics, .. }) => {
3459+
self.with_generic_param_rib(
3460+
&generics.params,
3461+
RibKind::Item(HasGenericParams::Yes(generics.span), def_kind),
3462+
LifetimeRibKind::Generics {
3463+
binder: foreign_item.id,
3464+
kind: LifetimeBinderKind::Item,
3465+
span: generics.span,
3466+
},
3467+
|this| visit::walk_item(this, foreign_item),
3468+
);
3469+
}
3470+
ForeignItemKind::Fn(box Fn { ref generics, .. }) => {
3471+
self.with_generic_param_rib(
3472+
&generics.params,
3473+
RibKind::Item(HasGenericParams::Yes(generics.span), def_kind),
3474+
LifetimeRibKind::Generics {
3475+
binder: foreign_item.id,
3476+
kind: LifetimeBinderKind::Function,
3477+
span: generics.span,
3478+
},
3479+
|this| visit::walk_item(this, foreign_item),
3480+
);
3481+
}
3482+
ForeignItemKind::Static(..) => {
3483+
self.with_static_rib(def_kind, |this| visit::walk_item(this, foreign_item))
3484+
}
3485+
ForeignItemKind::MacCall(..) => {
3486+
panic!("unexpanded macro in resolve!")
3487+
}
3488+
}
3489+
}
3490+
34873491
fn check_trait_item<F>(
34883492
&mut self,
34893493
id: NodeId,

0 commit comments

Comments
 (0)