CVS difference for acats/new/testobj.txt

Differences between 1.38 and version 1.39
Log of other versions for file acats/new/testobj.txt

--- acats/new/testobj.txt	2007/10/23 05:52:13	1.38
+++ acats/new/testobj.txt	2007/10/29 23:13:40	1.39
@@ -257,6 +257,48 @@
 access result, the function with the controlling access result
 requires overriding.
 
+B393009
+
+Check that interface types are abstract:
+Objects and aggregates may not be defined or allocated of an interface
+  type.
+The type of a component may not be an interface type.
+A function defined with an interface result type must be declared
+  abstract (even if it is not primitive).
+The target of an assignment operation may not have an interface type.
+
+B393010
+
+Check that abstract primitive subprograms for an interface type
+declared in a visible part are not allowed in the private part
+(unless they are overriding an inherited subprogram).
+
+B394001
+
+Check that a primitive subprogram of an interface type cannot be a
+subprogram that is neither an abstract subprogram nor a null procedure.
+
+B394A01
+
+Check that the subtype named in an interface list must be an interface.
+
+B394A02
+
+Check that a descendant of a non-limited interface cannot be limited.
+
+B394A03
+
+Check that a type derived from a task interface must be either a
+task interface, task type, or a private extension.
+
+Check that a private extension cannot be derived from both a
+task interface and a protected interface.
+
+B394A04
+
+Check that a type derived from a protected interface must be either a
+protected interface, protected type, or a private extension.
+
 B3A0001
 
 Check that objects defined to be of a general access type may not
@@ -1311,41 +1353,75 @@
 
 BA21A01
 
-Check that an instantiation of a generic library package declaration to
-which a pragma Preelaborate applies is illegal if the instantiation
+Check that an instantiation of a generic library package declaration
+to which a pragma Preelaborate applies is illegal if the instantiation
 occurs within a library package declaration to which a pragma
-Preelaborate also applies, and the generic library package contains any
-of the following constructs in its visible or private part (such that
-the construct is evaluated upon instantiation):  (a) A call to a
-nonstatic function. (b) A call to a formal function, if the
-corresponding actual is a nonstatic function. (c) A primary that is a
-name of an object, if the name is not a static expression and does not
-statically denote a discriminant of an enclosing type. (d) A
-declaration of an object of a descendant of a protected type with entry
-declarations. (e) A declaration of an object of a descendant of a
-controlled type without an initialization expression. (f) A declaration
-of an object of a descendant of a private type (outside the scope of
-the full view) without an initialization expression. (g) A declaration
-of
+Preelaborate also applies, and the generic library package contains
+any of the following constructs in its visible or private part (such
+that the construct is evaluated upon instantiation):
 
+   (a) A call to a nonstatic function.
+   (b) A call to a formal function, if the corresponding actual
+       is a nonstatic function.
+   (c) A primary that is a name of an object, if the name is not a
+       static expression and does not statically denote a discriminant
+       of an enclosing type.
+   (d) A declaration of a default-initialized object of a type that does
+       not have preelaborable initialization.
+   (e) An extension aggregate with an ancestor subtype mark denoting
+       a subtype that does not have preelaborable initialization.
+
+Check that each of the constructs above is legal within the visible
+or private part of a generic library package declaration to which a
+pragma Preelaborate applies, as well as within a corresponding
+instance to which a pragma Preelaborate does not apply.
+
 BA21A02
 
 Check that the body corresponding to a generic library package
 declaration to which a pragma Preelaborate applies is illegal if it
-contains any of the following constructs (if the construct would be
-elaborated upon instantiation):  (a) A statement other than a null
-statement. (b) A call to a nonstatic function. (c) A call to a formal
-function. (d) A primary that is a name of an object, including within
-the default expression for a default-initialized component, if the name
-is not a static expression and does not statically denote a
-discriminant of an enclosing type. (e) A declaration of an object of a
-descendant of a task type. (f) A declaration of an object with a
-component of a descendant of a controlled type without an
-initialization expression. (g) A declaration of an object with a
-component of a descendant of a private type (outside the scope of the
-full view) without an initialization expression. (h) A declaration of
-an object of a descendant of a private extension (outside the scope of
-the full view)
+contains any of the following constructs (if the construct would
+be elaborated upon instantiation):
+
+   (a) A statement other than a null statement.
+   (b) A call to a nonstatic function.
+   (c) A call to a formal function.
+   (d) A primary that is a name of an object, including within the
+       default expression for a default-initialized component, if the
+       name is not a static expression and does not statically denote
+       a discriminant of an enclosing type.
+   (e) A declaration of a default-initialized object of a type
+       that does not have preelaborable initialization.
+   (f) An extension aggregate with an ancestor subtype mark denoting
+       a subtype of a tagged private type.
+
+Check that each of the following constructs is legal within the visible
+part, private part, or body of a generic library package to which a
+pragma Preelaborate applies, as well as within a corresponding
+instance to which a pragma Preelaborate also applies (do not check
+(m), (o), or cases of (q) that depend on formals in the body, since
+they are illegal there):
+
+   (k) A null statement.
+   (l) A call to a static function.
+   (m) A call to a formal function, if the corresponding actual is a
+       static function.
+   (n) A primary that is a name of an object, if the name is a static
+       expression or statically denotes a discriminant of an enclosing
+       type.
+   (o) A primary that is the name of a formal object of a formal
+       private type, if the corresponding actual type is not a private
+       type, private extension, controlled type, task type, or
+       protected type with entry declarations, and the corresponding
+       actual object is a static constant.
+   (p) A reference to an attribute of an object, in particular 'Access,
+       'Unchecked_Access, and 'Address.
+   (q) A declaration of a default-initialized object of a type that
+       has preelaborable initialization.
+   (r) An extension aggregate with an ancestor subtype mark denoting a
+       subtype that has preelaborable initialization.
+   (s) A declaration of an explicitly-initialized object of a type
+       that does not have preelaborable initialization.
 
 BA21A03
 
@@ -2760,6 +2836,14 @@
 Check that an extended type can be derived in a private child package
 from an abstract type defined in a library package.
 
+C394001
+
+Check that an object of a task interface type can be the prefix of the
+Terminated and Callable attributes.
+
+Check that an object of a task interface type can be passed to an
+abort statement.
+
 C3A0001
 
 Check that access to subprogram type can be used to select and invoke
@@ -2838,12 +2922,13 @@
 
 C3A0014
 
-Check that if the view defined by an object declaration is aliased, and
-the type of the object has discriminants, then the object is
-constrained by its initial value even if its nominal subtype is
-unconstrained.  Check that the attribute A'Constrained returns True if
-A is a formal out or in out parameter, or dereference thereof, and A
-denotes an aliased view of an object.
+Check that if the view defined by an object declaration is aliased,
+has discriminants, and its nominal subtype is unconstrained, then
+the object is unconstrained.
+
+Check that the attribute A'Constrained returns False if A is a formal
+out or in out parameter and A denotes an aliased view of an object
+with an unconstrained nominal subtype.
 
 C3A0015
 
@@ -6085,6 +6170,11 @@
 confirmed by AI-00206).
 Check that Ada.Task_Identification.Current_Task and the Caller
 attribute can return the environment task.
+
+CXC7005
+
+Check that an object of a task interface type can be the prefix of the
+Identity attribute.
 
 CXD1001
 

Questions? Ask the ACAA Technical Agent