re PR fortran/29819 (Error/warning message should ignore comments for "1" in %C output)
authorSteven G. Kargl <kargl@gcc.gnu.org>
Thu, 14 Jul 2016 20:54:40 +0000 (20:54 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Thu, 14 Jul 2016 20:54:40 +0000 (20:54 +0000)
2016-07-14  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/29819
* parse.c (parse_contained): Use proper locus.

2016-07-14  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/29819
* gfortran.dg/bind_c_usage_9.f03: Move dg-error.
* gfortran.dg/contains.f90: Ditto.
* gfortran.dg/contains_empty_1.f03: Ditto.
* gfortran.dg/submodule_3.f08: Ditto.

From-SVN: r238354

gcc/fortran/ChangeLog
gcc/fortran/parse.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/bind_c_usage_9.f03
gcc/testsuite/gfortran.dg/contains.f90
gcc/testsuite/gfortran.dg/contains_empty_1.f03
gcc/testsuite/gfortran.dg/submodule_3.f08

index 0abf7d03045ff74ec3c6dbfb33519af4d9195440..594b19ec9a3321c15b4cecb65dd889fdc6f8f899 100644 (file)
@@ -1,3 +1,8 @@
+2016-07-14  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/29819
+       * parse.c (parse_contained): Use proper locus.
 2016-07-14  Andre Vehreschild  <vehre@gcc.gnu.org>
 
        PR fortran/70842
index 0aa736c7089d6d6f6cacb70740dd349b4b8f4833..bd7b1384a0c81d839f9f08fa9a143cbd9dc6151f 100644 (file)
@@ -5321,6 +5321,7 @@ parse_contained (int module)
   gfc_statement st;
   gfc_symbol *sym;
   gfc_entry_list *el;
+  locus old_loc;
   int contains_statements = 0;
   int seen_error = 0;
 
@@ -5337,6 +5338,7 @@ parse_contained (int module)
  next:
       /* Process the next available statement.  We come here if we got an error
         and rejected the last statement.  */
+      old_loc = gfc_current_locus;
       st = next_statement ();
 
       switch (st)
@@ -5442,7 +5444,7 @@ parse_contained (int module)
   pop_state ();
   if (!contains_statements)
     gfc_notify_std (GFC_STD_F2008, "CONTAINS statement without "
-                   "FUNCTION or SUBROUTINE statement at %C");
+                   "FUNCTION or SUBROUTINE statement at %L", &old_loc);
 }
 
 
index 2d147bbf6fc3cbfb206741531ea5e4036b66aa8d..825442746c00091a514e735b110ac17d648a9c9b 100644 (file)
@@ -1,3 +1,11 @@
+2016-07-14  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/29819
+       * gfortran.dg/bind_c_usage_9.f03: Move dg-error.
+       * gfortran.dg/contains.f90: Ditto.
+       * gfortran.dg/contains_empty_1.f03: Ditto.
+       * gfortran.dg/submodule_3.f08: Ditto.
+
 2016-07-14  Jakub Jelinek  <jakub@redhat.com>
 
        PR testsuite/71865
index 086a1166a169971d6513bd55b989a911a706e8e5..016fc7f62e06cb399d34ec3023c7a12e83eed0ae 100644 (file)
@@ -6,42 +6,42 @@
 ! for Fortran 2003.
 !
 subroutine foo() bind(c)
-contains
+contains ! { dg-error "Fortran 2008: CONTAINS statement" }
   subroutine bar() bind (c) ! { dg-error "may not be specified for an internal" }
   end subroutine bar ! { dg-error "Expected label" }
-end subroutine foo ! { dg-error "Fortran 2008: CONTAINS statement" }
+end subroutine foo
 
 subroutine foo2() bind(c)
   use iso_c_binding
-contains
+contains ! { dg-error "Fortran 2008: CONTAINS statement" }
   integer(c_int) function barbar() bind (c) ! { dg-error "may not be specified for an internal" }
   end function barbar ! { dg-error "Expecting END SUBROUTINE" }
