6.7 Null Procedures
1/2
{
AI95-00348-01}
A null_procedure_declaration
provides a shorthand to declare a procedure with an empty body.
Syntax
2/2
{
AI95-00348-01}
null_procedure_declaration ::=
[overriding_indicator]
procedure_specification is null;
Static Semantics
3/2
{
AI95-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
{
AI95-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
{
AI95-00348-01}
{elaboration (null_procedure_declaration)
[partial]} The elaboration of a null_procedure_declaration
has no effect.
Examples
6/2
{
AI95-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