enum Hey { A(A), B(B), } struct Foo { bar: Option, } fn f() {} fn a() -> Option<()> { while false { //~^ ERROR mismatched types f(); } //~^ HELP try adding an expression } fn b() -> Result<(), ()> { f() //~^ ERROR mismatched types //~| HELP try adding an expression } fn c() -> Option<()> { for _ in [1, 2] { //~^ ERROR mismatched types f(); } //~^ HELP try adding an expression } fn d() -> Option<()> { c()? //~^ ERROR incompatible types //~| HELP try removing this `?` //~| HELP try adding an expression } fn main() { let _: Option<()> = while false {}; //~^ ERROR mismatched types //~| HELP try wrapping let _: Option<()> = { while false {} //~^ ERROR mismatched types //~| HELP try adding an expression }; let _: Result = 1; //~^ ERROR mismatched types //~| HELP try wrapping let _: Option = 1; //~^ ERROR mismatched types //~| HELP try wrapping let _: Hey = 1; //~^ ERROR mismatched types //~| HELP try wrapping let _: Hey = false; //~^ ERROR mismatched types //~| HELP try wrapping let bar = 1i32; let _ = Foo { bar }; //~^ ERROR mismatched types //~| HELP try wrapping } enum A { B { b: B }, } struct A2(B); enum B { Fst, Snd, } fn foo() { let a: A = B::Fst; //~^ ERROR mismatched types //~| HELP try wrapping } fn bar() { let a: A2 = B::Fst; //~^ ERROR mismatched types //~| HELP try wrapping }