error: the start function cannot have arguments
 --> ui-tests/start-function.rs:7:9
  |
7 | fn foo2(x: u32) {}
  |         ^^^^^^

error: the start function cannot have generics
  --> ui-tests/start-function.rs:10:8
   |
10 | fn foo3<T>() {}
   |        ^^^

error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, ()>: wasm_bindgen::__rt::Start` is not satisfied
  --> ui-tests/start-function.rs:16:14
   |
16 | fn foo5() -> Result<JsValue, ()> { Err(()) }
   |              ^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, ()>`
   |
   = help: the trait `wasm_bindgen::__rt::Start` is implemented for `Result<(), E>`

error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>: wasm_bindgen::__rt::Start` is not satisfied
  --> ui-tests/start-function.rs:19:14
   |
19 | fn foo6() -> Result<JsValue, JsValue> { Ok(JsValue::from(1u32)) }
   |              ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>`
   |
   = help: the trait `wasm_bindgen::__rt::Start` is implemented for `Result<(), E>`

error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, ()>: wasm_bindgen::__rt::Start` is not satisfied
  --> ui-tests/start-function.rs:28:26
   |
28 | async fn foo_async3() -> Result<JsValue, ()> { Err(()) }
   |                          ^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, ()>`
   |
   = help: the trait `wasm_bindgen::__rt::Start` is implemented for `Result<(), E>`

error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>: wasm_bindgen::__rt::Start` is not satisfied
  --> ui-tests/start-function.rs:31:26
   |
31 | async fn foo_async4() -> Result<JsValue, JsValue> { Ok(JsValue::from(1u32)) }
   |                          ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>`
   |
   = help: the trait `wasm_bindgen::__rt::Start` is implemented for `Result<(), E>`
