Skip to content

Commit f1bdd4f

Browse files
committed
Expand is_uninhabited for references
1 parent 7514051 commit f1bdd4f

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

src/libcore/fmt/mod.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,9 @@ enum Void {}
178178
issue = "0")]
179179
#[doc(hidden)]
180180
pub struct ArgumentV1<'a> {
181-
value: &'a Void,
182-
formatter: fn(&Void, &mut Formatter) -> Result,
181+
_ph: PhantomData<&'a ()>,
182+
value: *const Void,
183+
formatter: fn(*const Void, &mut Formatter) -> Result,
183184
}
184185

185186
#[unstable(feature = "fmt_internals", reason = "internal to format_args!",
@@ -203,6 +204,7 @@ impl<'a> ArgumentV1<'a> {
203204
f: fn(&T, &mut Formatter) -> Result) -> ArgumentV1<'b> {
204205
unsafe {
205206
ArgumentV1 {
207+
_ph: PhantomData,
206208
formatter: mem::transmute(f),
207209
value: mem::transmute(x)
208210
}
@@ -218,7 +220,7 @@ impl<'a> ArgumentV1<'a> {
218220

219221
fn as_usize(&self) -> Option<usize> {
220222
if self.formatter as usize == ArgumentV1::show_usize as usize {
221-
Some(unsafe { *(self.value as *const _ as *const usize) })
223+
Some(unsafe { *(self.value as *const usize) })
222224
} else {
223225
None
224226
}

src/librustc/ty/sty.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -946,11 +946,10 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
946946
},
947947

948948
TyNever => true,
949-
TyTuple(ref tys) => tys.iter().any(|ty| ty.is_uninhabited(cx)),
950-
TyArray(ty, len) => len > 0 && ty.is_uninhabited(cx),
949+
TyTuple(ref tys) => tys.iter().any(|ty| ty.is_uninhabited_recurse(visited, cx)),
950+
TyArray(ty, len) => len > 0 && ty.is_uninhabited_recurse(visited, cx),
951+
TyRef(_, ref tm) => tm.ty.is_uninhabited_recurse(visited, cx),
951952

952-
// FIXME(canndrew): this line breaks core::fmt
953-
//TyRef(_, ref tm) => tm.ty.is_uninhabited(cx),
954953
_ => false,
955954
}
956955
}

0 commit comments

Comments
 (0)