-end subroutine foo2 ! { dg-error "Fortran 2008: CONTAINS statement" }
+end subroutine foo2
 
 function one() bind(c)
   use iso_c_binding
   integer(c_int) :: one
   one = 1
-contains
+contains ! { dg-error "Fortran 2008: CONTAINS statement" }
   integer(c_int) function two() bind (c) ! { dg-error "may not be specified for an internal" }
   end function two ! { dg-error "Expected label" }
-end function one ! { dg-error "Fortran 2008: CONTAINS statement" }
+end function one
 
 function one2() bind(c)
   use iso_c_binding
   integer(c_int) :: one2
   one2 = 1
-contains
+contains ! { dg-error "Fortran 2008: CONTAINS statement" }
   subroutine three() bind (c) ! { dg-error "may not be specified for an internal" }
   end subroutine three ! { dg-error "Expecting END FUNCTION statement" }
-end function one2 ! { dg-error "Fortran 2008: CONTAINS statement" }
+end function one2
 
 program main
   use iso_c_binding
   implicit none
-contains
+contains ! { dg-error "Fortran 2008: CONTAINS statement" }
   subroutine test() bind(c) ! { dg-error "may not be specified for an internal" }
   end subroutine test ! { dg-error "Expecting END PROGRAM" }
   integer(c_int) function test2() bind (c) ! { dg-error "may not be specified for an internal" }
   end function test2  ! { dg-error "Expecting END PROGRAM" }
-end program main ! { dg-error "Fortran 2008: CONTAINS statement" }
+end program main
index 221488afbe1bd576e04160d702ece5e0616c7ff7..420160b259809405330d19dd51c6a85c52d4cc27 100644 (file)
@@ -3,9 +3,9 @@
 ! Check whether empty contains are allowd
 ! PR fortran/29806
 module x
- contains
-end module x ! { dg-error "CONTAINS statement without FUNCTION or SUBROUTINE statement" }
+ contains ! { dg-error "CONTAINS statement without FUNCTION or SUBROUTINE statement" }
+end module x
 
 program y
-  contains
-end program y ! { dg-error "CONTAINS statement without FUNCTION or SUBROUTINE statement" }
+  contains  ! { dg-error "CONTAINS statement without FUNCTION or SUBROUTINE statement" }
+end program y
index 51b5dd90b161d1d76357923a31e7d7c5797e12cf..b9cdc6731a1884089cd85396aa07324004fc1b7f 100644 (file)
@@ -2,10 +2,10 @@
 ! { dg-options "-std=f2003 -pedantic" }
 program test
   print *, 'hello there'
-contains
-end program test ! { dg-error "Fortran 2008: CONTAINS statement without" }
+contains ! { dg-error "Fortran 2008: CONTAINS statement without" }
+end program test
 
 module truc
   integer, parameter :: answer = 42
-contains
-end module truc ! { dg-error "Fortran 2008: CONTAINS statement without" }
+contains ! { dg-error "Fortran 2008: CONTAINS statement without" }
+end module truc
index 9d6c8d28e3a2ef17f2b5f8e32514d1cd010950f4..26a2217d28af0795c2415174b8301cc5813c2d6d 100644 (file)
@@ -21,7 +21,7 @@
 !
   SUBMODULE (foo_interface) foo_interface_son ! { dg-error "SUBMODULE declaration" }
 !
-  contains
+  contains ! { dg-error "CONTAINS statement without FUNCTION or SUBROUTINE" }
 
      module function array1 (this) result(that) ! { dg-error "MODULE prefix" }
      end function ! { dg-error "Expecting END PROGRAM" }
@@ -33,5 +33,5 @@
 
   end SUBMODULE foo_interface_son ! { dg-error "Expecting END PROGRAM" }
 
-end ! { dg-error "CONTAINS statement without FUNCTION or SUBROUTINE" }
+end