]> git.lizzy.rs Git - rust.git/commit
Fix issue #72649: avoid spurious "previous iteration of loop" errors.
authorRobert Xiao <brx@cs.ubc.ca>
Fri, 13 Aug 2021 08:03:31 +0000 (02:03 -0600)
committerRobert Xiao <brx@cs.ubc.ca>
Thu, 9 Sep 2021 06:11:29 +0000 (00:11 -0600)
commit6ff5b471ef7806c40e57b9e83107ce4d62012d1b
tree2040e2852b9d75d7c2b5ba50243603dd8d285705
parent626649ff1f33e89e471fff9e90bbb0a6d30141f9
Fix issue #72649: avoid spurious "previous iteration of loop" errors.

Only follow backwards edges during get_moved_indexes if the move path is
definitely initialized at loop entry. Otherwise, the error occurred prior to the
loop, so we ignore the backwards edges to avoid generating misleading "value
moved here, in previous iteration of loop" errors.

This patch also slightly improves the analysis of inits, including
NonPanicPathOnly initializations (which are ignored by
drop_flag_effects::for_location_inits). This is required for the definite
initialization analysis, but may also help find certain skipped reinits in rare
cases.

Patch passes all non-ignored src/test/ui testcases.
compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs
src/test/ui/moves/issue-72649-uninit-in-loop.rs [new file with mode: 0644]
src/test/ui/moves/issue-72649-uninit-in-loop.stderr [new file with mode: 0644]