@@ -588,14 +588,10 @@ pub fn run(mut krate: clean::Crate,
588588
589589 let markdown_warnings = scx. markdown_warnings . borrow ( ) ;
590590 if !markdown_warnings. is_empty ( ) {
591- println ! ( "WARNING: documentation for this crate may be rendered \
592- differently using the new Pulldown renderer.") ;
593- println ! ( " See https://github.com/rust-lang/rust/issues/44229 for details." ) ;
591+ let mut intro_msg = false ;
594592 for & ( ref span, ref text, ref diffs) in & * markdown_warnings {
595- println ! ( "WARNING: rendering difference in `{}`" , concise_str( text) ) ;
596- println ! ( " --> {}:{}:{}" , span. filename, span. loline, span. locol) ;
597593 for d in diffs {
598- render_difference ( d) ;
594+ render_difference ( d, & mut intro_msg , span , text ) ;
599595 }
600596 }
601597 }
@@ -648,43 +644,67 @@ fn concise_compared_strs(s1: &str, s2: &str) -> (String, String) {
648644 ( format ! ( "...{}" , concise_str( s1) ) , format ! ( "...{}" , concise_str( s2) ) )
649645}
650646
651- fn render_difference ( diff : & html_diff:: Difference ) {
647+
648+ fn print_message ( msg : & str , intro_msg : & mut bool , span : & Span , text : & str ) {
649+ if !* intro_msg {
650+ println ! ( "WARNING: documentation for this crate may be rendered \
651+ differently using the new Pulldown renderer.") ;
652+ println ! ( " See https://github.com/rust-lang/rust/issues/44229 for details." ) ;
653+ * intro_msg = true ;
654+ }
655+ println ! ( "WARNING: rendering difference in `{}`" , concise_str( text) ) ;
656+ println ! ( " --> {}:{}:{}" , span. filename, span. loline, span. locol) ;
657+ println ! ( "{}" , msg) ;
658+ }
659+
660+ fn render_difference ( diff : & html_diff:: Difference , intro_msg : & mut bool , span : & Span , text : & str ) {
652661 match * diff {
653662 html_diff:: Difference :: NodeType { ref elem, ref opposite_elem } => {
654- println ! ( " {} Types differ: expected: `{}`, found: `{}`" ,
655- elem. path, elem. element_name, opposite_elem. element_name) ;
663+ print_message ( & format ! ( " {} Types differ: expected: `{}`, found: `{}`" ,
664+ elem. path, elem. element_name, opposite_elem. element_name) ,
665+ intro_msg, span, text) ;
656666 }
657667 html_diff:: Difference :: NodeName { ref elem, ref opposite_elem } => {
658- println ! ( " {} Tags differ: expected: `{}`, found: `{}`" ,
659- elem. path, elem. element_name, opposite_elem. element_name) ;
668+ print_message ( & format ! ( " {} Tags differ: expected: `{}`, found: `{}`" ,
669+ elem. path, elem. element_name, opposite_elem. element_name) ,
670+ intro_msg, span, text) ;
660671 }
661672 html_diff:: Difference :: NodeAttributes { ref elem,
662- ref elem_attributes,
663- ref opposite_elem_attributes,
664- .. } => {
665- println ! ( " {} Attributes differ in `{}`: expected: `{:?}`, found: `{:?}`" ,
666- elem. path, elem. element_name, elem_attributes, opposite_elem_attributes) ;
673+ ref elem_attributes,
674+ ref opposite_elem_attributes,
675+ .. } => {
676+ print_message ( & format ! ( " {} Attributes differ in `{}`: expected: `{:?}`, \
677+ found: `{:?}`",
678+ elem. path, elem. element_name, elem_attributes,
679+ opposite_elem_attributes) ,
680+ intro_msg, span, text) ;
667681 }
668682 html_diff:: Difference :: NodeText { ref elem, ref elem_text, ref opposite_elem_text, .. } => {
669683 if elem_text. split ( "\n " )
670684 . zip ( opposite_elem_text. split ( "\n " ) )
671685 . any ( |( a, b) | a. trim ( ) != b. trim ( ) ) {
672686 let ( s1, s2) = concise_compared_strs ( elem_text, opposite_elem_text) ;
673- println ! ( " {} Text differs:\n expected: `{}`\n found: `{}`" ,
674- elem. path, s1, s2) ;
687+ print_message ( & format ! ( " {} Text differs:\n expected: `{}`\n \
688+ found: `{}`",
689+ elem. path, s1, s2) ,
690+ intro_msg, span, text) ;
675691 }
676692 }
677693 html_diff:: Difference :: NotPresent { ref elem, ref opposite_elem } => {
678694 if let Some ( ref elem) = * elem {
679- println ! ( " {} One element is missing: expected: `{}`" ,
680- elem. path, elem. element_name) ;
695+ print_message ( & format ! ( " {} One element is missing: expected: `{}`" ,
696+ elem. path, elem. element_name) ,
697+ intro_msg, span, text) ;
681698 } else if let Some ( ref elem) = * opposite_elem {
682699 if elem. element_name . is_empty ( ) {
683- println ! ( " {} Unexpected element: `{}`" ,
684- elem. path, concise_str( & elem. element_content) ) ;
700+ print_message ( & format ! ( " {} One element is missing: expected: `{}`" ,
701+ elem. path, concise_str( & elem. element_content) ) ,
702+ intro_msg, span, text) ;
685703 } else {
686- println ! ( " {} Unexpected element `{}`: found: `{}`" ,
687- elem. path, elem. element_name, concise_str( & elem. element_content) ) ;
704+ print_message ( & format ! ( " {} Unexpected element `{}`: found: `{}`" ,
705+ elem. path, elem. element_name,
706+ concise_str( & elem. element_content) ) ,
707+ intro_msg, span, text) ;
688708 }
689709 }
690710 }
0 commit comments