DocAda(tm) is a productivity tool of KSCE

Prev | Up | Next | Back | Forward
About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News

8.5.4 Subprogram Renaming Declarations

A subprogram_renaming_declaration can serve as the completion of a subprogram_declaration; such a renaming_declaration is called a renaming-as-body. A subprogram_renaming_declaration that is not a completion is called a renaming-as-declaration, and is used to rename a subprogram (possibly an enumeration literal) or an entry.

Syntax

   
       subprogram_renaming_declaration ::= subprogram_specification renames callable_entity_name;

Name Resolution Rules

The expected profile for the callable_entity_name is the profile given in the subprogram_specification.

Legality Rules

The profile of a renaming-as-declaration shall be mode-conformant with that of the renamed callable entity.

The profile of a renaming-as-body shall be subtype-conformant with that of the renamed callable entity, and shall conform fully to that of the declaration it completes. If the renaming-as-body completes that declaration before the subprogram it declares is frozen, the subprogram it declares takes its convention from the renamed subprogram; otherwise the convention of the renamed subprogram shall not be Intrinsic.

A name that denotes a formal parameter of the subprogram_specification is not allowed within the callable_entity_name.

Static Semantics

A renaming-as-declaration declares a new view of the renamed entity. The profile of this new view takes its subtypes, parameter modes, and calling convention from the original profile of the callable entity, while taking the formal parameter names and default_expressions from the profile given in the subprogram_renaming_declaration. The new view is a function or procedure, never an entry.

Dynamic Semantics

For a call on a renaming of a dispatching subprogram that is overridden, if the overriding occurred before the renaming, then the body executed is that of the overriding declaration, even if the overriding declaration is not visible at the place of the renaming; otherwise, the inherited or predefined subprogram is called.

Examples

Examples of subprogram renaming declarations:

    
       procedure My_Write(C : in Character) renames Pool(K).Write; --  see 4.1.3

       function Real_Plus(Left, Right : Real   ) return Real    renames "+";
       function Int_Plus (Left, Right : Integer) return Integer renames "+";

       function Rouge return Color renames Red;  --  see 3.5.1
       function Rot   return Color renames Red;
       function Rosso return Color renames Rouge;

       function Next(X : Color) return Color renames Color'Succ; -- see 3.5.1

Example of a subprogram renaming declaration with new parameter names:

    
       function "*" (X,Y : Vector) return Real renames Dot_Product; -- see 6.1

Example of a subprogram renaming declaration with a new default expression:

    
       function Minimum(L : Link := Head) return Cell renames Min_Cell; -- see 6.1

About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News
Prev | Up | Next | Back | Forward


Copyright © 1994-1997 by Kempe Software Capital Enterprises. All Rights Reserved. For comments on this DocAda(tm) hypertext document, please write to KSCE, at docada@ksce.com