@@ -11,7 +11,7 @@ use rustc_data_structures::unord::{UnordMap, UnordSet};
1111use rustc_errors:: codes:: * ;
1212use rustc_errors:: {
1313 Applicability , Diag , DiagCtxtHandle , ErrorGuaranteed , MultiSpan , SuggestionStyle ,
14- report_ambiguity_error , struct_span_code_err,
14+ struct_span_code_err,
1515} ;
1616use rustc_feature:: BUILTIN_ATTRIBUTES ;
1717use rustc_hir:: attrs:: { AttributeKind , CfgEntry , StrippedCfgItem } ;
@@ -22,16 +22,16 @@ use rustc_hir::{PrimTy, Stability, StabilityLevel, find_attr};
2222use rustc_middle:: bug;
2323use rustc_middle:: ty:: TyCtxt ;
2424use rustc_session:: Session ;
25+ use rustc_session:: lint:: BuiltinLintDiag ;
2526use rustc_session:: lint:: builtin:: {
2627 ABSOLUTE_PATHS_NOT_STARTING_WITH_CRATE , AMBIGUOUS_GLOB_IMPORTS ,
2728 MACRO_EXPANDED_MACRO_EXPORTS_ACCESSED_BY_ABSOLUTE_PATHS ,
2829} ;
29- use rustc_session:: lint:: { AmbiguityErrorDiag , BuiltinLintDiag } ;
3030use rustc_session:: utils:: was_invoked_from_cargo;
3131use rustc_span:: edit_distance:: find_best_match_for_name;
3232use rustc_span:: edition:: Edition ;
3333use rustc_span:: hygiene:: MacroKind ;
34- use rustc_span:: source_map:: SourceMap ;
34+ use rustc_span:: source_map:: { SourceMap , Spanned } ;
3535use rustc_span:: { BytePos , Ident , Macros20NormalizedIdent , Span , Symbol , SyntaxContext , kw, sym} ;
3636use thin_vec:: { ThinVec , thin_vec} ;
3737use tracing:: { debug, instrument} ;
@@ -145,21 +145,20 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
145145 }
146146
147147 for ambiguity_error in & self . ambiguity_errors {
148- let diag = self . ambiguity_diagnostics ( ambiguity_error) ;
148+ let diag = self . ambiguity_diagnostic ( ambiguity_error) ;
149+
149150 if ambiguity_error. warning {
150151 let NameBindingKind :: Import { import, .. } = ambiguity_error. b1 . 0 . kind else {
151152 unreachable ! ( )
152153 } ;
153154 self . lint_buffer . buffer_lint (
154155 AMBIGUOUS_GLOB_IMPORTS ,
155156 import. root_id ,
156- ambiguity_error . ident . span ,
157- BuiltinLintDiag :: AmbiguousGlobImports { diag } ,
157+ diag . ident . span ,
158+ diag,
158159 ) ;
159160 } else {
160- let mut err = struct_span_code_err ! ( self . dcx( ) , diag. span, E0659 , "{}" , diag. msg) ;
161- report_ambiguity_error ( & mut err, diag) ;
162- err. emit ( ) ;
161+ self . dcx ( ) . emit_err ( diag) ;
163162 }
164163 }
165164
@@ -1995,7 +1994,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
19951994 }
19961995 }
19971996
1998- fn ambiguity_diagnostics ( & self , ambiguity_error : & AmbiguityError < ' ra > ) -> AmbiguityErrorDiag {
1997+ fn ambiguity_diagnostic ( & self , ambiguity_error : & AmbiguityError < ' ra > ) -> errors :: Ambiguity {
19991998 let AmbiguityError { kind, ident, b1, b2, misc1, misc2, .. } = * ambiguity_error;
20001999 let extern_prelude_ambiguity = || {
20012000 self . extern_prelude . get ( & Macros20NormalizedIdent :: new ( ident) ) . is_some_and ( |entry| {
@@ -2038,8 +2037,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
20382037 }
20392038
20402039 (
2041- b. span ,
2042- note_msg,
2040+ Spanned { node : note_msg, span : b. span } ,
20432041 help_msgs
20442042 . iter ( )
20452043 . enumerate ( )
@@ -2050,20 +2048,15 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
20502048 . collect :: < Vec < _ > > ( ) ,
20512049 )
20522050 } ;
2053- let ( b1_span, b1_note_msg, b1_help_msgs) = could_refer_to ( b1, misc1, "" ) ;
2054- let ( b2_span, b2_note_msg, b2_help_msgs) = could_refer_to ( b2, misc2, " also" ) ;
2055-
2056- AmbiguityErrorDiag {
2057- msg : format ! ( "`{ident}` is ambiguous" ) ,
2058- span : ident. span ,
2059- label_span : ident. span ,
2060- label_msg : "ambiguous name" . to_string ( ) ,
2061- note_msg : format ! ( "ambiguous because of {}" , kind. descr( ) ) ,
2062- b1_span,
2063- b1_note_msg,
2051+ let ( b1_note, b1_help_msgs) = could_refer_to ( b1, misc1, "" ) ;
2052+ let ( b2_note, b2_help_msgs) = could_refer_to ( b2, misc2, " also" ) ;
2053+
2054+ errors:: Ambiguity {
2055+ ident,
2056+ kind : kind. descr ( ) ,
2057+ b1_note,
20642058 b1_help_msgs,
2065- b2_span,
2066- b2_note_msg,
2059+ b2_note,
20672060 b2_help_msgs,
20682061 }
20692062 }
0 commit comments