Preelaboration and Categorization (GNAT Reference Manual)

#### 7.1.3 Preelaboration and Categorization ¶

- Categorization errors (pure/preelaborated unit violations) are downgraded to ‘warnings’.
- Statements in preelaborated units emit a ‘warning’ rather than an error.
- Private objects and non-static constants/calls in preelaborated units emit ‘warnings’ rather than errors.
- Calls to non-preelaborable subprograms in preelaborated packages are demoted to ‘suppressible warnings’ (RM 10.2.1), allowing the runtime to include elaboration code that would otherwise be forbidden.
- Assignment statements to library-level variables are ‘excluded’ from access-before-elaboration (ABE) analysis, on the assumption that the predefined runtime manages its own elaboration order correctly.