Regression tested on trunk.  OK to commit?

The patch allows gfortran to check a portion of C1202
that was previously mishandled.

2015-05-XX  Steven G. Kargl  <ka...@gcc.gnu.org>

        PR fortran/66057
        * interface.c(gfc_match_end_interface): Enfornce F2008 C1202 (R1201).

2015-05-XX  Steven G. Kargl  <ka...@gcc.gnu.org>

        PR fortran/66057
        * gfortran.dg/interface_operator_1.f90: New tests.

-- 
Steve
Index: gcc/fortran/interface.c
===================================================================
--- gcc/fortran/interface.c	(revision 223094)
+++ gcc/fortran/interface.c	(working copy)
@@ -346,8 +346,12 @@ gfc_match_end_interface (void)
 		break;
 
 	      m = MATCH_ERROR;
-	      gfc_error ("Expecting %<END INTERFACE OPERATOR (%s)%> at %C, "
-			 "but got %s", s1, s2);
+	      if (strcmp(s2, "none") == 0)
+		gfc_error ("Expecting %<END INTERFACE OPERATOR (%s)%> "
+			   "at %C, ", s1);
+	      else		
+		gfc_error ("Expecting %<END INTERFACE OPERATOR (%s)%> at %C, "
+			   "but got %s", s1, s2);
 	    }
 
 	}
Index: gcc/testsuite/gfortran.dg/interface_operator_1.f90
===================================================================
--- gcc/testsuite/gfortran.dg/interface_operator_1.f90	(revision 0)
+++ gcc/testsuite/gfortran.dg/interface_operator_1.f90	(working copy)
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! PR fortran/66106
+!
+! Original code from Gerhard Steinmetz
+! <gerhard dot steinmetz dot fortran at t-online dot de>
+program p
+   interface operator ( .gt. )
+   end interface operator        ! { dg-error "END INTERFACE OPERATOR" }
+end program p                    ! { dg-error "END INTERFACE" }
+! { dg-excess-errors "Unexpected end of file" }

Reply via email to