This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [gfortran, testsuite] Don't give excess errors for multiple locion the same line


Tobias Schlüter wrote:
> 2005-02-20  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
> 
> 	* gfortran.dg/do_iterator: Split loop, markkup all lines for
> 	which an error locus is printed.
> 	* gfortran.dg/pr17708.f90: Markup all lines for which an error
> 	locus is printed.
> 	* gfortran.dg/select_4.f90: Likewise.
> 	* lib/gfortran-dg.exp (gfortran-dg-test): Handle gfortran error
> 	locuses in the various permutations.
> 
Apologies.  Here's the complete diff.

- Tobi
Index: gfortran.dg/do_iterator.f90
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gfortran.dg/do_iterator.f90,v
retrieving revision 1.1
diff -u -p -r1.1 do_iterator.f90
--- gfortran.dg/do_iterator.f90	16 Jul 2004 00:57:43 -0000	1.1
+++ gfortran.dg/do_iterator.f90	20 Feb 2005 19:17:16 -0000
@@ -1,8 +1,12 @@
 ! { dg-do compile }
 ! various checks which verify that we don't change do-iterators
-DO I=1,5
-   I=1        ! { dg-error "cannot be redefined" "changing do-iterator 1" }
+DO I=1,5       ! { dg-error "cannot be redefined" "changing do-iterator 1" }
+   I=1         ! { dg-error "cannot be redefined" "changing do-iterator 1" }
+END DO
+DO I=1,5       ! { dg-error "cannot be redefined" "changing do-iterator 2" }
    READ(5,*) I ! { dg-error "cannot be redefined" "changing do-iterator 2" }
+END DO
+DO I=1,5       ! { dg-error "cannot be redefined" "changing do-iterator 3" }
    READ(5,*,iostat=i) j ! { dg-error "cannot be redefined" "changing do-iterator 3" }
 ENDDO
 END
Index: gfortran.dg/pr17708.f90
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gfortran.dg/pr17708.f90,v
retrieving revision 1.1
diff -u -p -r1.1 pr17708.f90
--- gfortran.dg/pr17708.f90	4 Oct 2004 21:05:07 -0000	1.1
+++ gfortran.dg/pr17708.f90	20 Feb 2005 19:17:16 -0000
@@ -2,8 +2,8 @@
       program test
         j = 0
         do 10 i=1,3
-           if(i == 2) goto 10 ! { dg-warning "" "" }
+           if(i == 2) goto 10 ! { dg-warning "jumps to END" }
            j = j+1
-10      enddo
+10      enddo                 ! { dg-warning "jumps to END" }
         if (j/=2) call abort
       end
Index: gfortran.dg/select_4.f90
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gfortran.dg/select_4.f90,v
retrieving revision 1.2
diff -u -p -r1.2 select_4.f90
--- gfortran.dg/select_4.f90	14 Jan 2005 11:55:12 -0000	1.2
+++ gfortran.dg/select_4.f90	20 Feb 2005 19:17:16 -0000
@@ -4,15 +4,15 @@
 program select_5
   integer i
   select case(i)
-  case (20:30)
-  case (25:) ! { dg-error "overlaps with CASE" "" }
+  case (20:30) ! { dg-error "overlaps with CASE" }
+  case (25:) ! { dg-error "overlaps with CASE" }
   end select
   select case(i)
-  case (30)
-  case (25:) ! { dg-error "overlaps with CASE" "" }
+  case (30)  ! { dg-error "overlaps with CASE" }
+  case (25:) ! { dg-error "overlaps with CASE" }
   end select
   select case(i)
-  case (20:30)
-  case (25) ! { dg-error "overlaps with CASE" "" }
+  case (20:30) ! { dg-error "overlaps with CASE" }
+  case (25) ! { dg-error "overlaps with CASE" }
   end select
 end program select_5
Index: lib/gfortran-dg.exp
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/lib/gfortran-dg.exp,v
retrieving revision 1.3
diff -u -p -r1.3 gfortran-dg.exp
--- lib/gfortran-dg.exp	16 Jul 2004 00:32:26 -0000	1.3
+++ lib/gfortran-dg.exp	20 Feb 2005 19:17:16 -0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,11 +25,44 @@ proc gfortran-dg-test { prog do_what ext
     set comp_output [lindex $result 0]
     set output_file [lindex $result 1]
 
-    # Put the error message on the same line as the line number
-    # FIXME: Add a colon after line number
-    # Remove the line of source code with the error and
-    # the number pointing to error
-    regsub -all "\n\n\[^\n\]*\n *\[0-9\]*\n" $comp_output ": " comp_output    
+    # gfortran error messages look like this:
+    #      In file [name]:[line]
+    #
+    #        some code
+    #              1
+    #     Error: Some error at (1) and (2)
+    # or
+    #      In file [name]:[line]
+    #
+    #       some code
+    #              1
+    #      In file [name]:[line2]
+    #
+    #       some other code
+    #         2
+    #     Error: Some error at (1) and (2)
+    # or
+    #      In file [name]:[line]
+    #
+    #       some code and some more code
+    #              1       2
+    #     Error: Some error at (1) and (2)
+    #
+    # We collapse these to look like:
+    #  [name]:[line]: Error: Some error at (1) and (2)
+    # or
+    #  [name]:[line]: Error: Some error at (1) and (2)
+    #  [name]:[line2]: Error: Some error at (1) and (2)
+    # We proceed in two steps: first we deal with the form with two
+    # different locus lines, then with the form with only one locus line.
+#    puts "vorher"
+#    puts $comp_output
+    regsub -all " In file (\[^\n\]*)\n\n\[^\n\]*\n\[^\n\]*\n In file (\[^\n\]*)\n\n\[^\n\]*\n\[^\n\]*\n(\[^\n\]*)\n" $comp_output "\\1: \\3\n\\2: \\3\n"  comp_output
+#    puts "zwischen"
+#    puts $comp_output
+    regsub -all " In file (\[^\n\]*)\n\n\[^\n\]*\n\[^\n\]*\n(\[^\n\]*)\n" $comp_output "\\1: \\2\n" comp_output
+#    puts "nde"
+#    puts $comp_output
 
     return [list $comp_output $output_file]
 }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]