[J3] surprisingly PURE
van.snyder at jpl.nasa.gov
Wed Apr 22 17:38:41 EDT 2020
On Wed, 2020-04-22 at 10:09 -0400, Vipul Parekh via J3 wrote:
> C1589a A local variable of a pure subprogram, or of a BLOCK construct
> within a pure subprogram, shall not be of a derived type with a
> pointer component at any level of component selection that is default
> initialized to an initial-data-target.
> Such a constraint will disallow, I think, "TYPE(T) Y" declaration in
> Bob's example and "CLASS(T1), allocatable :: Y" in Van's case. Thus
> get the standard to treat it at the very root of the matter as advised
> by Malcolm.
It wouldn't disallow
class(t1), allocatable :: Y
in my example because T1 doesn't have a pointer component. It's T2 that
has the pointer component.
It's probably a bit too strong for PURE because it doesn't allow
references. It's probably useful for PURE and SIMPLE.
Adding prohibition against such a type to the properties for base
objects in C1594 might be useful:
C1594 In a pure subprogram, any designator with a base object that
is ... of a type that is accessed by host or use association that has a
pointer component at any level of component selection that is default
initialized to other than NULL()...
(wordsmithing needs some polish).
Adding MOLD= to C1594(6) would make my example non-conformant.
More information about the J3