Next: , Previous: 6.6, Up: 6


6.7 Null Procedures

1/2
{00348AI95−00348−01} A null_procedure_declaration provides a shorthand to declare a procedure with an empty body.

Syntax

2/2

{00348AI95−00348−01} null_procedure_declaration::=
   [overriding_indicator]
   procedure_specification is null;
Static Semantics

3/2
{00348AI95−00348−01} A null_procedure_declaration declares a null procedure.{null procedure} {procedure (null)} A completion is not allowed for a null_procedure_declaration.

3.a/2

Reason: There are no null functions because the return value has to be constructed somehow; a function that always raises Program_Error doesn't seem very useful or worth the complication.
Dynamic Semantics

4/2
{00348AI95−00348−01} The execution of a null procedure is invoked by a subprogram call. For the execution of a subprogram call on a null procedure, the execution of the subprogram_body has no effect.

4.a/2

Ramification: Thus, a null procedure is equivalent to the body

4.b/2

     begin
        null;
     end;

4.c/2

with the exception that a null procedure can be used in place of a procedure specification.

5/2
{00348AI95−00348−01} {elaboration (null_procedure_declaration) [partial]} The elaboration of a null_procedure_declaration has no effect.

Examples

6/2

     {00433AI95−00433−01} procedure Simplify(Expr in out Expression) is null; −− see 3.9
     −− By default, Simplify does nothing, but it may be overridden in extensions of Expression
Extensions to Ada 95

6.a/2

{00348AI95−00348−01} {extensions to Ada 95} Null procedures are new.