Skip to content

Commit 01d5ce7

Browse files
committed
Changes from subgroup: 2025-04-07
1 parent 7aa0fd5 commit 01d5ce7

File tree

2 files changed

+93
-45
lines changed

2 files changed

+93
-45
lines changed

J3-Papers/edits/25-107_concepts.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ Ctt13 (Rtt06) If <implied-shape-spec>, <explicit-shape-spec> or
188188

189189
Ctt14 (Rtt06) If <explicit-shape-bounds-spec> appears in
190190
<deferred-const-declaration-stmt>, then
191-
<explicit-bounds-expr> shall not appear as a lower bound.
191+
<lower-explicit-bounds-expr> shall not appear.
192192

193193
NOTE 1
194194

J3-Papers/edits/25-112_misc.txt

Lines changed: 92 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -160,87 +160,135 @@ generics subgroup thought it should be updated.}
160160
than a deferred constant, namelist group, requirement, or
161161
template."
162162

163-
<<<< whis is where we got to on Monday March 31, 2025 >>>>
163+
In 2nd sentence of paragraph 1, insert "or template" after
164+
"in the module" in both locations such that the sentence now
165+
reads:
164166

167+
"An access-stmt without an access-id list specifies the default
168+
accessibility of the identifiers of entities declared in the
169+
module or template, and of entities accessed from a module whose
170+
name does not appear in any access-stmt in the module or
171+
template."
165172

173+
In last sentence of paragraph 1, insert "or template" after
174+
"in a module" such that the sentence now reads:
166175

167-
[120:37+] In 2nd sentence of paragraph 1, insert "or template" after
168-
"in the module" in both locations such that the sentence now
169-
reads:
170-
An access-stmt without an access-id list specifies the default
171-
accessibility of the identifiers of entities declared in the
172-
module or template, and of entities accessed from a module
173-
whose name does not appear in any access-stmt in the module or
174-
template.
175-
176-
[120:43] In last sentence of paragraph 1, insert "or template" after
177-
"in a module" such that the sentence now reads:
178-
If no such statement appears in a module or template, the
179-
default is public accessibility.
180-
181-
[121:1] In 1st sentence of paragraph 2, insert "or template" after "in
182-
the module" such that the sentence now reads:
183-
If an identifier is accessed by use association and not declared
184-
in the module or template, and the name of every module from
185-
which it is accessed appears in an access-stmt in the scoping
186-
unit, its default accessibility is PRIVATE if the access-spec in
187-
every such access-stmt is PRIVATE, or PUBLIC if the access-spec
188-
in any such access-stmt is PUBLIC.
176+
"If no such statement appears in a module or template, the default
177+
is public accessibility."
178+
179+
In 1st sentence of paragraph 2, insert "or template" after "in
180+
the module" such that the sentence now reads:
181+
182+
"If an identifier is accessed by use association and not declared
183+
in the module or template, and the name of every module from which
184+
it is accessed appears in an access-stmt in the scoping unit, its
185+
default accessibility is PRIVATE if the access-spec in every such
186+
access-stmt is PRIVATE, or PUBLIC if the access-spec in any such
187+
access-stmt is PUBLIC."
189188

190189
* 8.5.8.1 General
191190

192191
Change last entry for <array-spec> from:
193-
<<or>> <assumed-rank-spec>
192+
"<<or>> <assumed-rank-spec>"
194193
To:
195-
<<or>> <assumed-or-implied-rank-spec>
194+
"<<or>> <assumed-or-implied-rank-spec>"
196195

197196
* 8.5.8.2 Explicit-shape array
198197

199-
{UTI: It may be better to modify <explicit-shape-bounds-spec> to
200-
disambiguate <explicit-bounds-expr> for lower and upper bounds.
201-
This would make constraint for deferred constants clearer.}
198+
Modify R818 to disambiguate lower and upper explicit bounds such that it reads:
199+
200+
"R818 <explicit-shape-bounds-spec>
201+
<<is>> [ <lower-explicit-bounds-expr> : ] <upper-explicit-bounds-expr>
202+
<<or>> <lower-bound> : <explicit-bounds-expr>
203+
<<or>> <explicit-bounds-expr> : <upper-bound>
204+
R818b <lower-explicit-bounds-expr> <<is>> <explicit-bounds-expr>
205+
R818c <upper-explicit-bounds-expr> <<is>> <explicit-bounds-expr>
206+
"
202207

203208
* 8.5.8.6 Implied-shape array
204209

