Generate doublelock diagnosis.
(
a: &LockGuardId,
b: &LockGuardId,
lockguards: &LockGuardMap<'tcx>,
callgraph: &CallGraph<'tcx>,
tcx: TyCtxt<'tcx>,
)
| 715 | if lockguards[a].span == lockguards[b].span { |
| 716 | return (DeadlockPossibility::Unlikely, NotDeadlockReason::SameSpan); |
| 717 | } |
| 718 | let possibility = match a_ty.deadlock_with(b_ty) { |
| 719 | DeadlockPossibility::Probably => match alias_analysis.alias((*a).into(), (*b).into()) { |
| 720 | ApproximateAliasKind::Probably => DeadlockPossibility::Probably, |
| 721 | ApproximateAliasKind::Possibly => DeadlockPossibility::Possibly, |
| 722 | ApproximateAliasKind::Unlikely => DeadlockPossibility::Unlikely, |
| 723 | ApproximateAliasKind::Unknown => DeadlockPossibility::Unknown, |
| 724 | }, |
| 725 | DeadlockPossibility::Possibly => match alias_analysis.alias((*a).into(), (*b).into()) { |
| 726 | ApproximateAliasKind::Probably => DeadlockPossibility::Possibly, |
| 727 | ApproximateAliasKind::Possibly => DeadlockPossibility::Possibly, |
| 728 | ApproximateAliasKind::Unlikely => DeadlockPossibility::Unlikely, |
no test coverage detected