test for allocatable function (f95 extension)
Brooks Moses
bmoses@stanford.edu
Tue Nov 29 19:25:00 GMT 2005
Uttam Pawar wrote:
> $ cat test.f90
> program no_leak
> real, dimension(100) :: x, y
> y(:size(compact(x))) = compact(x)**2
> contains
> function compact(x)
> real,allocatable,dimension(:) :: compact
> real,dimension(:),intent(in) :: x
> integer :: n
> allocate(compact(n))
> end function compact
> end
>
> $ test.f90
> gfortran test.f90
>
> In file test.f90:6
>
> real,allocatable,dimension(:) :: compact
> 1
> Error: ALLOCATABLE attribute conflicts with FUNCTION attribute at (1)
Fortran 95 Draft standard, section 5.2.6: "Constraint: The array-name
[in an ALLOCATABLE statement] shall not be a ... function result."
I can't find where it directly gives the same constraint for ALLOCATABLE
as an attribute rather than in a statement of its own, but the first
paragraph of 5.2 says, regarding attribute specification statements:
"The combination of attributes that may be specified for a particular
entity is subject to the same restrictions as for type declaration
statements regardless of the method of specification," which I would
infer is intended to mean that this constraint applies to the case you
illustrate as well.
This is, I believe, something added in one of the F95 TRs and in F2003.
- Brooks
More information about the Fortran
mailing list