Node: CompilerAssert, Next: Complex, Previous: Comp, Up: Reference

### CompilerAssert

#### Synopsis

         procedure CompilerAssert (Condition: Boolean);

or

         function CompilerAssert (Condition: Boolean): Boolean;

or

         function CompilerAssert (Condition: Boolean;
                    ResultValue: Any_Type): type of ResultValue;

#### Description

`CompilerAssert` checks the given `Condition` at compile-time. If it is a compile-time constant of Boolean type with the value `True`, it returns `ResultValue`, or if called with only one argument, it returns `True` or nothing if used as a procedure.

If `Condition` cannot be evaluated at compile-time or does not have the value `True`, it causes a compile-time error.

So it can be used to make sure that certain assumptions hold before relying on them.

`CompilerAssert` does not depend on the `--[no-]assertions` options. It does not generate any run-time code.

#### Conforming to

`CompilerAssert` is a GNU Pascal extension.

#### Example

         program CompilerAssertDemo;

         var
           a: LongInt;

         const
           { Make sure that the highest value a can hold is larger than
             MaxInt, and set b to that value. }
           b = CompilerAssert (High (a) > MaxInt, High (a));

           { Do a similar check for the minimum value, setting c to True
             (which can be ignored). }
           c = CompilerAssert (Low (a) < Low (Integer));

         begin
           { Procedure-like use of CompilerAssert in the statement part. }
           CompilerAssert (MaxInt >= 100000);

           WriteLn (b, ' ', c)
         end.

#### See also

Assert.