@@ -420,12 +420,22 @@ fn resolve_struct_error<'b, 'a: 'b, 'tcx: 'a>(resolver: &'b Resolver<'a, 'tcx>,
420
420
name)
421
421
}
422
422
ResolutionError :: StructVariantUsedAsFunction ( path_name) => {
423
- struct_span_err ! ( resolver. session,
424
- span,
425
- E0423 ,
426
- "`{}` is the name of a struct or struct variant, but this expression \
427
- uses it like a function name",
428
- path_name)
423
+ let mut err = struct_span_err ! ( resolver. session,
424
+ span,
425
+ E0423 ,
426
+ "`{}` is the name of a struct or \
427
+ struct variant, but this expression \
428
+ uses it like a function name",
429
+ path_name) ;
430
+ if resolver. emit_errors {
431
+ let msg = format ! ( "did you mean to write: `{} {{ /* fields */ }}`?" ,
432
+ path_name) ;
433
+ err. fileline_help ( span, & msg) ;
434
+ } else {
435
+ let suggestion = format ! ( "{} {{ /* fields */ }}" , path_name) ;
436
+ err. span_suggestion ( span, "did you mean to write" , suggestion) ;
437
+ }
438
+ err
429
439
}
430
440
ResolutionError :: SelfNotAvailableInStaticMethod => {
431
441
struct_span_err ! ( resolver. session,
@@ -3521,18 +3531,9 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
3521
3531
if let DefVariant ( _, _, true ) = path_res. base_def {
3522
3532
let path_name = path_names_to_string ( path, 0 ) ;
3523
3533
3524
- let mut err = resolve_struct_error ( self ,
3525
- expr. span ,
3526
- ResolutionError :: StructVariantUsedAsFunction ( & * path_name) ) ;
3534
+ resolve_error ( self , expr. span ,
3535
+ ResolutionError :: StructVariantUsedAsFunction ( & * path_name) ) ;
3527
3536
3528
- let msg = format ! ( "did you mean to write: `{} {{ /* fields */ }}`?" ,
3529
- path_name) ;
3530
- if self . emit_errors {
3531
- err. fileline_help ( expr. span , & msg) ;
3532
- } else {
3533
- err. span_help ( expr. span , & msg) ;
3534
- }
3535
- err. emit ( ) ;
3536
3537
self . record_def ( expr. id , err_path_resolution ( ) ) ;
3537
3538
} else {
3538
3539
// Write the result into the def map.
@@ -3562,18 +3563,8 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
3562
3563
self . record_def ( expr. id , err_path_resolution ( ) ) ;
3563
3564
match type_res. map ( |r| r. base_def ) {
3564
3565
Some ( DefTy ( struct_id, _) ) if self . structs . contains_key ( & struct_id) => {
3565
- let mut err = resolve_struct_error ( self ,
3566
- expr. span ,
3567
- ResolutionError :: StructVariantUsedAsFunction ( & * path_name) ) ;
3568
-
3569
- let msg = format ! ( "did you mean to write: `{} {{ /* fields */ }}`?" ,
3570
- path_name) ;
3571
- if self . emit_errors {
3572
- err. fileline_help ( expr. span , & msg) ;
3573
- } else {
3574
- err. span_help ( expr. span , & msg) ;
3575
- }
3576
- err. emit ( ) ;
3566
+ resolve_error ( self , expr. span ,
3567
+ ResolutionError :: StructVariantUsedAsFunction ( & * path_name) ) ;
3577
3568
}
3578
3569
_ => {
3579
3570
// Keep reporting some errors even if they're ignored above.
0 commit comments