]> git.lizzy.rs Git - rust.git/commitdiff
Various cleanups
authorOliver Schneider <github35764891676564198441@oli-obk.de>
Wed, 13 Jun 2018 07:11:23 +0000 (09:11 +0200)
committerOliver Schneider <github35764891676564198441@oli-obk.de>
Wed, 13 Jun 2018 07:11:23 +0000 (09:11 +0200)
src/librustc/hir/map/mod.rs
src/librustc_mir/monomorphize/collector.rs
src/librustc_typeck/collect.rs
src/test/run-pass/impl-trait/bounds_regression.rs [new file with mode: 0644]

index 98b10f4e72f1d3a4d842c15c825e3c56cf693732..9df55e52061634962c67b5e5dcd338cf497f1fea 100644 (file)
@@ -558,12 +558,6 @@ pub fn body_owner_kind(&self, id: NodeId) -> BodyOwnerKind {
     pub fn ty_param_owner(&self, id: NodeId) -> NodeId {
         match self.get(id) {
             NodeItem(&Item { node: ItemTrait(..), .. }) => id,
-            NodeItem(&Item {
-                node: ItemExistential(ExistTy {
-                    impl_trait_fn: Some(did),
-                    ..
-                }), ..
-            }) => self.def_index_to_node_id(did.index),
             NodeTyParam(_) => self.get_parent_node(id),
             _ => {
                 bug!("ty_param_owner: {} not a type parameter",
@@ -774,7 +768,7 @@ pub fn get_return_block(&self, id: NodeId) -> Option<NodeId> {
 
     /// Retrieve the NodeId for `id`'s parent item, or `id` itself if no
     /// parent item is in this map. The "parent item" is the closest parent node
-    /// in the AST which is recorded by the map and is an item, either an item
+    /// in the HIR which is recorded by the map and is an item, either an item
     /// in a module, trait, or impl.
     pub fn get_parent(&self, id: NodeId) -> NodeId {
         match self.walk_parent_nodes(id, |node| match *node {
index c6b153632d5776ccb4c40217be2582ddc0967189..1fb12172838072e0d0204c34883af594fa44fab6 100644 (file)
@@ -944,6 +944,7 @@ fn visit_item(&mut self, item: &'v hir::Item) {
             hir::ItemTy(..)          |
             hir::ItemTrait(..)       |
             hir::ItemTraitAlias(..)  |
+            hir::ItemExistential(..) |
             hir::ItemMod(..)         => {
                 // Nothing to do, just keep recursing...
             }
@@ -958,7 +959,6 @@ fn visit_item(&mut self, item: &'v hir::Item) {
 
             hir::ItemEnum(_, ref generics) |
             hir::ItemStruct(_, ref generics) |
-            hir::ItemExistential(hir::ExistTy { ref generics, .. }) |
             hir::ItemUnion(_, ref generics) => {
                 if generics.params.is_empty() {
                     if self.mode == MonoItemCollectionMode::Eager {
index 865758692b1f61542864354b27202bc7f582faf5..1b2b8dce6f02e66dc929178977615330cb8b6203 100644 (file)
@@ -797,7 +797,7 @@ fn generics_of<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
         }
         NodeItem(item) => {
             match item.node {
-                ItemExistential(hir::ExistTy { impl_trait_fn: parent_did, .. }) => parent_did,
+                ItemExistential(hir::ExistTy { impl_trait_fn, .. }) => impl_trait_fn,
                 _ => None,
             }
         },
@@ -1353,8 +1353,6 @@ pub fn explicit_predicates_of<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
 
                     let predicates = bounds.predicates(tcx, anon_ty);
 
-                    debug!("explicit_predicates_of: predicates={:?}", predicates);
-
                     return ty::GenericPredicates {
                         parent: None,
                         predicates: predicates
diff --git a/src/test/run-pass/impl-trait/bounds_regression.rs b/src/test/run-pass/impl-trait/bounds_regression.rs
new file mode 100644 (file)
index 0000000..509fe93
--- /dev/null
@@ -0,0 +1,32 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+pub trait FakeGenerator {
+    type Yield;
+    type Return;
+}
+
+pub trait FakeFuture {
+    type Output;
+}
+
+pub fn future_from_generator<
+    T: FakeGenerator<Yield = ()>
+>(x: T) -> impl FakeFuture<Output = T::Return> {
+    GenFuture(x)
+}
+
+struct GenFuture<T: FakeGenerator<Yield = ()>>(T);
+
+impl<T: FakeGenerator<Yield = ()>> FakeFuture for GenFuture<T> {
+    type Output = T::Return;
+}
+
+fn main() {}
\ No newline at end of file