205210
Modify the first sentence from:
206-
An implied-shape array is a named constant that takes its shape
207-
from the constant-expr in its declaration.
211+
"An implied-shape array is a named constant that takes its shape
212+
from the constant-expr in its declaration."
208213
To:
209-
An implied-shape array is a named constant that takes its shape
214+
"An implied-shape array is a named constant that takes its shape
210215
from a constant expression. If it is a deferred constant, it takes
211216
its shape from the associated instantiation argument, otherwise it
212-
takes its shape from the constant expression in its declaration.
217+
takes its shape from the constant expression in its declaration."
213218

214219
Delete the first sentence in the last paragraph which reads:
215220

216221
The extent of each dimension of an implied-shape array is the same
217222
as the extent of the corresponding dimension of the constant-expr.
218223

219-
Insert new section after 8.5.8.7:
224+
* 8.5.8.7 Assumed-rank entity
220225

221-
8.5.8.7b Implied-rank entity
226+
Change name of section to "Assumed-rank or implied-rank entities"
222227

223-
An implied-rank entity is an entity whose rank becomes defined only
224-
when the template in which it appears is instantiated.
228+
Modify text in former 8.5.8.7 (Assumed-rank entity) to use new
229+
syntax term <assumed-or-implied-rank-spec> such that it now reads:
225230

226-
{UTI: Also make sure it works with SELECT GENERIC RANK and spell out
227-
what can be done with implied-rank entities.}
231+
"An assumed-rank entity is a dummy data object whose rank is
232+
assumed from its effective argument, or the associate name of a
233+
RANK DEFAULT block in a SELECT RANK construct; this rank can be
234+
zero. The bounds and shape of an assumed-rank entity with the
235+
ALLOCATABLE or POINTER attribute are determined as specified in
236+
8.5.8.4. An assumed-rank entity is declared with an <array-spec>
237+
that is an <assumed-or-implied-rank-spec>.
238+
239+
R827 assumed-or-implied-rank-spec is ..
240+
241+
C839 An assumed-rank entity shall be an associate name or a dummy
242+
data object that does not have the CODIMENSION or VALUE
243+
attribute.
244+
245+
C840 An assumed-rank variable name shall not appear in a
246+
designator or expression except as an actual argument that
247+
corresponds to a dummy argument that is assumed-rank, the
248+
argument of the function C_LOC or C_SIZEOF from the intrinsic
249+
module ISO_C_BINDING (18.2), the first dummy argument of an
250+
intrinsic inquiry function, or the selector of a SELECT RANK
251+
statement.
228252

229-
R287b <implied-rank-spec> <<is>> ..
253+
C841 If an assumed-size or nonallocatable nonpointer assumed-rank
254+
array is an actual argument that corresponds to a dummy
255+
argument that is an INTENT (OUT) assumed-rank array, it shall
256+
not be polymorphic, finalizable, of a type with an
257+
allocatable ultimate component, or of a type for which
258+
default initialization is specified.
230259

231-
C841b (R287b) An implied-rank entity shall be a <deferred-const>.
260+
* Insert new section after 8.5.8.7.1:
261+
262+
"8.5.8.7.2 Implied-rank entity
263+
264+
An implied-rank entity is an entity whose rank becomes defined
265+
only within the instantiation of a template. The following are
266+
implied-rank entities:
267+
268+
- deferred constant declared with <assumed-or-implied-rank-spec>
269+
270+
- variable, dummy argument, or deferred constant whose rank is
271+
declared to be a deferred integer, scalar constant expression
272+
273+
- variable, dummy argument, or deferred constant whose shape is
274+
declared to be a deferred integer, rank-1 array expression.
275+
276+
{UTI: Also make sure it works with SELECT GENERIC RANK and spell out
277+
what can be done with implied-rank entities.}
232278

233279
NOTE
234280

235281
The following are examples of implied-rank entities
236282

237283
TEMPLATE EXAMPLE(C, S, N)
238-
DEFERRED INTEGER, PARAMETER :: C(..)
239-
! implied-shape & implied-rank
240-
DEFERRED INTEGER, PARAMETER :: S(*), N
241-
INTEGER, PARAMETER :: B(S) = 1 ! explicit-shape & implied-rank
284+
DEFERRED INTEGER, PARAMETER :: S(*)
285+
DEFERRED INTEGER, PARAMETER :: C(..) ! implied-rank
286+
INTEGER, PARAMETER :: B(S) = 1 ! implied-rank
287+
REAL, PARAMETER, RANK(RANK(C)) :: D ! implied rank
242288
END TEMPLATE
243289

290+
<< this is where we got on 2025-04-07 >>
291+
244292
* 8.5.17 RANK clause
245293

246294
Replace constraint C864 which states:

0 commit comments

Comments
 (0)