Commit 3d6fc627 by Janus Weil

re PR fortran/86545 (ICE in transfer_expr on invalid WRITE statement)

fix PR 86545

2018-08-25  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/86545
	* resolve.c (resolve_transfer): Correctly determine typespec for
	generic function calls, in order to throw a proper error.

2018-08-25  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/86545
	* gfortran.dg/generic_35.f90: New test case.

From-SVN: r263854
parent efa57fee
2018-08-25 Janus Weil <janus@gcc.gnu.org>
PR fortran/86545
* resolve.c (resolve_transfer): Correctly determine typespec for
generic function calls, in order to throw a proper error.
2018-08-24 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/86837
......
......@@ -9280,7 +9280,6 @@ resolve_select_type (gfc_code *code, gfc_namespace *old_ns)
static void
resolve_transfer (gfc_code *code)
{
gfc_typespec *ts;
gfc_symbol *sym, *derived;
gfc_ref *ref;
gfc_expr *exp;
......@@ -9316,7 +9315,9 @@ resolve_transfer (gfc_code *code)
_("item in READ")))
return;
ts = exp->expr_type == EXPR_STRUCTURE ? &exp->ts : &exp->symtree->n.sym->ts;
const gfc_typespec *ts = exp->expr_type == EXPR_STRUCTURE
|| exp->expr_type == EXPR_FUNCTION
? &exp->ts : &exp->symtree->n.sym->ts;
/* Go to actual component transferred. */
for (ref = exp->ref; ref; ref = ref->next)
......
2018-08-25 Janus Weil <janus@gcc.gnu.org>
PR fortran/86545
* gfortran.dg/generic_35.f90: New test case.
2018-08-24 David Malcolm <dmalcolm@redhat.com>
PR 87091
......
! { dg-do compile }
!
! PR 86545: ICE in transfer_expr on invalid WRITE statement
!
! Contributed by Janus Weil <janus@gcc.gnu.org>
module m
type tString
character(len=:), allocatable :: cs
end type
interface my_trim
module procedure trim_string
end interface
contains
elemental function trim_string(self) result(str)
type(tString) :: str
class(tString), intent(in) :: self
end function
end module
program p
use m
type(tString) :: s
write(*,*) my_trim(s) ! { dg-error "cannot have ALLOCATABLE components" }
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment