error[E0308]: mismatched types
  --> $DIR/generator-desc.rs:10:19
   |
LL |     fun(async {}, async {});
   |     --- --------  ^^^^^^^^ expected `async` block, found a different `async` block
   |     |   |
   |     |   the expected `async` block
   |     arguments to this function are incorrect
   |
   = note: expected `async` block `[async block@$DIR/generator-desc.rs:10:9: 10:17]`
              found `async` block `[async block@$DIR/generator-desc.rs:10:19: 10:27]`
note: function defined here
  --> $DIR/generator-desc.rs:8:4
   |
LL | fn fun<F: Future<Output = ()>>(f1: F, f2: F) {}
   |    ^^^                                -----

error[E0308]: mismatched types
  --> $DIR/generator-desc.rs:12:16
   |
LL |     fun(one(), two());
   |     ---        ^^^^^ expected future, found a different future
   |     |
   |     arguments to this function are incorrect
   |
   = help: consider `await`ing on both `Future`s
   = note: distinct uses of `impl Trait` result in different opaque types
note: function defined here
  --> $DIR/generator-desc.rs:8:4
   |
LL | fn fun<F: Future<Output = ()>>(f1: F, f2: F) {}
   |    ^^^                                -----

error[E0308]: mismatched types
  --> $DIR/generator-desc.rs:14:26
   |
LL |     fun((async || {})(), (async || {})());
   |     ---           --     ^^^^^^^^^^^^^^^ expected `async` closure body, found a different `async` closure body
   |     |             |
   |     |             the expected `async` closure body
   |     arguments to this function are incorrect
   |
   = note: expected `async` closure body `[async closure body@$DIR/generator-desc.rs:14:19: 14:21]`
              found `async` closure body `[async closure body@$DIR/generator-desc.rs:14:36: 14:38]`
note: function defined here
  --> $DIR/generator-desc.rs:8:4
   |
LL | fn fun<F: Future<Output = ()>>(f1: F, f2: F) {}
   |    ^^^                                -----

error: aborting due to 3 previous errors

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