Home   |  Janus/Ada 95 Support Center  |  Claw  |  Janus/Ada 95

Janus/Ada Information
Janus/Ada 3.1.2 Bug List

Bugs are found in the Janus/Ada compiler unless otherwise noted.

  1. If the prefix of an Access or Unchecked_Access attribute is a dereference of a function call, a spurious Access attribute prefix must be aliased message occurs. This can be worked around by putting the function result into a local object and then dereferencing that in the attribute prefix.
    (Found in versions 3.1.2 thru 3.1.2c.)
  2. A use clause for a parent package can sometimes make child packages that were not withed visible. Spurious use clause ambiguities can result, or illegal code can be accepted.
    (Found in versions 3.1.2 thru 3.1.2c.)
  3. Withing a unit with a parent of Ada or System can make many other child packages of Ada or System visible even if the other child package is not itself withed. While programs that use unintentionally visible packages will work normally, they will not be portable to other compilers (including future versions of Janus/Ada).
    (Found in versions 3.1.2 thru 3.1.2c.)
  4. If 'Access is taken of a type conversion, the accessibility check will be incorrectly performed in many cases, causing legal code to be rejected and illegal code to be accepted.
    (Found in versions 3.1.2 thru 3.1.2c.)
  5. System.Address_to_Access_Conversions cannot be instantiated with an indefinite type.
    (Found in versions 3.1.2 thru 3.1.2c.)
  6. If the prefix of the Alignment attribute is a generic formal type (inside of a generic unit), the compiler probably will crash.
    (Found in versions 3.1.2 thru 3.1.2c.)
  7. Types with components of immutably limited types can cause internal errors in the compiler. (This usually happens if the immutably limited type has discriminant-dependent components.)
    (Found in versions 3.1.2 thru 3.1.2c.)
  8. Implicit dereference of an access-to-incomplete type is sometimes illegal when a similar explicit dereference is legal. This appears to be a left-over Ada 83 check, now removed. Work around the problem by using an explicit dereference.
    (Found in versions 3.1.2 thru 3.1.2c.)
  9. If an assignment of an object of a mutable type causes a controlled component to "disappear", the program will most likely crash shortly. (An assignment of an object of a mutable type that causes a controlled object to "appear" will not Finalize that controlled component when the enclosing object is finalized.) One way for this to happen is to have an unbounded string component in a variant record with default discriminants.
    (Found in versions 3.1.2 thru 3.1.2c.)
  10. If a library-level generic that contains a formal package parameter is imported (via a "with"), and the formal package contains one or more formal parameters, then an internal error will result if the formal generic uses the last formal parameter in a declaration; otherwise the last formal parameter will be missing, possibly causing errors if it is referenced.
    (Found in versions 3.1.2 thru 3.1.2c.)
  11. If the generic G1 used in a formal package parameter contains a type declaration, uses of that type in the generic G2 with the formal package will not match those of the actual instance I1 of G1 used in the instance I2 of G2. This will appear as resolution errors when entities from I1 and I2 are used together.
    (Found in versions 3.1.2 thru 3.1.2c.)
  12. If a tagged indeterminate function is used in the default expression of a record component, the compiler will stop with a Fatal Internal Error.
    (Found in versions 3.1.2 thru 3.1.2c.)
  13. If the last parameter to a generic instantiation of a generic subprogram has an error, the compiler may crash. This can be eliminated by fixing the error.
    (Found in versions 3.1.2 thru 3.1.2c.)
  14. If <> is given for an entire composite aggregate component in an aggregate, the memory for the aggregate may be incompletely allocated, possibly leading to initializing non-existent memory (causing a fault) or initializing the memory of some other object. For this to happen, the component has to be constrained with some sort of dynamic or discriminant-dependent constraint.
    (Found in versions 3.1.2a thru 3.1.2c.)
  15. If <> is given for a discriminant without a default, and the discriminant does not control a variant, the error is not detected and the compiler may crash as a result.(Found in versions 3.1.2a thru 3.1.2c.)

  16. Ada.Strings.Unbounded.Slice returns a string with bounds starting at 1, rather than at Low as specified by the language (in A.4.4(101/1)). Note that the change in bounds might cause Constraint_Error to be raised in code that currently works (programmers commonly assume that strings start at 1 even when they may not).
    (Found in versions 3.1.2 thru 3.1.2c.)

Note: Versions 3.1.2, 3.1.2a, and 3.1.2b were beta versions; bugs fixed in those versions are not recorded here.


Home   |  Janus/Ada 95 Support Center  |  Claw  |  Janus/Ada 95
Copyright © 2018 RR Software, Inc.