|  | // Tests that a suggestion is issued for type mismatch errors when a | 
|  | // 1-tuple is expected and a parenthesized expression of non-tuple | 
|  | // type is supplied. | 
|  |  | 
|  | fn foo<T>(_t: (T,)) {} | 
|  | struct S { _s: (String,) } | 
|  |  | 
|  | fn main() { | 
|  | let _x: (i32,) = (5); | 
|  | //~^ ERROR: mismatched types [E0308] | 
|  | //~| HELP: use a trailing comma to create a tuple with one element | 
|  |  | 
|  | foo((Some(3))); | 
|  | //~^ ERROR: mismatched types [E0308] | 
|  | //~| HELP: use a trailing comma to create a tuple with one element | 
|  |  | 
|  | let _s = S { _s: ("abc".to_string()) }; | 
|  | //~^ ERROR: mismatched types [E0308] | 
|  | //~| HELP: use a trailing comma to create a tuple with one element | 
|  |  | 
|  | // Do not issue the suggestion if the found type is already a tuple. | 
|  | let t = (1, 2); | 
|  | let _x: (i32,) = (t); | 
|  | //~^ ERROR: mismatched types [E0308] | 
|  | } |