re PR fortran/42048 ([F03] Erroneous syntax error message on TBP call)
2009-11-15 Janus Weil <janus@gcc.gnu.org> PR fortran/42048 * match.c (gfc_match_call): If we're inside a function with derived type return value, allow calling a TBP of the result variable. 2009-11-15 Janus Weil <janus@gcc.gnu.org> PR fortran/42048 * gfortran.dg/typebound_call_11.f03: New test. From-SVN: r154190
This commit is contained in:
parent
4b12152c8f
commit
bd09b73784
4 changed files with 52 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2009-11-15 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/42048
|
||||
* match.c (gfc_match_call): If we're inside a function with derived
|
||||
type return value, allow calling a TBP of the result variable.
|
||||
|
||||
2009-11-12 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
* intrinsic.texi (XOR): Refer also to .NEQV.
|
||||
|
|
|
@ -2975,7 +2975,7 @@ gfc_match_call (void)
|
|||
|
||||
/* If this is a variable of derived-type, it probably starts a type-bound
|
||||
procedure call. */
|
||||
if (sym->attr.flavor != FL_PROCEDURE
|
||||
if ((sym->attr.flavor != FL_PROCEDURE || sym == gfc_current_ns->proc_name)
|
||||
&& (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS))
|
||||
return match_typebound_call (st);
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2009-11-15 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/42048
|
||||
* gfortran.dg/typebound_call_11.f03: New test.
|
||||
|
||||
2009-11-15 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* gcc.dg/lto/lto.exp: For non-lto, bail out before calling
|
||||
|
|
40
gcc/testsuite/gfortran.dg/typebound_call_11.f03
Normal file
40
gcc/testsuite/gfortran.dg/typebound_call_11.f03
Normal file
|
@ -0,0 +1,40 @@
|
|||
! { dg-do compile }
|
||||
!
|
||||
! PR 42048: [F03] Erroneous syntax error message on TBP call
|
||||
!
|
||||
! Contributed by Damian Rouson <rouson@sandia.gov>
|
||||
|
||||
module grid_module
|
||||
implicit none
|
||||
type grid
|
||||
contains
|
||||
procedure :: new_grid
|
||||
end type
|
||||
contains
|
||||
subroutine new_grid(this)
|
||||
class(grid) :: this
|
||||
end subroutine
|
||||
end module
|
||||
|
||||
module field_module
|
||||
use grid_module
|
||||
implicit none
|
||||
|
||||
type field
|
||||
type(grid) :: mesh
|
||||
end type
|
||||
|
||||
contains
|
||||
|
||||
type(field) function new_field()
|
||||
call new_field%mesh%new_grid()
|
||||
end function
|
||||
|
||||
function new_field2() result(new)
|
||||
type(field) :: new
|
||||
call new%mesh%new_grid()
|
||||
end function
|
||||
|
||||
end module
|
||||
|
||||
! { dg-final { cleanup-modules "grid_module field_module" } }
|
Loading…
Add table
Reference in a new issue