diff options
| author | Oliver Schneider <github35764891676564198441@oli-obk.de> | 2018-06-27 11:37:52 +0200 |
|---|---|---|
| committer | Oliver Schneider <github35764891676564198441@oli-obk.de> | 2018-06-27 11:37:52 +0200 |
| commit | 98a48fdae61bfbc59e10a3aba317fb5b23ed11bf (patch) | |
| tree | ca0cdfa2e3babf1b106affd78c8629764d4e46e6 | |
| parent | 5bd9eaa1ad20c3a84b162a825350f7b4c532e7ae (diff) | |
| download | rust-98a48fdae61bfbc59e10a3aba317fb5b23ed11bf.tar.gz rust-98a48fdae61bfbc59e10a3aba317fb5b23ed11bf.zip | |
Deduplicate async's impl Trait id lowering
| -rw-r--r-- | src/librustc/hir/lowering.rs | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs index 09911292ff5..792f67b5ef5 100644 --- a/src/librustc/hir/lowering.rs +++ b/src/librustc/hir/lowering.rs @@ -3081,8 +3081,12 @@ impl<'a> LoweringContext<'a> { fn lower_impl_trait_ids( &mut self, decl: &FnDecl, + header: &FnHeader, ids: &mut SmallVector<hir::ItemId>, ) { + if let Some(id) = header.asyncness.opt_return_id() { + ids.push(hir::ItemId { id }); + } struct IdVisitor<'a> { ids: &'a mut SmallVector<hir::ItemId> } impl<'a, 'b> Visitor<'a> for IdVisitor<'b> { fn visit_ty(&mut self, ty: &'a Ty) { @@ -3126,20 +3130,14 @@ impl<'a> LoweringContext<'a> { ItemKind::MacroDef(..) => SmallVector::new(), ItemKind::Fn(ref decl, ref header, ..) => { let mut ids = SmallVector::one(hir::ItemId { id: i.id }); - if let Some(id) = header.asyncness.opt_return_id() { - ids.push(hir::ItemId { id }); - } - self.lower_impl_trait_ids(decl, &mut ids); + self.lower_impl_trait_ids(decl, header, &mut ids); ids }, ItemKind::Impl(.., None, _, ref items) => { let mut ids = SmallVector::one(hir::ItemId { id: i.id }); for item in items { if let ImplItemKind::Method(ref sig, _) = item.node { - if let Some(id) = sig.header.asyncness.opt_return_id() { - ids.push(hir::ItemId { id }); - } - self.lower_impl_trait_ids(&sig.decl, &mut ids); + self.lower_impl_trait_ids(&sig.decl, &sig.header, &mut ids); } } ids |
