error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
  --> $DIR/try-on-option-diagnostics.rs:7:6
   |
LL | fn a_function() -> u32 {
   | ---------------------- this function should return `Result` or `Option` to accept `?`
LL |     let x: Option<u32> = None;
LL |     x?;
   |      ^ cannot use the `?` operator in a function that returns `u32`

error[E0277]: the `?` operator can only be used in a closure that returns `Result` or `Option` (or another type that implements `FromResidual`)
  --> $DIR/try-on-option-diagnostics.rs:14:10
   |
LL |     let a_closure = || {
   |                     -- this function should return `Result` or `Option` to accept `?`
LL |         let x: Option<u32> = None;
LL |         x?;
   |          ^ cannot use the `?` operator in a closure that returns `{integer}`

error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `FromResidual`)
  --> $DIR/try-on-option-diagnostics.rs:26:14
   |
LL |         fn a_method() {
   |         ------------- this function should return `Result` or `Option` to accept `?`
LL |             let x: Option<u32> = None;
LL |             x?;
   |              ^ cannot use the `?` operator in a method that returns `()`

error[E0277]: the `?` operator can only be used in a trait method that returns `Result` or `Option` (or another type that implements `FromResidual`)
  --> $DIR/try-on-option-diagnostics.rs:39:14
   |
LL |         fn a_trait_method() {
   |         ------------------- this function should return `Result` or `Option` to accept `?`
LL |             let x: Option<u32> = None;
LL |             x?;
   |              ^ cannot use the `?` operator in a trait method that returns `()`

error: aborting due to 4 previous errors

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