Skip to content

Commit 8f04a1e

Browse files
committed
Cleanup comments and dead code
1 parent 71208c5 commit 8f04a1e

File tree

2 files changed

+8
-31
lines changed

2 files changed

+8
-31
lines changed

compiler/rustc_pattern_analysis/src/pat.rs

+3-22
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
//! As explained in [`crate::usefulness`], values and patterns are made from constructors applied to
22
//! fields. This file defines types that represent patterns in this way.
3-
use std::cell::Cell;
43
use std::fmt;
54

65
use smallvec::{smallvec, SmallVec};
@@ -11,11 +10,7 @@ use crate::{Captures, TypeCx};
1110
use self::Constructor::*;
1211

1312
/// Values and patterns can be represented as a constructor applied to some fields. This represents
14-
/// a pattern in this form.
15-
/// This also uses interior mutability to keep track of whether the pattern has been found reachable
16-
/// during analysis. For this reason they cannot be cloned.
17-
/// A `DeconstructedPat` will almost always come from user input; the only exception are some
18-
/// `Wildcard`s introduced during specialization.
13+
/// a pattern in this form. A `DeconstructedPat` will always come from user input.
1914
///
2015
/// Note that the number of fields may not match the fields declared in the original struct/variant.
2116
/// This happens if a private or `non_exhaustive` field is uninhabited, because the code mustn't
@@ -28,13 +23,11 @@ pub struct DeconstructedPat<'p, Cx: TypeCx> {
2823
/// Extra data to store in a pattern. `None` if the pattern is a wildcard that does not
2924
/// correspond to a user-supplied pattern.
3025
data: Option<Cx::PatData>,
31-
/// Whether removing this arm would change the behavior of the match expression.
32-
pub(crate) useful: Cell<bool>,
3326
}
3427

3528
impl<'p, Cx: TypeCx> DeconstructedPat<'p, Cx> {
3629
pub fn wildcard(ty: Cx::Ty) -> Self {
37-
DeconstructedPat { ctor: Wildcard, fields: &[], ty, data: None, useful: Cell::new(false) }
30+
DeconstructedPat { ctor: Wildcard, fields: &[], ty, data: None }
3831
}
3932

4033
pub fn new(
@@ -43,7 +36,7 @@ impl<'p, Cx: TypeCx> DeconstructedPat<'p, Cx> {
4336
ty: Cx::Ty,
4437
data: Cx::PatData,
4538
) -> Self {
46-
DeconstructedPat { ctor, fields, ty, data: Some(data), useful: Cell::new(false) }
39+
DeconstructedPat { ctor, fields, ty, data: Some(data) }
4740
}
4841

4942
pub(crate) fn is_or_pat(&self) -> bool {
@@ -101,12 +94,6 @@ impl<'p, Cx: TypeCx> DeconstructedPat<'p, Cx> {
10194
}
10295
}
10396

104-
/// We keep track for each pattern if it was ever useful during the analysis. This is used with
105-
/// `redundant_subpatterns` to report redundant subpatterns arising from or patterns.
106-
pub(crate) fn set_useful(&self) {
107-
self.useful.set(true)
108-
}
109-
11097
/// Walk top-down and call `it` in each place where a pattern occurs
11198
/// starting with the root pattern `walk` is called on. If `it` returns
11299
/// false then we will descend no further but siblings will be processed.
@@ -184,12 +171,6 @@ impl<'p, Cx: TypeCx> PatOrWild<'p, Cx> {
184171
PatOrWild::Pat(pat) => pat.specialize(other_ctor, ctor_arity),
185172
}
186173
}
187-
188-
pub(crate) fn set_useful(&self) {
189-
if let PatOrWild::Pat(pat) = self {
190-
pat.set_useful()
191-
}
192-
}
193174
}
194175

195176
impl<'p, Cx: TypeCx> fmt::Debug for PatOrWild<'p, Cx> {

compiler/rustc_pattern_analysis/src/usefulness.rs

+5-9
Original file line numberDiff line numberDiff line change
@@ -466,13 +466,9 @@
466466
//! first pattern of a row in the matrix is an or-pattern, we expand it by duplicating the rest of
467467
//! the row as necessary. This is handled automatically in [`Matrix`].
468468
//!
469-
//! This makes usefulness tracking subtle, because we also want to compute whether an alternative
470-
//! of an or-pattern is redundant, e.g. in `Some(_) | Some(0)`. We track usefulness of each
471-
//! subpattern by interior mutability in [`DeconstructedPat`] with `set_useful`/`is_useful`.
472-
//!
473-
//! It's unfortunate that we have to use interior mutability, but believe me (Nadrieril), I have
474-
//! tried [other](https://github.com/rust-lang/rust/pull/80104)
475-
//! [solutions](https://github.com/rust-lang/rust/pull/80632) and nothing is remotely as simple.
469+
//! This makes usefulness tracking subtle, because we also want to compute whether an alternative of
470+
//! an or-pattern is redundant, e.g. in `Some(_) | Some(0)`. We therefore track usefulness of each
471+
//! subpattern of the match.
476472
//!
477473
//!
478474
//!
@@ -1416,8 +1412,8 @@ fn collect_overlapping_range_endpoints<'p, Cx: TypeCx>(
14161412
/// The core of the algorithm.
14171413
///
14181414
/// This recursively computes witnesses of the non-exhaustiveness of `matrix` (if any). Also tracks
1419-
/// usefulness of each row in the matrix (in `row.useful`). We track usefulness of each
1420-
/// subpattern using interior mutability in `DeconstructedPat`.
1415+
/// usefulness of each row in the matrix (in `row.useful`). We track usefulness of each subpattern
1416+
/// in `mcx.useful_subpatterns`.
14211417
///
14221418
/// The input `Matrix` and the output `WitnessMatrix` together match the type exhaustively.
14231419
///

0 commit comments

Comments
 (0)