I've recently stumbled upon code similar to this, which compiled in Ada 95 mode and not in Ada 2005 mode:
with Ada.Text_IO;
procedure Test is
Printable_Char : constant Character := '["20"]';
Non_printable_Char : constant Character := '["00"]';
begin
Ada.Text_IO.Put_Line (Printable_Char & Non_printable_Char);
end Test;
Using FSG GNAT 9.3.0:
test.adb:6:48: (Ada 2005) non-graphic character not permitted in character literal
But compiles OK using -gnat95
flag (Ada 95 mode).
I found some references of this format in chapter "11.6 Wide Text IO" of GNAT RM. Is this format GNAT specific?
Regarding the difference in the language version mode, I found no mention of it in the Ada 2005 Rationale. Then, why that difference when compiling in Ada 2005 mode?
This is documented in the Ada 2012 Language Reference Manual
The pertinent quotation is:
-- The declaration of type Character is based on the standard ISO 8859-1 character set. -- There are no character literals corresponding to the positions for control characters. -- They are indicated in italics in this definition. See 3.5.2.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With