Overriding Indicators
Author: JTC1/SC22/WG9/ARG, by Randall Brukardt, ARG Editor

Ada Reference Manual — Legal Information

# 8.3.1 Overriding Indicators

1/2
An overriding_indicator is used to declare that an operation is intended to override (or not override) an inherited operation.

#### Syntax

2/2
overriding_indicator ::= [not] overriding

#### Legality Rules

3/3
If an abstract_subprogram_declaration, null_procedure_declaration, expression_function_declaration, subprogram_body, subprogram_body_stub, subprogram_renaming_declaration, generic_instantiation of a subprogram, or subprogram_declaration other than a protected subprogram has an overriding_indicator, then:
4/2
the operation shall be a primitive operation for some type;
5/2
if the overriding_indicator is overriding, then the operation shall override a homograph at the place of the declaration or body;
6/2
if the overriding_indicator is not overriding, then the operation shall not override any homograph (at any place).
7/2
In addition to the places where Legality Rules normally apply, these rules also apply in the private part of an instance of a generic unit.
NOTES
8/2
8 Rules for overriding_indicators of task and protected entries and of protected subprograms are found in 9.5.2 and 9.4, respectively.

#### Examples

9/2
The use of overriding_indicators allows the detection of errors at compile-time that otherwise might not be detected at all. For instance, we might declare a security queue derived from the Queue interface of 3.9.4 as:
10/2
type Security_Queue is new Queue with record ...;
11/2
overriding
procedure Append(Q : in out Security_Queue; Person : in Person_Name);
12/2
overriding
procedure Remove_First(Q : in out Security_Queue; Person : in Person_Name);
13/2
overriding
function Cur_Count(Q : in Security_Queue) return Natural;
14/2
overriding
function Max_Count(Q : in Security_Queue) return Natural;
15/2
not overriding
procedure Arrest(Q : in out Security_Queue; Person : in Person_Name);
16/2
The first four subprogram declarations guarantee that these subprograms will override the four subprograms inherited from the Queue interface. A misspelling in one of these subprograms will be detected by the implementation. Conversely, the declaration of Arrest guarantees that this is a new operation.

Ada 2005 and 2012 Editions sponsored in part by Ada-Europe