summaryrefslogtreecommitdiffstats
path: root/tests/ui/ptr-coercion.rs
blob: 193899034c7b4b5e4ff0a6b56f574ab70ee8bfef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Test coercions between pointers which don't do anything fancy like unsizing.
// These are testing that we don't lose mutability when converting to raw pointers.

pub fn main() {
    // *const -> *mut
    let x: *const isize = &42;
    let x: *mut isize = x; //~  ERROR mismatched types
                           //~| expected raw pointer `*mut isize`
                           //~| found raw pointer `*const isize`
                           //~| types differ in mutability

    // & -> *mut
    let x: *mut isize = &42; //~  ERROR mismatched types
                             //~| expected raw pointer `*mut isize`
                             //~| found reference `&isize`
                             //~| types differ in mutability

    let x: *const isize = &42;
    let x: *mut isize = x; //~  ERROR mismatched types
                           //~| expected raw pointer `*mut isize`
                           //~| found raw pointer `*const isize`
                           //~| types differ in mutability
}