error[E0307]: invalid `self` parameter type: `T`
  --> $DIR/issue-66312.rs:4:22
   |
LL |     fn is_some(self: T);
   |                      ^
   |
   = note: type of `self` must be `Self` or a type that dereferences to it
   = help: consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)

error[E0308]: mismatched types
  --> $DIR/issue-66312.rs:9:8
   |
LL |     if x.is_some() {
   |        ^^^^^^^^^^^ expected `bool`, found `()`

error: aborting due to 2 previous errors

Some errors have detailed explanations: E0307, E0308.
For more information about an error, try `rustc --explain E0307`.
