Commit 4cb2a867 by Tobias Burnus Committed by Tobias Burnus

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
parent 9775a921
2012-01-27 Tobias Burnus <burnus@net-b.de> 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 PR fortran/52016
* resolve.c (resolve_formal_arglist): Fix elemental * resolve.c (resolve_formal_arglist): Fix elemental
constraint checks for polymorphic dummies. constraint checks for polymorphic dummies.
......
...@@ -3660,12 +3660,11 @@ alloc_opt_list: ...@@ -3660,12 +3660,11 @@ alloc_opt_list:
goto cleanup; goto cleanup;
} }
if (head->next) if (head->next
{ && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: SOURCE tag at %L"
gfc_error ("SOURCE tag at %L requires only a single entity in " " with more than a single allocate objects",
"the allocation-list", &tmp->where); &tmp->where) == FAILURE)
goto cleanup; goto cleanup;
}
source = tmp; source = tmp;
tmp = NULL; tmp = NULL;
......
2012-01-27 Tobias Burnus <burnus@net-b.de> 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 PR fortran/52016
* gfortran.dg/elemental_args_check_5.f90: New. * gfortran.dg/elemental_args_check_5.f90: New.
......
! { 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
! { dg-do compile } ! { dg-do compile }
! { dg-options "-std=f2003" }
program a program a
implicit none implicit none
...@@ -16,7 +17,7 @@ program a ...@@ -16,7 +17,7 @@ program a
allocate(integer(4) :: i(4), source=n) ! { dg-error "conflicts with the typespec" } 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" } allocate(x(4), source=n) ! { dg-error "type incompatible with" }
......
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