[J3] [SC22WG5.6386] RE: [ukfortran] WG5 Letter Ballot 2

Malcolm Cohen malcolm at nag-j.co.jp
Tue May 10 03:19:30 UTC 2022


So what are you going to do with this constructor? Assign it to a local variable? Oops, not allowed to have the local variable. Pass it as an argument? Not allowed either.

 

I suppose you could write it into a character string. Is this the hill we’re going to have the interp die on? I am struggling to imagine any other context where it could potentially be valid...

 

...and anyway, the existing text does not ban type names. Type REAL is not of type REAL or any other type, type CHARACTER is not of type CHARACTER or any other type, and type RANDOM_DERIVED_TYPE is not of any type either.

 

(There might be consequences for SIMPLE procedures here; we definitely need to ban the type name or have some constraint on structure constructors.)

 

Cheers,

-- 

..............Malcolm Cohen, NAG Oxford/Tokyo.

 

From: J3 <j3-bounces at mailman.j3-fortran.org> On Behalf Of Robert Corbett via J3
Sent: Tuesday, May 10, 2022 11:53 AM
To: General J3 interest list <j3 at mailman.j3-fortran.org>
Cc: Robert Corbett <rpcorbett at att.net>
Subject: Re: [J3] [SC22WG5.6386] RE: [ukfortran] WG5 Letter Ballot 2

 

The text bans a named local entity or construct entity.  If type names are not banned, they can be used in constructors, which are not named entities.

Robert Corbett





On May 9, 2022, at 7:39 PM, Malcolm Cohen via J3 <j3 at mailman.j3-fortran.org <mailto:j3 at mailman.j3-fortran.org> > wrote:



<<< 

A type name can name a local entity that might seem to be
subject to the new constraint.  However, I do not think that
a derived type is "of a type" (it is a type), and therefore,
is not subject to the constraint.  I find that to be a slender
reed. 

>>> 

 

A derived type name does not itself have a type, any more than the name of a module (that might contain type definitions that contain data components) has a type. In my opinion this is not a weak or slender reed.

 

> A named local or construct data entity

 

Apart from having ambiguous grammar, there is also no such thing as a “construct data entity”.

 

> be of a {declared} type

 

We never say “of a declared type”, as the “declared” part goes with the entity, not with the type.

 

Making such changes to the edit would change my vote to “N”.

 

<<< 

Specifically, it might be read as banning
type names that name derived types that include default
initializations of pointer components to targets.

>>> 

 

I disagree, but in any case, how exactly do you envisage such a type name being used unproblematically within a pure procedure (and without creating any local entity or construct entity of such a type)?

 

Cheers,

-- 

..............Malcolm Cohen, NAG Oxford/Tokyo.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.j3-fortran.org/pipermail/j3/attachments/20220510/7aff8b06/attachment-0001.htm>


More information about the J3 mailing list