Patchwork [fortran] mixed functions/subroutines in generic interface

login
register
mail settings
Submitter Daniel Franke
Date Jan. 6, 2011, 9:50 p.m.
Message ID <201101062250.29594.franke.daniel@gmail.com>
Download mbox | patch
Permalink /patch/77807/
State New
Headers show

Comments

Daniel Franke - Jan. 6, 2011, 9:50 p.m.
On Thursday 06 January 2011 20:31:08 H.J. Lu wrote:
> > Fixed whitespaces and committed as r168542.
> 
> This caused:
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47195

Committed attached changes as obvious as r168554.

No idea how I managed to mess this up :(

	Daniel

Patch

Index: gfortran.dg/interface_33.f90
===================================================================
--- gfortran.dg/interface_33.f90	(revision 168553)
+++ gfortran.dg/interface_33.f90	(revision 168554)
@@ -1,4 +1,4 @@ 
-! { dg-do "compile" }
+! { dg-do compile }
 !
 ! PR fortran/33117, PR fortran/46478
 ! Procedures of a generic interface must be either
@@ -10,7 +10,7 @@ 
 !
 module m1
   interface gen
-    subroutine sub()            ! dg-error { "all SUBROUTINEs or all FUNCTIONs" }
+    subroutine sub()            ! { dg-error "all SUBROUTINEs or all FUNCTIONs" }
     end subroutine sub
     function bar()
       real :: bar
@@ -27,7 +27,7 @@  MODULE m2
     MODULE PROCEDURE subr_name
   END INTERFACE
 CONTAINS
-   LOGICAL FUNCTION func_name()  ! dg-error { "all SUBROUTINEs or all FUNCTIONs" }
+   LOGICAL FUNCTION func_name()  ! { dg-error "all SUBROUTINEs or all FUNCTIONs" }
    END FUNCTION
    SUBROUTINE subr_name()
    END SUBROUTINE
Index: gfortran.dg/defined_operators_1.f90
===================================================================
--- gfortran.dg/defined_operators_1.f90	(revision 168553)
+++ gfortran.dg/defined_operators_1.f90	(revision 168554)
@@ -17,10 +17,21 @@  module mymod
        character(*) :: foo_chr
        character(*), intent(in) :: chr
      end function foo_chr
+  end interface
+
+  !
+  ! PR fortran/33117
+  ! PR fortran/46478
+  ! Mixing FUNCTIONs and SUBROUTINEs in an INTERFACE hides the
+  ! errors that should be tested here. Hence split out subroutine
+  ! to test separately.
+  !
+  interface operator (.bar.)
      subroutine bad_foo (chr) ! { dg-error "must be a FUNCTION" }
        character(*), intent(in) :: chr
      end subroutine bad_foo
   end interface
+
 contains
   function foo_0 () ! { dg-error "must have at least one argument" }
     integer :: foo_1
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 168553)
+++ ChangeLog	(revision 168554)
@@ -1,3 +1,11 @@ 
+2011-01-06  Daniel Franke  <franke.daniel@gmail.com>
+
+	PR fortran/47195
+	* gfortran.dg/interface_33.f90: Fixed dg-error declarations.
+	* gfortran.dg/defined_operators_1.f90: Split the subroutine
+	from the interface of functions to not hide the errors that
+	shall be tested.
+
 2011-01-06  Jan Hubicka  <jh@suse.cz>
 
 	* testsuite/gcc.dg/lto/pr47188_0.c: New testcase.