- Ada 2012
- Ada 2005 / 95 / 83
- Embedded Development
- Formal Methods
- Open Source
- Safety-Critical Development
- Static Analysis
May 31st, 2007
Cursor operations for containers have been inlined
The Next and Previous container operations for navigating among cursor values were inlined, so cursor manipulation is now more efficient.
Refactoring now detects read-only files
When refactoring (in particular when renaming an entity), a dialog is displayed to warn about read-only files that cannot be refactored. The user is then given the choice of refactoring the others anyway, or cancelling the operation
May 30th, 2007
GNAT.Sockets now supported on LynxOS
The GNAT.Sockets package as documented in the file g-socket.ads is now fully supported on LynxOS.
Better checks for redundant assignments
Previously the check for a redundant assignment (activated by -gnatwr) was checking only for assignment of a simple variable to itself. This check now catches many more cases (e.g. x.a(1) := x.a(1), or m(1..3):=m(1..3)).
Not all warnings suppressed in dead code
Previously, if the front end detected that a section of code was dead (for example the THEN statements of an IF statement where the condition was known to be false), all associated warnings would also be deleted. This is indeed appropriate for warnings about range errors, division by zero, or other cases where the condition may well be specifically guarding against the exception being raised. But for warnings that are basically about style, including all actual style messages, they should not be deleted, and no longer are.
Recent chosen completions displayed at top of list
The completion window now remembers recently chosen completions, and will propose them at the top of the completion proposal list, when they are accurate.
May 22nd, 2007
‘Value suppresses warnings for unused enum literals
If the 'Value attribute is used for an enumeration type, then this is now considered to be an implicit reference for every literal of the type, which suppresses warnings about literals being unused.
Improved warnings for unreferenced variables
The warnings for unreferenced variables have been improved to eliminate false positives (incorrect warnings) and false negatives (missed warnings). In particular, the message that a variable could be declared constant now applies to complex types such as Unbounded_String.
New style switch for statements after THEN/ELSE
A new style switch -gnatyS (not included in -gnaty by default) checks for and disallows statements on the same line following a THEN or ELSE keyword. This usage is discouraged especially when doing line coverage testing since you want separate coverage information for the test and the statements that are controlled by the test.
May 19th, 2007
Warnings for optimized membership tests
If either or both of the tests for a membership tests for an integer type are optimized away by the compiler because the outcome can be determined at compile time, a warning is given. The warning is under control of -gnatwc (warn on constant conditional).
May 18th, 2007
Warning for non-unique External_Tag in subprogram
The explicit specification of an external tag for a tagged type declared within a subprogram is problematic, since all invocations of the subprogram share the same external tag, even though the types are distinct. This means that it is not possible to convert such external tags back to internal tag form. A warning is now given for this potentially incorrect usage.
New contextual menu to build libraries
It is now possible to build individual libraries directly from the Build project's contextual menu on the Project View.
May 11th, 2007
New pragma Implicit_Packing
A new configuration pragma Implicit_Packing is implemented that allows a Size clause for a packed array to implicitly pack the array (overriding the normal RM recommendation that Size not change the array layout). This is useful in handling legacy code from compilers not following this RM recommendation.
May 9th, 2007
Warning on redundant renaming declarations
The compiler warns on a subprogram renaming declaration, when the renaming is redundant, because the new entity and the renamed entity have the same name, and the renamed entity is directly visible.
Ignore leading spaces in
If you specify an external command to execute in an XML file, you can now have leading spaces if you wish. This allows you to split the contents of the <external> tag on several lines.
May 3rd, 2007
Better message for ambiguous fixed-point operation
When a fixed point multiplying operation is ambiguous because the predefined operation declared in Standard is directly visible, the error message now includes an RM reference that clarifies the origin of the ambiguity.
Retrieve ‘Class attribute on tooltip documentation
Documentation displayed by tooltips now displays type of parameters and variables with 'Class when relevant.