re PR fortran/51953 ([F2008] Allow multiple allocate-objects in ALLOCATE with SOURCE=)
2012-01-27 Tobias Burnus <burnus@net-b.de> PR fortran/51953 * match.c (gfc_match_allocate): Allow more than allocate object with SOURCE=. 2012-01-27 Tobias Burnus <burnus@net-b.de> PR fortran/51953 * gfortran.dg/allocate_alloc_opt_13.f90: New. * gfortran.dg/allocate_alloc_opt_4.f90: Add -std=f2003 and change dg-error string. From-SVN: r183621
This commit is contained in:
parent
9775a921e0
commit
4cb2a86715
|
@ -1,3 +1,9 @@
|
|||
2012-01-27 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/51953
|
||||
* match.c (gfc_match_allocate): Allow more than allocate
|
||||
object with SOURCE=.
|
||||
|
||||
2012-01-27 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/52016
|
||||
|
|
|
@ -3660,12 +3660,11 @@ alloc_opt_list:
|
|||
goto cleanup;
|
||||
}
|
||||
|
||||
if (head->next)
|
||||
{
|
||||
gfc_error ("SOURCE tag at %L requires only a single entity in "
|
||||
"the allocation-list", &tmp->where);
|
||||
goto cleanup;
|
||||
}
|
||||
if (head->next
|
||||
&& gfc_notify_std (GFC_STD_F2008, "Fortran 2008: SOURCE tag at %L"
|
||||
" with more than a single allocate objects",
|
||||
&tmp->where) == FAILURE)
|
||||
goto cleanup;
|
||||
|
||||
source = tmp;
|
||||
tmp = NULL;
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2012-01-27 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/51953
|
||||
* gfortran.dg/allocate_alloc_opt_13.f90: New.
|
||||
* gfortran.dg/allocate_alloc_opt_4.f90: Add -std=f2003
|
||||
and change dg-error string.
|
||||
|
||||
2012-01-27 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/52016
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
! { dg-do compile }
|
||||
!
|
||||
! PR fortran/51953
|
||||
!
|
||||
!
|
||||
type t
|
||||
end type t
|
||||
|
||||
class(t), allocatable :: a, c(:), e(:)
|
||||
class(t), pointer :: b, d(:)
|
||||
|
||||
allocate (a, b, source=c(1))
|
||||
allocate (c(4), d(6), source=e)
|
||||
|
||||
allocate (a, b, source=f())
|
||||
allocate (c(1), d(6), source=g())
|
||||
|
||||
contains
|
||||
function f()
|
||||
class(t), allocatable :: f
|
||||
end function
|
||||
function g()
|
||||
class(t), allocatable :: g(:)
|
||||
end function
|
||||
end
|
|
@ -1,4 +1,5 @@
|
|||
! { dg-do compile }
|
||||
! { dg-options "-std=f2003" }
|
||||
program a
|
||||
|
||||
implicit none
|
||||
|
@ -16,7 +17,7 @@ program a
|
|||
|
||||
allocate(integer(4) :: i(4), source=n) ! { dg-error "conflicts with the typespec" }
|
||||
|
||||
allocate(i(4), j(n), source=n) ! { dg-error "requires only a single entity" }
|
||||
allocate(i(4), j(n), source=n) ! { dg-error "Fortran 2008: SOURCE tag at .1. with more than a single allocate objects" }
|
||||
|
||||
allocate(x(4), source=n) ! { dg-error "type incompatible with" }
|
||||
|
||||
|
|
Loading…
Reference in New Issue