CVS difference for ai05s/ai05-0198-1.txt
--- ai05s/ai05-0198-1.txt 2010/02/23 07:31:06 1.2
+++ ai05s/ai05-0198-1.txt 2011/03/13 03:02:58 1.3
@@ -1,5 +1,7 @@
-!standard 3.9.3(4/3) 10-02-09 AI05-0198-1/01
+!standard 3.9.3(4/3) 11-03-11 AI05-0198-1/02
!class binding interpretation 10-02-09
+!status Amendment 2012 11-03-11
+!status ARG Approved 6-0-2 11-02-20
!status work item 10-02-09
!status received 09-07-01
!priority Low
@@ -18,11 +20,12 @@
package Pack is
type Unit is new Float;
- function "*" (L, R : Unit) return Unit is abstract;
+ function "*" (Left, Right : Unit) return Unit is abstract;
type Unit_Squared is new Unit;
- -- function "*" (L, R : Unit_Squared) return Unit_Squared is abstract;
- -- function "*" (L, R : Unit_Squared) return Unit_Squared is
+ -- function "*" (Left, Right : Unit_Squared) return Unit_Squared is
+ -- abstract;
+ -- function "*" (Left, Right : Unit_Squared) return Unit_Squared is
-- <predefined>;
end Pack;
@@ -102,13 +105,42 @@
covered by this wording.
---!corrigendum 3.9.3(4/2)
+Note that 8.3(12.3/2) requires that all of the homographs are fully conformant
+in order for one to be "chosen arbitrarily". If that is not true, then the
+operators are hidden from all visibility. For instance, had "*" been declared:
+
+ function "*" (Left, Right : Unit) return Unit is abstract;
+
+the homographs would have been hidden. This also has the effect that we want
+(the operation is not considered in expressions).
+
+
+!corrigendum 3.9.3(4/2)
+
+@drepl
+If a type has an implicitly declared primitive subprogram that is inherited
+or is the predefined equality operator, and the corresponding primitive
+subprogram of the parent or ancestor type is abstract or is a function
+with a controlling access result, or if a type other than a
+non-abstract null extension inherits a function with a controlling result,
+then:
+@dby
+If a type has an implicitly declared primitive subprogram that is inherited
+or is a predefined operator, and the corresponding primitive
+subprogram of the parent or ancestor type is abstract or is a function
+with a controlling access result, or if a type other than a non-abstract
+null extension inherits a function with a controlling result, then:
!ACATS Test
An ACATS B-Test should be created that is similar to the example in the
question.
+
+!ASIS
+
+No impact on the ASIS standard (ASIS implementations may need adjustment).
+
!appendix
Questions? Ask the ACAA Technical Agent