about summary refs log tree commit diff
path: root/tests/ui/match/privately-uninhabited-issue-137999.rs
blob: 918393a0c6acf6964d8c0c7780205356eecf9fb4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//@ edition:2024
//@ check-fail

mod m {
    enum Void {}

    pub struct Internal {
        _v: Void,
    }

    pub enum Test {
        A(u32, u32),
        B(Internal),
    }
}

use m::Test;

pub fn f1(x: &mut Test) {
    let r1: &mut u32 = match x {
        Test::A(a, _) => a,
        _ => todo!(),
    };

    let r2: &mut u32 = match x { //~ ERROR cannot use `*x` because it was mutably borrowed
        Test::A(_, b) => b,
        _ => todo!(),
    };

    let _ = *r1;
    let _ = *r2;
}

pub fn f2(x: &mut Test) {
    let r = &mut *x;
    match x { //~ ERROR cannot use `*x` because it was mutably borrowed
        Test::A(_, _) => {}
        _ => {}
    }

    let _ = r;
}

fn main() {}