@@ -9,7 +9,7 @@ use rustc_data_structures::unord::{UnordMap, UnordSet};
99use rustc_errors:: codes:: * ;
1010use rustc_errors:: {
1111 Applicability , Diag , DiagCtxtHandle , ErrorGuaranteed , MultiSpan , SuggestionStyle ,
12- report_ambiguity_error , struct_span_code_err,
12+ struct_span_code_err,
1313} ;
1414use rustc_feature:: BUILTIN_ATTRIBUTES ;
1515use rustc_hir:: attrs:: { AttributeKind , CfgEntry , StrippedCfgItem } ;
@@ -20,16 +20,16 @@ use rustc_hir::{PrimTy, Stability, StabilityLevel, find_attr};
2020use rustc_middle:: bug;
2121use rustc_middle:: ty:: TyCtxt ;
2222use rustc_session:: Session ;
23+ use rustc_session:: lint:: BuiltinLintDiag ;
2324use rustc_session:: lint:: builtin:: {
2425 ABSOLUTE_PATHS_NOT_STARTING_WITH_CRATE , AMBIGUOUS_GLOB_IMPORTS ,
2526 MACRO_EXPANDED_MACRO_EXPORTS_ACCESSED_BY_ABSOLUTE_PATHS ,
2627} ;
27- use rustc_session:: lint:: { AmbiguityErrorDiag , BuiltinLintDiag } ;
2828use rustc_session:: utils:: was_invoked_from_cargo;
2929use rustc_span:: edit_distance:: find_best_match_for_name;
3030use rustc_span:: edition:: Edition ;
3131use rustc_span:: hygiene:: MacroKind ;
32- use rustc_span:: source_map:: SourceMap ;
32+ use rustc_span:: source_map:: { SourceMap , Spanned } ;
3333use rustc_span:: { BytePos , Ident , Macros20NormalizedIdent , Span , Symbol , SyntaxContext , kw, sym} ;
3434use thin_vec:: { ThinVec , thin_vec} ;
3535use tracing:: { debug, instrument} ;
@@ -143,21 +143,20 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
143143 }
144144
145145 for ambiguity_error in & self . ambiguity_errors {
146- let diag = self . ambiguity_diagnostics ( ambiguity_error) ;
146+ let diag = self . ambiguity_diagnostic ( ambiguity_error) ;
147+
147148 if ambiguity_error. warning {
148149 let NameBindingKind :: Import { import, .. } = ambiguity_error. b1 . 0 . kind else {
149150 unreachable ! ( )
150151 } ;
151152 self . lint_buffer . buffer_lint (
152153 AMBIGUOUS_GLOB_IMPORTS ,
153154 import. root_id ,
154- ambiguity_error . ident . span ,
155- BuiltinLintDiag :: AmbiguousGlobImports { diag } ,
155+ diag . ident . span ,
156+ diag,
156157 ) ;
157158 } else {
158- let mut err = struct_span_code_err ! ( self . dcx( ) , diag. span, E0659 , "{}" , diag. msg) ;
159- report_ambiguity_error ( & mut err, diag) ;
160- err. emit ( ) ;
159+ self . dcx ( ) . emit_err ( diag) ;
161160 }
162161 }
163162
@@ -1982,7 +1981,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
19821981 }
19831982 }
19841983
1985- fn ambiguity_diagnostics ( & self , ambiguity_error : & AmbiguityError < ' ra > ) -> AmbiguityErrorDiag {
1984+ fn ambiguity_diagnostic ( & self , ambiguity_error : & AmbiguityError < ' ra > ) -> errors :: Ambiguity {
19861985 let AmbiguityError { kind, ident, b1, b2, misc1, misc2, .. } = * ambiguity_error;
19871986 let extern_prelude_ambiguity = || {
19881987 self . extern_prelude . get ( & Macros20NormalizedIdent :: new ( ident) ) . is_some_and ( |entry| {
@@ -2025,8 +2024,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
20252024 }
20262025
20272026 (
2028- b. span ,
2029- note_msg,
2027+ Spanned { node : note_msg, span : b. span } ,
20302028 help_msgs
20312029 . iter ( )
20322030 . enumerate ( )
@@ -2037,20 +2035,15 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
20372035 . collect :: < Vec < _ > > ( ) ,
20382036 )
20392037 } ;
2040- let ( b1_span, b1_note_msg, b1_help_msgs) = could_refer_to ( b1, misc1, "" ) ;
2041- let ( b2_span, b2_note_msg, b2_help_msgs) = could_refer_to ( b2, misc2, " also" ) ;
2042-
2043- AmbiguityErrorDiag {
2044- msg : format ! ( "`{ident}` is ambiguous" ) ,
2045- span : ident. span ,
2046- label_span : ident. span ,
2047- label_msg : "ambiguous name" . to_string ( ) ,
2048- note_msg : format ! ( "ambiguous because of {}" , kind. descr( ) ) ,
2049- b1_span,
2050- b1_note_msg,
2038+ let ( b1_note, b1_help_msgs) = could_refer_to ( b1, misc1, "" ) ;
2039+ let ( b2_note, b2_help_msgs) = could_refer_to ( b2, misc2, " also" ) ;
2040+
2041+ errors:: Ambiguity {
2042+ ident,
2043+ kind : kind. descr ( ) ,
2044+ b1_note,
20512045 b1_help_msgs,
2052- b2_span,
2053- b2_note_msg,
2046+ b2_note,
20542047 b2_help_msgs,
20552048 }
20562049 }
0 commit comments