Rebase fallout

This commit is contained in:
Oliver Scherer 2019-10-25 12:03:34 +02:00
parent 97633f814d
commit 34f7fcb862
4 changed files with 28 additions and 30 deletions

View File

@ -76,7 +76,10 @@ pub fn encode_with_shorthand<E, T, M>(encoder: &mut E,
// The shorthand encoding uses the same usize as the // The shorthand encoding uses the same usize as the
// discriminant, with an offset so they can't conflict. // discriminant, with an offset so they can't conflict.
#[cfg(bootstrap)]
let discriminant = unsafe { intrinsics::discriminant_value(variant) }; let discriminant = unsafe { intrinsics::discriminant_value(variant) };
#[cfg(not(bootstrap))]
let discriminant = intrinsics::discriminant_value(variant);
assert!(discriminant < SHORTHAND_OFFSET as u64); assert!(discriminant < SHORTHAND_OFFSET as u64);
let shorthand = start + SHORTHAND_OFFSET; let shorthand = start + SHORTHAND_OFFSET;

View File

@ -51,34 +51,31 @@ enum Mixed {
} }
pub fn main() { pub fn main() {
unsafe { assert_eq!(discriminant_value(&CLike1::A), 0);
assert_eq!(discriminant_value(&CLike1::B), 1);
assert_eq!(discriminant_value(&CLike1::C), 2);
assert_eq!(discriminant_value(&CLike1::D), 3);
assert_eq!(discriminant_value(&CLike1::A), 0); assert_eq!(discriminant_value(&CLike2::A), 5);
assert_eq!(discriminant_value(&CLike1::B), 1); assert_eq!(discriminant_value(&CLike2::B), 2);
assert_eq!(discriminant_value(&CLike1::C), 2); assert_eq!(discriminant_value(&CLike2::C), 19);
assert_eq!(discriminant_value(&CLike1::D), 3); assert_eq!(discriminant_value(&CLike2::D), 20);
assert_eq!(discriminant_value(&CLike2::A), 5); assert_eq!(discriminant_value(&CLike3::A), 5);
assert_eq!(discriminant_value(&CLike2::B), 2); assert_eq!(discriminant_value(&CLike3::B), 6);
assert_eq!(discriminant_value(&CLike2::C), 19); assert_eq!(discriminant_value(&CLike3::C), -1_i8 as u64);
assert_eq!(discriminant_value(&CLike2::D), 20); assert_eq!(discriminant_value(&CLike3::D), 0);
assert_eq!(discriminant_value(&CLike3::A), 5); assert_eq!(discriminant_value(&ADT::First(0,0)), 0);
assert_eq!(discriminant_value(&CLike3::B), 6); assert_eq!(discriminant_value(&ADT::Second(5)), 1);
assert_eq!(discriminant_value(&CLike3::C), -1_i8 as u64);
assert_eq!(discriminant_value(&CLike3::D), 0);
assert_eq!(discriminant_value(&ADT::First(0,0)), 0); assert_eq!(discriminant_value(&NullablePointer::Nothing), 1);
assert_eq!(discriminant_value(&ADT::Second(5)), 1); assert_eq!(discriminant_value(&NullablePointer::Something(&CONST)), 0);
assert_eq!(discriminant_value(&NullablePointer::Nothing), 1); assert_eq!(discriminant_value(&10), 0);
assert_eq!(discriminant_value(&NullablePointer::Something(&CONST)), 0); assert_eq!(discriminant_value(&"test"), 0);
assert_eq!(discriminant_value(&10), 0); assert_eq!(3, discriminant_value(&Mixed::Unit));
assert_eq!(discriminant_value(&"test"), 0); assert_eq!(2, discriminant_value(&Mixed::Tuple(5)));
assert_eq!(1, discriminant_value(&Mixed::Struct{a: 7, b: 11}));
assert_eq!(3, discriminant_value(&Mixed::Unit));
assert_eq!(2, discriminant_value(&Mixed::Tuple(5)));
assert_eq!(1, discriminant_value(&Mixed::Struct{a: 7, b: 11}));
}
} }

View File

@ -7,9 +7,7 @@
enum Big { A, B } enum Big { A, B }
fn main() { fn main() {
unsafe { println!("{} {:?}",
println!("{} {:?}", std::intrinsics::discriminant_value(&Big::A),
std::intrinsics::discriminant_value(&Big::A), std::mem::discriminant(&Big::B));
std::mem::discriminant(&Big::B));
}
} }

View File

@ -14,5 +14,5 @@ fn main() {
assert_eq!(1, make_b() as u8); assert_eq!(1, make_b() as u8);
assert_eq!(1, make_b() as i32); assert_eq!(1, make_b() as i32);
assert_eq!(1, make_b() as u32); assert_eq!(1, make_b() as u32);
assert_eq!(1, unsafe { std::intrinsics::discriminant_value(&make_b()) }); assert_eq!(1, std::intrinsics::discriminant_value(&make_b()));
} }