Size_Too_Small_Message : constant String :=
"size for& too small, minimum allowed is ^";
-- This message is printed in Freeze and Sem_Ch13. We also test for it in
- -- the body of this package (see Special_Msg_Delete) ???which is somewhat
- -- questionable. The Is_Size_Too_Small_Message function tests for it by
- -- testing a prefix. The function and constant should be kept in synch.
+ -- the body of this package (see Special_Msg_Delete).
+ -- Function Is_Size_Too_Small_Message tests for it by testing a prefix.
+ -- The function and constant should be kept in synch.
end Errout;
-- of statements, the actions are simply inserted into the list before
-- the associated statement.
- -- For an expression occurring in a declaration (declarations always
- -- appear in lists), the actions are similarly inserted into the list
- -- just before the associated declaration. ???Declarations do not always
- -- appear in lists; in particular, a library unit declaration does not
- -- appear in a list, and Insert_Action will crash in that case.
+ -- For an expression occurring in a declaration the actions are similarly
+ -- inserted into the list just before the associated declaration. (But
+ -- note that although declarations usually appear in lists, they don't
+ -- always; in particular, a library unit declaration does not appear in
+ -- a list, and Insert_Action will crash in that case.)
-- The following special cases arise:
--
-- The Name_Req flag is set to ensure that the result is suitable for use
-- in a context requiring a name (for example, the prefix of an attribute
- -- reference) (can't this just be a qualification in Ada 2012???).
+ -- reference).
--
-- The Renaming_Req flag is set to produce an object renaming declaration
-- rather than an object declaration. This is valid only if the expression
-- interface primitives with the tagged type primitives that cover them.
procedure Analyze_Declarations (L : List_Id);
- -- Called to analyze a list of declarations (in what context ???). Also
- -- performs necessary freezing actions (more description needed ???)
+ -- Called to analyze a list of declarations. Also performs necessary
+ -- freezing actions (such as freezing remaining unfrozen entities at
+ -- the end of declarative parts), resolves usage names in aspects, and
+ -- analyzes contracts that require delay until after freezing is done.
procedure Analyze_Interface_Declaration (T : Entity_Id; Def : Node_Id);
-- Analyze an interface declaration or a formal interface declaration
(Discriminant : Entity_Id;
Typ_For_Constraint : Entity_Id;
Constraint : Elist_Id) return Node_Id;
- -- ??? MORE DOCUMENTATION
- -- Given a discriminant somewhere in the Typ_For_Constraint tree and a
- -- Constraint, return the value of that discriminant.
+ -- Given a discriminant Discriminant occurring somewhere up the derivation
+ -- tree from Typ_For_Constraint and a Constraint, return the expression
+ -- corresponding to that discriminant in the constraint that specifies its
+ -- value.
function Is_Null_Extension (T : Entity_Id) return Boolean;
-- Returns True if the tagged type T has an N_Full_Type_Declaration that
procedure Check_Operation_From_Incomplete_Type
(Subp : Entity_Id;
Typ : Entity_Id);
- -- If a primitive operation was defined for the incomplete view of the
- -- type, and the full type declaration is a derived type definition,
- -- the operation may override an inherited one.
- -- Need more description here, what are the parameters, and what does
- -- this call actually do???
+ -- If a primitive subprogram Subp was defined for the incomplete view of
+ -- Typ, and the full type declaration is a derived type, then Subp may
+ -- override a subprogram inherited from the parent type. In that case,
+ -- the inherited subprogram will have been hidden by the current one at
+ -- the point of the type derivation, so it does not appear in the list
+ -- of primitive operations of the type, and this procedure inserts the
+ -- overriding subprogram in the the full type's list of primitives by
+ -- iterating over the list for the parent type. If instead Subp is a new
+ -- primitive, then it's simply appended to the primitive list.
procedure Check_Operation_From_Private_View (Subp, Old_Subp : Entity_Id);
-- No action performed if Subp is not an alias of a dispatching operation.
-- function. The caller checks that Tagged_Type is indeed a tagged type.
procedure Propagate_Tag (Control : Node_Id; Actual : Node_Id);
- -- If a function call is tag-indeterminate, its controlling argument is
- -- found in the context: either an enclosing call, or the left-hand side
- -- of the enclosing assignment statement. The tag must be propagated
- -- recursively to the tag-indeterminate actuals of the call.
- -- Need clear description of the parameters Control and Actual, especially
- -- since the comments above refer to actuals in the plural ???
+ -- If a function call given by Actual is tag-indeterminate, its controlling
+ -- argument is found in the context, given by Control: either from an
+ -- operand of an enclosing call, or the left-hand side of the enclosing
+ -- assignment statement. The tag of Control will be propagated recursively
+ -- to Actual and to its tag-indeterminate operands, if any.
end Sem_Disp;