error[E0053]: method `foo` has an incompatible type for trait --> $DIR/issue-35869.rs:11:15 | LL | fn foo(_: fn(u16) -> ()) {} | ^^^^^^^^^^^^^ | | | expected `u8`, found `u16` | help: change the parameter type to match the trait: `fn(u8)` | note: type in trait --> $DIR/issue-35869.rs:2:15 | LL | fn foo(_: fn(u8) -> ()); | ^^^^^^^^^^^^ = note: expected fn pointer `fn(fn(u8))` found fn pointer `fn(fn(u16))` error[E0053]: method `bar` has an incompatible type for trait --> $DIR/issue-35869.rs:13:15 | LL | fn bar(_: Option) {} | ^^^^^^^^^^^ | | | expected `u8`, found `u16` | help: change the parameter type to match the trait: `Option` | note: type in trait --> $DIR/issue-35869.rs:3:15 | LL | fn bar(_: Option); | ^^^^^^^^^^ = note: expected fn pointer `fn(Option)` found fn pointer `fn(Option)` error[E0053]: method `baz` has an incompatible type for trait --> $DIR/issue-35869.rs:15:15 | LL | fn baz(_: (u16, u16)) {} | ^^^^^^^^^^ | | | expected `u8`, found `u16` | help: change the parameter type to match the trait: `(u8, u16)` | note: type in trait --> $DIR/issue-35869.rs:4:15 | LL | fn baz(_: (u8, u16)); | ^^^^^^^^^ = note: expected fn pointer `fn((u8, _))` found fn pointer `fn((u16, _))` error[E0053]: method `qux` has an incompatible type for trait --> $DIR/issue-35869.rs:17:17 | LL | fn qux() -> u16 { 5u16 } | ^^^ | | | expected `u8`, found `u16` | help: change the output type to match the trait: `u8` | note: type in trait --> $DIR/issue-35869.rs:5:17 | LL | fn qux() -> u8; | ^^ = note: expected fn pointer `fn() -> u8` found fn pointer `fn() -> u16` error: aborting due to 4 previous errors For more information about this error, try `rustc --explain E0053`.