@@ -590,14 +590,10 @@ pub fn run(mut krate: clean::Crate,
590590
591591 let markdown_warnings = scx. markdown_warnings . borrow ( ) ;
592592 if !markdown_warnings. is_empty ( ) {
593- println ! ( "WARNING: documentation for this crate may be rendered \
594- differently using the new Pulldown renderer.") ;
595- println ! ( " See https://github.com/rust-lang/rust/issues/44229 for details." ) ;
593+ let mut intro_msg = false ;
596594 for & ( ref span, ref text, ref diffs) in & * markdown_warnings {
597- println ! ( "WARNING: rendering difference in `{}`" , concise_str( text) ) ;
598- println ! ( " --> {}:{}:{}" , span. filename, span. loline, span. locol) ;
599595 for d in diffs {
600- render_difference ( d) ;
596+ render_difference ( d, & mut intro_msg , span , text ) ;
601597 }
602598 }
603599 }
@@ -650,43 +646,67 @@ fn concise_compared_strs(s1: &str, s2: &str) -> (String, String) {
650646 ( format ! ( "...{}" , concise_str( s1) ) , format ! ( "...{}" , concise_str( s2) ) )
651647}
652648
653- fn render_difference ( diff : & html_diff:: Difference ) {
649+
650+ fn print_message ( msg : & str , intro_msg : & mut bool , span : & Span , text : & str ) {
651+ if !* intro_msg {
652+ println ! ( "WARNING: documentation for this crate may be rendered \
653+ differently using the new Pulldown renderer.") ;
654+ println ! ( " See https://github.com/rust-lang/rust/issues/44229 for details." ) ;
655+ * intro_msg = true ;
656+ }
657+ println ! ( "WARNING: rendering difference in `{}`" , concise_str( text) ) ;
658+ println ! ( " --> {}:{}:{}" , span. filename, span. loline, span. locol) ;
659+ println ! ( "{}" , msg) ;
660+ }
661+
662+ fn render_difference ( diff : & html_diff:: Difference , intro_msg : & mut bool , span : & Span , text : & str ) {
654663 match * diff {
655664 html_diff:: Difference :: NodeType { ref elem, ref opposite_elem } => {
656- println ! ( " {} Types differ: expected: `{}`, found: `{}`" ,
657- elem. path, elem. element_name, opposite_elem. element_name) ;
665+ print_message ( & format ! ( " {} Types differ: expected: `{}`, found: `{}`" ,
666+ elem. path, elem. element_name, opposite_elem. element_name) ,
667+ intro_msg, span, text) ;
658668 }
659669 html_diff:: Difference :: NodeName { ref elem, ref opposite_elem } => {
660- println ! ( " {} Tags differ: expected: `{}`, found: `{}`" ,
661- elem. path, elem. element_name, opposite_elem. element_name) ;
670+ print_message ( & format ! ( " {} Tags differ: expected: `{}`, found: `{}`" ,
671+ elem. path, elem. element_name, opposite_elem. element_name) ,
672+ intro_msg, span, text) ;
662673 }
663674 html_diff:: Difference :: NodeAttributes { ref elem,
664- ref elem_attributes,
665- ref opposite_elem_attributes,
666- .. } => {
667- println ! ( " {} Attributes differ in `{}`: expected: `{:?}`, found: `{:?}`" ,
668- elem. path, elem. element_name, elem_attributes, opposite_elem_attributes) ;
675+ ref elem_attributes,
676+ ref opposite_elem_attributes,
677+ .. } => {
678+ print_message ( & format ! ( " {} Attributes differ in `{}`: expected: `{:?}`, \
679+ found: `{:?}`",
680+ elem. path, elem. element_name, elem_attributes,
681+ opposite_elem_attributes) ,
682+ intro_msg, span, text) ;
669683 }
670684 html_diff:: Difference :: NodeText { ref elem, ref elem_text, ref opposite_elem_text, .. } => {
671685 if elem_text. split ( "\n " )
672686 . zip ( opposite_elem_text. split ( "\n " ) )
673687 . any ( |( a, b) | a. trim ( ) != b. trim ( ) ) {
674688 let ( s1, s2) = concise_compared_strs ( elem_text, opposite_elem_text) ;
675- println ! ( " {} Text differs:\n expected: `{}`\n found: `{}`" ,
676- elem. path, s1, s2) ;
689+ print_message ( & format ! ( " {} Text differs:\n expected: `{}`\n \
690+ found: `{}`",
691+ elem. path, s1, s2) ,
692+ intro_msg, span, text) ;
677693 }
678694 }
679695 html_diff:: Difference :: NotPresent { ref elem, ref opposite_elem } => {
680696 if let Some ( ref elem) = * elem {
681- println ! ( " {} One element is missing: expected: `{}`" ,
682- elem. path, elem. element_name) ;
697+ print_message ( & format ! ( " {} One element is missing: expected: `{}`" ,
698+ elem. path, elem. element_name) ,
699+ intro_msg, span, text) ;
683700 } else if let Some ( ref elem) = * opposite_elem {
684701 if elem. element_name . is_empty ( ) {
685- println ! ( " {} Unexpected element: `{}`" ,
686- elem. path, concise_str( & elem. element_content) ) ;
702+ print_message ( & format ! ( " {} One element is missing: expected: `{}`" ,
703+ elem. path, concise_str( & elem. element_content) ) ,
704+ intro_msg, span, text) ;
687705 } else {
688- println ! ( " {} Unexpected element `{}`: found: `{}`" ,
689- elem. path, elem. element_name, concise_str( & elem. element_content) ) ;
706+ print_message ( & format ! ( " {} Unexpected element `{}`: found: `{}`" ,
707+ elem. path, elem. element_name,
708+ concise_str( & elem. element_content) ) ,
709+ intro_msg, span, text) ;
690710 }
691711 }
692712 }
0 commit comments