@@ -765,12 +765,6 @@ impl<'test> TestCx<'test> {
765765 }
766766
767767 if !unexpected. is_empty ( ) || !not_found. is_empty ( ) {
768- self . error ( & format ! (
769- "{} unexpected diagnostics reported, {} expected diagnostics not reported" ,
770- unexpected. len( ) ,
771- not_found. len( )
772- ) ) ;
773-
774768 // Emit locations in a format that is short (relative paths) but "clickable" in editors.
775769 // Also normalize path separators to `/`.
776770 let file_name = self
@@ -794,19 +788,20 @@ impl<'test> TestCx<'test> {
794788 |suggestions : & mut Vec < _ > , e : & Error , kind, line, msg, color, rank| {
795789 let mut ret = String :: new ( ) ;
796790 if kind {
797- ret += & format ! ( "{} {}" , "with kind" . color( color) , e. kind) ;
791+ ret += & format ! ( "{} {}" , "with different kind: " . color( color) , e. kind) ;
798792 }
799793 if line {
800794 if !ret. is_empty ( ) {
801795 ret. push ( ' ' ) ;
802796 }
803- ret += & format ! ( "{} {}" , "on line" . color( color) , line_str( e) ) ;
797+ ret += & format ! ( "{} {}" , "on different line: " . color( color) , line_str( e) ) ;
804798 }
805799 if msg {
806800 if !ret. is_empty ( ) {
807801 ret. push ( ' ' ) ;
808802 }
809- ret += & format ! ( "{} {}" , "with message" . color( color) , e. msg. cyan( ) ) ;
803+ ret +=
804+ & format ! ( "{} {}" , "with different message:" . color( color) , e. msg. cyan( ) ) ;
810805 }
811806 suggestions. push ( ( ret, rank) ) ;
812807 } ;
@@ -829,17 +824,20 @@ impl<'test> TestCx<'test> {
829824 // - only known line - meh, but suggested
830825 // - others are not worth suggesting
831826 if !unexpected. is_empty ( ) {
832- let header = "--- reported in JSON output but not expected in test file ---" ;
833- println ! ( "{}" , header. green( ) ) ;
827+ self . error ( & format ! (
828+ "{} diagnostics reported in JSON output but not expected in test file" ,
829+ unexpected. len( ) ,
830+ ) ) ;
834831 for error in & unexpected {
835832 print_error ( error) ;
836833 let mut suggestions = Vec :: new ( ) ;
837834 for candidate in & not_found {
835+ let kind_mismatch = candidate. kind != error. kind ;
838836 let mut push_red_suggestion = |line, msg, rank| {
839837 push_suggestion (
840838 & mut suggestions,
841839 candidate,
842- candidate . kind != error . kind ,
840+ kind_mismatch ,
843841 line,
844842 msg,
845843 Color :: Red ,
@@ -851,26 +849,28 @@ impl<'test> TestCx<'test> {
851849 } else if candidate. line_num . is_some ( )
852850 && candidate. line_num == error. line_num
853851 {
854- push_red_suggestion ( false , true , 1 ) ;
852+ push_red_suggestion ( false , true , if kind_mismatch { 2 } else { 1 } ) ;
855853 }
856854 }
857855
858856 show_suggestions ( suggestions, "expected" , Color :: Red ) ;
859857 }
860- println ! ( "{}" , "---" . green( ) ) ;
861858 }
862859 if !not_found. is_empty ( ) {
863- let header = "--- expected in test file but not reported in JSON output ---" ;
864- println ! ( "{}" , header. red( ) ) ;
860+ self . error ( & format ! (
861+ "{} diagnostics expected in test file but not reported in JSON output" ,
862+ not_found. len( )
863+ ) ) ;
865864 for error in & not_found {
866865 print_error ( error) ;
867866 let mut suggestions = Vec :: new ( ) ;
868867 for candidate in unexpected. iter ( ) . chain ( & unimportant) {
868+ let kind_mismatch = candidate. kind != error. kind ;
869869 let mut push_green_suggestion = |line, msg, rank| {
870870 push_suggestion (
871871 & mut suggestions,
872872 candidate,
873- candidate . kind != error . kind ,
873+ kind_mismatch ,
874874 line,
875875 msg,
876876 Color :: Green ,
@@ -882,13 +882,12 @@ impl<'test> TestCx<'test> {
882882 } else if candidate. line_num . is_some ( )
883883 && candidate. line_num == error. line_num
884884 {
885- push_green_suggestion ( false , true , 1 ) ;
885+ push_green_suggestion ( false , true , if kind_mismatch { 2 } else { 1 } ) ;
886886 }
887887 }
888888
889889 show_suggestions ( suggestions, "reported" , Color :: Green ) ;
890890 }
891- println ! ( "{}" , "---" . red( ) ) ;
892891 }
893892 panic ! (
894893 "errors differ from expected\n status: {}\n command: {}\n " ,
0 commit comments