This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [gfortran, testsuite] Don't give excess errors for multiple locion the same line
- From: Tobias Schlüter <tobias dot schlueter at physik dot uni-muenchen dot de>
- To: Steve Kargl <sgk at troutmask dot apl dot washington dot edu>
- Cc: Andrew Pinski <pinskia at physics dot uc dot edu>, fortran at gcc dot gnu dot org,patch <gcc-patches at gcc dot gnu dot org>
- Date: Sun, 20 Feb 2005 20:26:36 +0100
- Subject: Re: [gfortran, testsuite] Don't give excess errors for multiple locion the same line
- References: <20050219211719.GA1824@troutmask.apl.washington.edu> <2353e4e423d508475d99136aff789ba7@physics.uc.edu> <20050219213353.GA6992@troutmask.apl.washington.edu> <4218BEB4.1030400@physik.uni-muenchen.de> <4218C385.5030900@physik.uni-muenchen.de> <4218E400.30009@physik.uni-muenchen.de>
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]
}