Rationale for Ada 2012
9.1.2 Inconsistencies with Ada 2005
Note that this list only covers those inconsistencies
that might reasonably occur. There are a number of others which are so
unlikely that they do not seem worth mentioning.
1 — The definition of character sets can change
with time. It is thus possible that the result of character classification
functions for obscure characters might be or become inconsistent. (
AI-91,
AI-227,
AI-266,
2.1,
2.3)
2 — User defined untagged record equality is
now defined to compose and be used in generics. Code which assumes that
predefined equality reemerges in generics and in predefined equals for
composite types could fail. However, it is more likely that this change
will fix bugs. (
AI-123,
4.5.2)
3 — A stand alone object of an anonymous access
type now has dynamic accessibility. This is most likely to make illegal
programs now legal. However, it is possible that a program that raised
Program_Error in Ada 2005 will not do so in
Ada 2012. It seems very unlikely that a program would rely on the raising
of this exception. (
AI-148,
4.6)
4 — There is
an obscure interaction between the change to the composability of equality
and renaming. Renaming of user-defined untagged record equality is now
defined to call the overridden body so long as the overriding occurred
before the renames. Consider
package P is
type T is
record
...
end record;
-- (1) consider renaming here
private
function "=" (L, R: T) return Boolean;
end P;
with P;
package Q is
function Equals renames P."=";
end Q;
In Ada 2005,
Equals refers
to the predefined equality, whereas in Ada 2012 it refers to the overridden
user-defined equality in the private part. This is so that composed equality
and explicit calls on
"=" give the
same answer. However, if the renaming had been at the point (1) then
calling
Equal would call the predefined equality.
Remember that renaming squirrels away the operation so that it can be
retrieved. (
AI-123,
8.5.4)
5 — A group budget is now defined to work on
a single processor. However, it is unlikely that any implementation of
Ada 2005 managed to implement this on multiprocessors anyway. (
AI-169,
D.14.2)
© 2011, 2012, 2013 John Barnes Informatics.
Sponsored in part by: