summaryrefslogtreecommitdiffstats
path: root/tests/ui/fn/fn-pointer-mismatch.stderr
blob: a674babcb324be2dffe063bb60eaceb57a95882a (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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
error[E0308]: `if` and `else` have incompatible types
  --> $DIR/fn-pointer-mismatch.rs:11:43
   |
LL |     let g = if n % 2 == 0 { &foo } else { &bar };
   |                             ----          ^^^^ expected `&fn(u32) -> u32 {foo}`, found `&fn(u32) -> u32 {bar}`
   |                             |
   |                             expected because of this
   |
   = note: expected reference `&fn(u32) -> u32 {foo}`
              found reference `&fn(u32) -> u32 {bar}`
   = note: different fn items have unique types, even if their signatures are the same
   = help: consider casting both fn items to fn pointers using `as fn(u32) -> u32`

error[E0308]: mismatched types
  --> $DIR/fn-pointer-mismatch.rs:23:9
   |
LL |     let mut a = foo;
   |                 --- expected due to this value
LL |     a = bar;
   |         ^^^ expected fn item, found a different fn item
   |
   = note: expected fn item `fn(_) -> _ {foo}`
              found fn item `fn(_) -> _ {bar}`
   = note: different fn items have unique types, even if their signatures are the same
   = help: consider casting both fn items to fn pointers using `as fn(u32) -> u32`

error[E0308]: mismatched types
  --> $DIR/fn-pointer-mismatch.rs:31:18
   |
LL |     b = Box::new(bar);
   |         -------- ^^^ expected fn item, found a different fn item
   |         |
   |         arguments to this function are incorrect
   |
   = note: expected fn item `fn(_) -> _ {foo}`
              found fn item `fn(_) -> _ {bar}`
   = note: different fn items have unique types, even if their signatures are the same
note: associated function defined here
  --> $SRC_DIR/alloc/src/boxed.rs:LL:COL
   = help: consider casting both fn items to fn pointers using `as fn(u32) -> u32`

error[E0308]: mismatched types
  --> $DIR/fn-pointer-mismatch.rs:36:29
   |
LL |     let c: fn(u32) -> u32 = &foo;
   |            --------------   ^^^^ expected fn pointer, found `&fn(u32) -> u32 {foo}`
   |            |
   |            expected due to this
   |
   = note: expected fn pointer `fn(u32) -> u32`
               found reference `&fn(u32) -> u32 {foo}`
help: consider removing the reference
   |
LL |     let c: fn(u32) -> u32 = foo;
   |                             ~~~

error[E0308]: mismatched types
  --> $DIR/fn-pointer-mismatch.rs:42:30
   |
LL |     let d: &fn(u32) -> u32 = foo;
   |            ---------------   ^^^ expected `&fn(u32) -> u32`, found fn item
   |            |
   |            expected due to this
   |
   = note: expected reference `&fn(u32) -> u32`
                found fn item `fn(u32) -> u32 {foo}`
help: consider using a reference
   |
LL |     let d: &fn(u32) -> u32 = &foo;
   |                              ~~~~

error[E0308]: mismatched types
  --> $DIR/fn-pointer-mismatch.rs:48:30
   |
LL |     let e: &fn(u32) -> u32 = &foo;
   |            ---------------   ^^^^ expected `&fn(u32) -> u32`, found `&fn(u32) -> u32 {foo}`
   |            |
   |            expected due to this
   |
   = note: expected reference `&fn(u32) -> u32`
              found reference `&fn(u32) -> u32 {foo}`
   = note: fn items are distinct from fn pointers
   = note: when the arguments and return types match, functions can be coerced to function pointers
help: consider casting to a fn pointer
   |
LL |     let e: &fn(u32) -> u32 = &(foo as fn(u32) -> u32);
   |                              ~~~~~~~~~~~~~~~~~~~~~~~~

error: aborting due to 6 previous errors

For more information about this error, try `rustc --explain E0308`.