re PR fortran/61318 (Improve error diagnostic by pointing to the expression and not...
authorSteven G. Kargl <kargl@gcc.gnu.org>
Mon, 22 Aug 2016 18:18:14 +0000 (18:18 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Mon, 22 Aug 2016 18:18:14 +0000 (18:18 +0000)
2016-08-22  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/61318
* interface.c (compare_parameter): Use better locus for error message.

2016-08-22  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/61318
* gfortran.dg/pr61318.f90: New test.

From-SVN: r239667

gcc/fortran/ChangeLog
gcc/fortran/interface.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr61318.f90 [new file with mode: 0644]

index 900d91560f292e7e3cb1e1ec5eabb476578bf7be..a7be7c6ffd6098f4e91fa1809e45fa2e55d6b6f7 100644 (file)
@@ -1,10 +1,14 @@
+2016-08-22  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/61318
+       * interface.c (compare_parameter): Use better locus for error message.
+
 2016-08-22  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/77260
        * gcc/fortran/trans-decl.c (generate_local_decl): Suppress warning
        for unused variable if symbol is entry point.
 
-
 2016-08-19  Joseph Myers  <joseph@codesourcery.com>
 
        PR c/32187
index 5bd1279291e9572bf4cd4fd508b04fc050e1a446..b894b2ff5b17edff71935d08cbd4f7044d0b5509 100644 (file)
@@ -2146,7 +2146,7 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual,
     {
       if (where)
        gfc_error ("Type mismatch in argument %qs at %L; passed %s to %s",
-                  formal->name, &actual->where, gfc_typename (&actual->ts),
+                  formal->name, where, gfc_typename (&actual->ts),
                   gfc_typename (&formal->ts));
       return 0;
     }
index 82b4db4d9602e2a65185eafe4f6384306187c190..9cc5fb51739077175fdc49317eb1ee9df5d5bca6 100644 (file)
@@ -1,3 +1,8 @@
+2016-08-22  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/61318
+       * gfortran.dg/pr61318.f90: New test.
+
 2016-08-22  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/77260
diff --git a/gcc/testsuite/gfortran.dg/pr61318.f90 b/gcc/testsuite/gfortran.dg/pr61318.f90
new file mode 100644 (file)
index 0000000..4e7e862
--- /dev/null
@@ -0,0 +1,23 @@
+! { dg-do compile }
+!
+module gbl_message
+  type :: mytype
+    integer(kind=4) :: e
+  end type mytype
+  type(mytype), parameter :: seve = mytype(1)
+end module gbl_message
+
+module gbl_interfaces
+  interface
+    subroutine gagout(message)
+      character(len=*), intent(in) :: message
+    end subroutine gagout
+  end interface
+end module gbl_interfaces
+
+program test
+  use gbl_message
+  use gbl_interfaces
+  call gagout(seve%e,'Some string') ! { dg-error "Type mismatch in argument" }
+end program test
+! { dg-final { cleanup-modules "gbl_interfaces gbl_message" } }