@@ -537,18 +537,38 @@ this point.
537
537
538
538
[317:10+] Insert new paragraphs to address deferred arguments:
539
539
540
- "An entity with a kind-type parameter whose value depends on a
541
- deferred argument is only TKR compatible with another entity,
542
- if that entity has the same kind-type parameter declared with
540
+ "A kind-type parameter whose value depends on a deferred argument
541
+ is only the same as another kind-type parameter declared with
543
542
a syntactically equivalent expression.
544
543
545
- An entity whose rank depends on a deferred argument is only TKR
546
- compatible with another entity, if that entity has its rank
544
+ An entity whose rank depends on a deferred argument only has
545
+ the same rank as another entity if that entity has its rank
547
546
declared with a syntactically equivalent expression. If the rank
548
547
of an implied-rank entity is not declared with a rank clause, it
549
548
does not have the same rank as any other entity."
550
549
550
+
551
551
{ Is "depends on" acceptable terminology here? }
552
+ { UTI: We should define "syntactically equivalent" }
553
+ { UTI: Prevent specifying rank and bounds for deferred constants I.e.
554
+
555
+ DEFERRED INTEGER, PARAMTER :: C(*)
556
+ DEFERRED INTEGER, PARAMETER, RANK(SIZE(C)) :: D(C)
557
+
558
+ REQUIREMENT R(C, F)
559
+ DEFERRED INTEGER, PARAMETER :: C
560
+ DEFERRED INTERFACE
561
+ INTEGER FUNCTION F(X)
562
+ INTEGER, RANK(C+1) :: X
563
+ END FUNCTION
564
+ END REQUIREMENT
565
+ DEFERRED INTEGER, PARAMETER :: A
566
+ DEFERRED INTEGER, PARAMETER, RANK(A) :: B
567
+ REQUIRES R(A, F)
568
+ ...
569
+ PRINT *, F(B) ! Should be compile time error
570
+ }
571
+
552
572
553
573
NOTE Some examples of implied-rank entities are shown in the
554
574
following example template. C is explicitly declared
0 commit comments