summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_metadata/src/rmeta/table.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_metadata/src/rmeta/table.rs')
-rw-r--r--compiler/rustc_metadata/src/rmeta/table.rs26
1 files changed, 25 insertions, 1 deletions
diff --git a/compiler/rustc_metadata/src/rmeta/table.rs b/compiler/rustc_metadata/src/rmeta/table.rs
index bb1320942..027994c40 100644
--- a/compiler/rustc_metadata/src/rmeta/table.rs
+++ b/compiler/rustc_metadata/src/rmeta/table.rs
@@ -167,7 +167,7 @@ fixed_size_enum! {
( Impl { of_trait: false } )
( Impl { of_trait: true } )
( Closure )
- ( Generator )
+ ( Coroutine )
( Static(ast::Mutability::Not) )
( Static(ast::Mutability::Mut) )
( Ctor(CtorOf::Struct, CtorKind::Fn) )
@@ -299,6 +299,30 @@ impl FixedSizeEncoding for bool {
}
}
+impl FixedSizeEncoding for Option<bool> {
+ type ByteArray = [u8; 1];
+
+ #[inline]
+ fn from_bytes(b: &[u8; 1]) -> Self {
+ match b[0] {
+ 0 => Some(false),
+ 1 => Some(true),
+ 2 => None,
+ _ => unreachable!(),
+ }
+ }
+
+ #[inline]
+ fn write_to_bytes(self, b: &mut [u8; 1]) {
+ debug_assert!(!self.is_default());
+ b[0] = match self {
+ Some(false) => 0,
+ Some(true) => 1,
+ None => 2,
+ };
+ }
+}
+
impl FixedSizeEncoding for UnusedGenericParams {
type ByteArray = [u8; 4];