@@ -6,6 +6,7 @@ use std::rc::Rc;
66use std:: sync:: mpsc:: { channel, Receiver } ;
77
88use rustc_data_structures:: fx:: { FxHashMap , FxHashSet } ;
9+ use rustc_hir:: HirId ;
910use rustc_hir:: def_id:: { DefId , LOCAL_CRATE } ;
1011use rustc_middle:: ty:: TyCtxt ;
1112use rustc_session:: Session ;
@@ -33,6 +34,7 @@ use crate::html::format::{join_with_double_colon, Buffer};
3334use crate :: html:: markdown:: { self , plain_text_summary, ErrorCodes , IdMap } ;
3435use crate :: html:: url_parts_builder:: UrlPartsBuilder ;
3536use crate :: html:: { layout, sources, static_files} ;
37+ use crate :: lint:: BROKEN_HTML_LINKS ;
3638use crate :: scrape_examples:: AllCallLocations ;
3739use crate :: try_err;
3840
@@ -174,8 +176,14 @@ impl<'tcx> Context<'tcx> {
174176
175177 let path = self . dst . canonicalize ( ) . unwrap ( ) ;
176178 let errors: Vec < _ > = unavailable_urls ( & path, & CheckContext :: default ( ) ) . collect ( ) ;
179+ let tcx = self . tcx ( ) ;
177180 for err in errors {
178- self . sess ( ) . struct_warn ( & err. to_string ( ) . replace ( '\t' , " " ) ) . emit ( ) ;
181+ // self.sess().struct_warn(&err.to_string().replace('\t', " ")).emit();
182+ let msg = err. to_string ( ) . replace ( '\t' , " " ) ;
183+ // TODO: map files back to items
184+ let hir_id: HirId = todo ! ( ) ;
185+ let span = tcx. def_span ( tcx. hir ( ) . local_def_id ( hir_id) ) ;
186+ self . tcx ( ) . struct_span_lint_hir ( BROKEN_HTML_LINKS , hir_id, span, msg, |err| err) ;
179187 }
180188 }
181189
0 commit comments