Chapter 3. Implementation Advice

Table of Contents
3.1. Section 1: General
3.2. Section 2: Lexical Elements
3.3. Section 3: Declarations and Types
3.4. Section 9: Tasking
3.5. Section 10: Program Structure and Compilation Issues
3.6. Section 11: Exceptions
3.7. Section 13: Representation Issues
3.8. Annex A: Predefined Language Environment
3.9. Annex B: Interface to Other Languages
3.10. Annex C: Systems Programming
3.11. Annex D: Real-Time Systems
3.12. Annex E: Distributed Systems
3.13. Annex F: Information Systems
3.14. Annex G: Numerics

The main text of the Ada 95 Reference Manual describes the required behavior of all Ada 95 compilers, and subject to the restrictions described in Appendix A, the XGC Ada compiler conforms to these requirements.

In addition, there are sections throughout the Ada 95 reference manual headed by the phrase "implementation advice". These sections are not normative, that is they do not specify requirements that compilers must follow. Rather they provide advice on generally desirable behavior.

Using a question and answer format, this chapter gives the reference manual section number, paragraph number and several keywords for each piece of advice. Each entry consists of the text of the advice followed by the XGC Ada interpretation of this advice. Most often, this simply says "followed", which means that XGC Ada follows the advice. However, in a number of cases, XGC Ada deliberately deviates from this advice, in which case the text describes what XGC Ada does and why.

3.1. Section 1: General

Q: 1.1.3(20): Error Detection
Q: 1.1.3(31): Child Units
Q: 1.1.5(12): Bounded Errors

Q: 1.1.3(20): Error Detection

If an implementation detects the use of an unsupported Specialized Needs Annex feature at run time, it should raise Program_Error if feasible.

A: Not relevant. All specialized needs annex features are either supported, or diagnosed at compile time.

Q: 1.1.3(31): Child Units

If an implementation wishes to provide implementation-defined extensions to the functionality of a language-defined library unit, it should normally do so by adding children to the library unit.

A: Followed.

Q: 1.1.5(12): Bounded Errors

If an implementation detects a bounded error or erroneous execution, it should raise Program_Error.

A: Followed in all cases in which the implementation detects a bounded error or erroneous execution. Not all such situations are detected at runtime.