Stop using derivative in rustc_pattern_analysis
This commit is contained in:
@@ -136,23 +136,35 @@ pub trait TypeCx: Sized + fmt::Debug {
|
||||
}
|
||||
|
||||
/// Context that provides information global to a match.
|
||||
#[derive(derivative::Derivative)]
|
||||
#[derivative(Clone(bound = ""), Copy(bound = ""))]
|
||||
pub struct MatchCtxt<'a, Cx: TypeCx> {
|
||||
/// The context for type information.
|
||||
pub tycx: &'a Cx,
|
||||
}
|
||||
|
||||
impl<'a, Cx: TypeCx> Clone for MatchCtxt<'a, Cx> {
|
||||
fn clone(&self) -> Self {
|
||||
Self { tycx: self.tycx }
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, Cx: TypeCx> Copy for MatchCtxt<'a, Cx> {}
|
||||
|
||||
/// The arm of a match expression.
|
||||
#[derive(Debug)]
|
||||
#[derive(derivative::Derivative)]
|
||||
#[derivative(Clone(bound = ""), Copy(bound = ""))]
|
||||
pub struct MatchArm<'p, Cx: TypeCx> {
|
||||
pub pat: &'p DeconstructedPat<'p, Cx>,
|
||||
pub has_guard: bool,
|
||||
pub arm_data: Cx::ArmData,
|
||||
}
|
||||
|
||||
impl<'p, Cx: TypeCx> Clone for MatchArm<'p, Cx> {
|
||||
fn clone(&self) -> Self {
|
||||
Self { pat: self.pat, has_guard: self.has_guard, arm_data: self.arm_data }
|
||||
}
|
||||
}
|
||||
|
||||
impl<'p, Cx: TypeCx> Copy for MatchArm<'p, Cx> {}
|
||||
|
||||
/// The entrypoint for this crate. Computes whether a match is exhaustive and which of its arms are
|
||||
/// useful, and runs some lints.
|
||||
#[cfg(feature = "rustc")]
|
||||
|
||||
Reference in New Issue
Block a user