]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR fortran/61318 (Improve error diagnostic by pointing to the expression...
authorSteven G. Kargl <kargl@gcc.gnu.org>
Fri, 30 Sep 2016 22:40:18 +0000 (22:40 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Fri, 30 Sep 2016 22:40:18 +0000 (22:40 +0000)
2016-09-30  Steven G. Kargl  <kargl@gcc.gnu.org>

Backport from trunk

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

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

From-SVN: r240683

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

index a2513068d18f4e4c00f5edcdecdd5c30dfaab82d..72efc0772eb883af3a4bf6a45e4a5c01259d73ab 100644 (file)
@@ -1,3 +1,10 @@
+2016-09-30  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       Backport from trunk
+
+       PR fortran/61318
+       * interface.c (compare_parameter): Use better locus for error message.
+
 2016-09-30  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        Backport from trunk
index 8571a747bafb6ec34642322fd5af960541951597..f575d76349ed566de9e990ce686058e70165799d 100644 (file)
@@ -2026,7 +2026,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 584bd5646265bf0795aece05df7ad2a9741ffc14..bdf632b4d8a4402c9919868e69549fe1faa05d4a 100644 (file)
@@ -1,3 +1,10 @@
+2016-09-30  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       Backport from trunk
+
+       PR fortran/61318
+       * gfortran.dg/pr61318.f90: New test.
+
 2016-09-30  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        Backport from trunk
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" } }