about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEduard-Mihai Burtescu <edy.burt@gmail.com>2020-04-17 16:55:08 +0300
committermark <markm@cs.wisc.edu>2020-04-24 13:31:37 -0500
commitd1db782dffc085cc24a9024b31d6b83862b02d8a (patch)
treee67b620dc85c2bd13afa00f94d9247f1de2b77d9
parentcff5b998e08ab3082512f72069fad38c12cc9702 (diff)
downloadrust-d1db782dffc085cc24a9024b31d6b83862b02d8a.tar.gz
rust-d1db782dffc085cc24a9024b31d6b83862b02d8a.zip
Split out the `Generator` case from `DefKind::Closure`.
-rw-r--r--src/librustc_hir/def.rs3
-rw-r--r--src/librustc_metadata/rmeta/decoder.rs2
-rw-r--r--src/librustc_middle/hir/map/mod.rs3
-rw-r--r--src/librustc_privacy/lib.rs7
-rw-r--r--src/librustc_save_analysis/lib.rs3
5 files changed, 12 insertions, 6 deletions
diff --git a/src/librustc_hir/def.rs b/src/librustc_hir/def.rs
index b4b19b9795b..8e87ce60ffd 100644
--- a/src/librustc_hir/def.rs
+++ b/src/librustc_hir/def.rs
@@ -88,6 +88,7 @@ pub enum DefKind {
     GlobalAsm,
     Impl,
     Closure,
+    Generator,
 }
 
 impl DefKind {
@@ -131,6 +132,7 @@ impl DefKind {
             DefKind::Field => "field",
             DefKind::Impl => "implementation",
             DefKind::Closure => "closure",
+            DefKind::Generator => "generator",
             DefKind::ExternCrate => "extern crate",
             DefKind::GlobalAsm => "global assembly block",
         }
@@ -184,6 +186,7 @@ impl DefKind {
             | DefKind::LifetimeParam
             | DefKind::ExternCrate
             | DefKind::Closure
+            | DefKind::Generator
             | DefKind::Use
             | DefKind::ForeignMod
             | DefKind::GlobalAsm
diff --git a/src/librustc_metadata/rmeta/decoder.rs b/src/librustc_metadata/rmeta/decoder.rs
index bc6c30ccc4e..39d8213f262 100644
--- a/src/librustc_metadata/rmeta/decoder.rs
+++ b/src/librustc_metadata/rmeta/decoder.rs
@@ -592,7 +592,7 @@ impl EntryKind {
             EntryKind::ForeignMod => DefKind::ForeignMod,
             EntryKind::GlobalAsm => DefKind::GlobalAsm,
             EntryKind::Field => DefKind::Field,
-            EntryKind::Generator(_) => DefKind::Closure,
+            EntryKind::Generator(_) => DefKind::Generator,
         }
     }
 }
diff --git a/src/librustc_middle/hir/map/mod.rs b/src/librustc_middle/hir/map/mod.rs
index d52edbfa96d..bd383bde3b5 100644
--- a/src/librustc_middle/hir/map/mod.rs
+++ b/src/librustc_middle/hir/map/mod.rs
@@ -285,7 +285,8 @@ impl<'hir> Map<'hir> {
             Node::AnonConst(_) => DefKind::AnonConst,
             Node::Field(_) => DefKind::Field,
             Node::Expr(expr) => match expr.kind {
-                ExprKind::Closure { .. } => DefKind::Closure,
+                ExprKind::Closure(.., None) => DefKind::Closure,
+                ExprKind::Closure(.., Some(_)) => DefKind::Generator,
                 _ => bug!("def_kind: unsupported node: {}", self.node_to_string(hir_id)),
             },
             Node::MacroDef(_) => DefKind::Macro(MacroKind::Bang),
diff --git a/src/librustc_privacy/lib.rs b/src/librustc_privacy/lib.rs
index 86dc0bb3fdd..27bbf43bc85 100644
--- a/src/librustc_privacy/lib.rs
+++ b/src/librustc_privacy/lib.rs
@@ -613,8 +613,8 @@ impl EmbargoVisitor<'tcx> {
                 }
             }
 
-            // These have type privacy or are not namespaced, so are not reachable unless they're
-            // public.
+            // These have type privacy, so are not reachable unless they're
+            // public, or are not namespaced at all.
             DefKind::AssocConst
             | DefKind::AssocTy
             | DefKind::AssocOpaqueTy
@@ -636,7 +636,8 @@ impl EmbargoVisitor<'tcx> {
             | DefKind::Field
             | DefKind::GlobalAsm
             | DefKind::Impl
-            | DefKind::Closure => (),
+            | DefKind::Closure
+            | DefKind::Generator => (),
         }
     }
 
diff --git a/src/librustc_save_analysis/lib.rs b/src/librustc_save_analysis/lib.rs
index 100c32fbc2a..8456a0304fe 100644
--- a/src/librustc_save_analysis/lib.rs
+++ b/src/librustc_save_analysis/lib.rs
@@ -771,7 +771,8 @@ impl<'l, 'tcx> SaveContext<'l, 'tcx> {
                 | HirDefKind::Field
                 | HirDefKind::GlobalAsm
                 | HirDefKind::Impl
-                | HirDefKind::Closure,
+                | HirDefKind::Closure
+                | HirDefKind::Generator,
                 _,
             )
             | Res::PrimTy(..)