Auto merge of #9140 - Jarcho:sig_drop, r=flip1995
Ignore `into_iter` in `significant_drop_in_scrutinee` fixes #9135 changelog: Ignore the `IntoIterator::into_iter` call from for loops in `significant_drop_in_scrutinee`
This commit is contained in:
commit
3468294b58
2 changed files with 11 additions and 0 deletions
|
@ -89,6 +89,10 @@ fn has_significant_drop_in_scrutinee<'tcx, 'a>(
|
||||||
source: MatchSource,
|
source: MatchSource,
|
||||||
) -> Option<(Vec<FoundSigDrop>, &'static str)> {
|
) -> Option<(Vec<FoundSigDrop>, &'static str)> {
|
||||||
let mut helper = SigDropHelper::new(cx);
|
let mut helper = SigDropHelper::new(cx);
|
||||||
|
let scrutinee = match (source, &scrutinee.kind) {
|
||||||
|
(MatchSource::ForLoopDesugar, ExprKind::Call(_, [e])) => e,
|
||||||
|
_ => scrutinee,
|
||||||
|
};
|
||||||
helper.find_sig_drop(scrutinee).map(|drops| {
|
helper.find_sig_drop(scrutinee).map(|drops| {
|
||||||
let message = if source == MatchSource::Normal {
|
let message = if source == MatchSource::Normal {
|
||||||
"temporary with significant `Drop` in `match` scrutinee will live until the end of the `match` expression"
|
"temporary with significant `Drop` in `match` scrutinee will live until the end of the `match` expression"
|
||||||
|
|
|
@ -620,4 +620,11 @@ fn should_trigger_lint_without_significant_drop_in_arm() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn should_not_trigger_on_significant_iterator_drop() {
|
||||||
|
let lines = std::io::stdin().lines();
|
||||||
|
for line in lines {
|
||||||
|
println!("foo: {}", line.unwrap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue