Avoid an is_empty()
followed by an index op in favor of a single fallible op
This commit is contained in:
parent
b4993c47f2
commit
6f3cc0903c
@ -89,11 +89,11 @@ impl<'tcx> MutVisitor<'tcx> for MakeByMoveBody<'tcx> {
|
|||||||
location: mir::Location,
|
location: mir::Location,
|
||||||
) {
|
) {
|
||||||
if place.local == ty::CAPTURE_STRUCT_LOCAL
|
if place.local == ty::CAPTURE_STRUCT_LOCAL
|
||||||
&& !place.projection.is_empty()
|
&& let Some((&mir::ProjectionElem::Field(idx, ty), projection)) =
|
||||||
&& let mir::ProjectionElem::Field(idx, ty) = place.projection[0]
|
place.projection.split_first()
|
||||||
&& self.by_ref_fields.contains(&idx)
|
&& self.by_ref_fields.contains(&idx)
|
||||||
{
|
{
|
||||||
let (begin, end) = place.projection[1..].split_first().unwrap();
|
let (begin, end) = projection.split_first().unwrap();
|
||||||
// FIXME(async_closures): I'm actually a bit surprised to see that we always
|
// FIXME(async_closures): I'm actually a bit surprised to see that we always
|
||||||
// initially deref the by-ref upvars. If this is not actually true, then we
|
// initially deref the by-ref upvars. If this is not actually true, then we
|
||||||
// will at least get an ICE that explains why this isn't true :^)
|
// will at least get an ICE that explains why this isn't true :^)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user