error[E0277]: the trait bound `&str: IntoReport` is not satisfied
  --> tests/ui/macro_invalid_args.rs:17:11
   |
17 |     bail!("Error")
   |     ------^^^^^^^-
   |     |     |
   |     |     the trait `std::error::Error` is not implemented for `str`
   |     required by a bound introduced by this call
   |
help: the trait `IntoReport` is implemented for `error_stack::Report<C>`
  --> src/report.rs
   |
   | impl<C: ?Sized> IntoReport for Report<C> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   = note: required for `&str` to implement `std::error::Error`
   = note: required for `error_stack::Report<&str>` to implement `From<&str>`
   = note: required for `&str` to implement `Into<error_stack::Report<&str>>`
   = note: required for `&str` to implement `IntoReport`

error[E0308]: mismatched types
  --> tests/ui/macro_invalid_args.rs:17:5
   |
17 |     bail!("Error")
   |     ^^^^^^^^^^^^^^
   |     |
   |     expected `Report<RootError>`, found `Report<&str>`
   |     arguments to this enum variant are incorrect
   |
   = note: expected struct `error_stack::Report<RootError>`
              found struct `error_stack::Report<&str>`
help: the type constructed contains `error_stack::Report<&str>` due to the type of the argument passed
  --> tests/ui/macro_invalid_args.rs:17:5
   |
17 |     bail!("Error")
   |     ^^^^^^^^^^^^^^ this argument influences the type of `Err`
note: tuple variant defined here
  --> $RUST/core/src/result.rs
   |
   |     Err(#[stable(feature = "rust1", since = "1.0.0")] E),
   |     ^^^
   = note: this error originates in the macro `bail` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `&str: Into<error_stack::Report<&str>>` is not satisfied
  --> tests/ui/macro_invalid_args.rs:17:5
   |
17 |     bail!("Error")
   |     ^^^^^^^^^^^^^^ the trait `std::error::Error` is not implemented for `str`
   |
help: the trait `IntoReport` is implemented for `error_stack::Report<C>`
  --> src/report.rs
   |
   | impl<C: ?Sized> IntoReport for Report<C> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   = note: required for `&str` to implement `std::error::Error`
   = note: required for `error_stack::Report<&str>` to implement `From<&str>`
   = note: required for `&str` to implement `Into<error_stack::Report<&str>>`
   = note: required for `&str` to implement `IntoReport`
   = note: this error originates in the macro `bail` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `&str: IntoReport` is not satisfied
  --> tests/ui/macro_invalid_args.rs:21:27
   |
21 |     let _ = ensure!(true, "Error");
   |             --------------^^^^^^^-
   |             |             |
   |             |             the trait `std::error::Error` is not implemented for `str`
   |             required by a bound introduced by this call
   |
help: the trait `IntoReport` is implemented for `error_stack::Report<C>`
  --> src/report.rs
   |
   | impl<C: ?Sized> IntoReport for Report<C> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   = note: required for `&str` to implement `std::error::Error`
   = note: required for `error_stack::Report<&str>` to implement `From<&str>`
   = note: required for `&str` to implement `Into<error_stack::Report<&str>>`
   = note: required for `&str` to implement `IntoReport`

error[E0308]: mismatched types
  --> tests/ui/macro_invalid_args.rs:21:13
   |
21 |     let _ = ensure!(true, "Error");
   |             ^^^^^^^^^^^^^^^^^^^^^^
   |             |
   |             expected `Report<RootError>`, found `Report<&str>`
   |             arguments to this enum variant are incorrect
   |
   = note: expected struct `error_stack::Report<RootError>`
              found struct `error_stack::Report<&str>`
help: the type constructed contains `error_stack::Report<&str>` due to the type of the argument passed
  --> tests/ui/macro_invalid_args.rs:21:13
   |
21 |     let _ = ensure!(true, "Error");
   |             ^^^^^^^^^^^^^^^^^^^^^^ this argument influences the type of `Err`
note: tuple variant defined here
  --> $RUST/core/src/result.rs
   |
   |     Err(#[stable(feature = "rust1", since = "1.0.0")] E),
   |     ^^^
   = note: this error originates in the macro `$crate::bail` which comes from the expansion of the macro `ensure` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `&str: Into<error_stack::Report<&str>>` is not satisfied
  --> tests/ui/macro_invalid_args.rs:21:13
   |
21 |     let _ = ensure!(true, "Error");
   |             ^^^^^^^^^^^^^^^^^^^^^^ the trait `std::error::Error` is not implemented for `str`
   |
help: the trait `IntoReport` is implemented for `error_stack::Report<C>`
  --> src/report.rs
   |
   | impl<C: ?Sized> IntoReport for Report<C> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   = note: required for `&str` to implement `std::error::Error`
   = note: required for `error_stack::Report<&str>` to implement `From<&str>`
   = note: required for `&str` to implement `Into<error_stack::Report<&str>>`
   = note: required for `&str` to implement `IntoReport`
   = note: this error originates in the macro `$crate::bail` which comes from the expansion of the macro `ensure` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0308]: mismatched types
  --> tests/ui/macro_invalid_args.rs:27:21
   |
27 |     let _ = ensure!("No boolean", RootError);
   |             --------^^^^^^^^^^^^------------
   |             |       |
   |             |       expected `bool`, found `&str`
   |             arguments to this function are incorrect
   |
note: associated function defined here
  --> $RUST/core/src/convert/mod.rs
   |
   |     fn from(value: T) -> Self;
   |        ^^^^
