==================================================
ASIS 2005 FEATURES LIST Current as of Dec 05, 2006
==================================================

Copyright (c) 2006, AdaCore

This file contains a complete list of ASIS 2005 features that have been
implemented in version 5.05w of GNAT. Generally, these features are only
available if the -asis05 (Ada 2005 features enabled) option is used for the
call of Asis.Implementation.Initialize.

An ISO date (YYYY-MM-DD) appears in parentheses after the description line.
This date shows the implementation date of the feature. Any wavefront
subsequent to this date will contain the indicated feature, as will any
subsequent releases. All the entries are ordered by the AI number, the entries
that do not have a specific AI attached go last ordered by TNs.

Starting from December 2005, we consider the first stage of the ASIS revision
for Ada 2005 as completed. That is, the proposed extensions should be enough
to get all the static syntax and semantic information from any legal Ada 2005
unit, and all these extensions are fully implemented. Any hole detected either
in the proposed interface changes or in the implementation of these proposals
should be reported as an ordinary bug in the GNAT/ASIS implementation.

NF-ASIS05-EC07-001 AI-217 Limited with clauses (2006-01-08)

  A_With_Clause is added to the list of expected kinds of
  Asis.Elements.Trait_Kind. The query returns A_Limited_Trait for the argument
  that represents a limited with clause.

NF-ASIS05-F205-005 AI-218 Overriding indicator (2006-02-06)

  Two boolean queries are added to Asis.Declaration: Is_Overriding_Declaration
  and Is_Non_Overrifing_Declaration.

NF-ASIS05-F115-006 AI-230 Generalized anonymous access types (2005-01-22)

  1) ASIS Element classification is extended to represent an
     anonymous access definition as first-class citizen in classification
     hierarchy:
     - An_Access_Definition is added to Asis.Definition_Kinds
     - A new classification type Access_Definition_Kinds is added to the
       package Asis to classify access_definitios.

  2) A new classification query Access_Definition_Kind is added to
     Asis.Elements.

  3) Appropriate values of Access_Definition_Kinds are added to the lists of
     appropriate kinds of the queries
     Asis.Definitions.Access_To_Subprogram_Parameter_Profile and
     Asis.Definitions.Access_To_Function_Result_Profile.

  4) A new query Anonymous_Access_To_Object_Subtype_Mark is added to
     Asis.Definitions.

  5) Asis.Declarations.Object_Declaration_View is generalized to accept all
     forms of object declarations as its argument, the list of returned
     kinds is extended to contain all forms of object definitions;

  6) The query Asis.Declarations.Declaration_Subtype_Mark and the value
     An_Access_Definition_Trait of the Trait_Kinds type should not be used
     when analyzing Ada 2005 code.

NF-ASIS05-F213-024 AI-230 Generalized anonymous access types (2005-02-19)

  Asis.Definitions.Component_Definition_View query is implemented. The query
  generalizes getting the definition of a record component, comparing with
  the existing Component_Subtype_Indication query that can not work on access
  components

NF-ASIS05-F109-005 AI-251 Interface types (2006-01-14)

  1) ASIS Element classification is extended to represent interface types:
     - An_Interface_Type_Definition is added to Asis.Type_Kinds;
     - A_Formal_Interface_Type_Definition is added to Asis.Formal_Type_Kinds;
     - A new classification type Interface_Kinds is added to the package
       Asis to classify interface definitions.

  2) A new classification query Interface_Kind is added to Asis.Elements.

  3) A new query Declaration_Interface_List is added to Asis.Declarations, it
     yields interface lists from A_Declaration Elements

  4) A new query Definition_Interface_List is added to Asis.Definitions, it
     yields interface lists from A_Definition Elements

NF-ASIS05-F130-017 AI-252 Object.Operation notation (2005-02-02)

  A new query Is_Prefix_Notation is added to Asis.Elements, ASIS queries
  dealing with subprogram calls are revised to accept calls in
  Object.Operation notation

NF-ASIS05-F123-002 AI-254 Null exclusion (2006-01-25)

  1) A_Null_Exclusion_Trait is added to the values of Asis.Trait_Kinds, a set
     of expected kinds of Asis.Elements.Trait_Kind is extended by adding
     values that can be of A_Null_Exclusion_Trait

  2) A new query Is_Not_Null_Return is added to Asis.Elements

NF-ASIS05-F530-008 AI-260 Abstract formal subprograms (2006-05-31)
   A_Formal_Procedure_Declaration  and A_Formal_Function_Declaration are added
   to the list of expected Declaration_Kinds of Asis.Elements.Trait_Kind. This
   query returns An_Abstract_Trait for Elements representing formal abstract
   subprograms

NF-ASIS05-EC07-001 AI-262 Private with clauses (2006-01-08)

  A_With_Clause is added to the list of expected kinds of
  Asis.Elements.Trait_Kind. The query returns A_Private_Trait for the argument
  that represents a limited with clause.

NF-ASIS05-F127-01 AI-287 Limited aggregates (2005-01-30)

  If a non-normalized record or array component association contains a box,
  then Asis.Expressions.Component_Expression returns Nil_Element. The
  processing of normalized associations (for associations containing boxes) is
  not implemented yet

NF-ASIS05-FB04-001 AI-317 Partial parameters for formal packages (2006-11-07)

  1) Not_An_Element is added to the list of returned Element kinds for the
     Asis.Expressions.Actual_Parameter query. The query returns Nil_Element if

  2) An_Others_Choice is added to the list of returned Element kinds for the
     Asis.Expressions.Formal_Parameter. The query returns the result of
     An_Others_Choice kind if the argument A_Generic_Association Element
     represents formal_package_association 'others => <>'

  3) Note, that no new position in the element classification is added to
     represent new category 'formal_package_association' in the Ada 2005
     syntax. For the corresponding Elements ASIS uses the existing
     A_Generic_Association value.

NF-ASIS05-FB13-024 AI-318 Extended return statement (2006-11-27)

  1) ASIS Element classification is extended to represent extended
     return statement:
     - An_Extended_Return_Statement is added to Asis.Statement_Kinds;

  2) New queries Return_Object_Declaration, Extended_Return_Statements and
     Extended_Return_Exception_Handlers are added to Asis.Statements.

NF-ASIS05-F125-023 AI-326 Tagged incomplete types (2006-01-27)

  1) ASIS Element classification is extended to represent tagged incomplete
     types:
     - A_Tagged_Incomplete_Type_Declaration is added to
       Asis.Declaration_Kinds;

  2) A_Tagged_Incomplete_Type_Declaration is added to the list of Appropriate
     kinds of Asis.Declarations.Corresponding_Type_Declaration and
     Asis.Declarations.Discriminant_Part

NF-ASIS05-F204-006 AI-348 Null procedures (2006-02-05)

  1) ASIS Element classification is extended to represent null procedures.
     - A_Null_Procedure_Declaration is added to Asis.Declaration_Kinds;

  2) A_Null_Procedure_Declaration is added to the lists of appropriate kinds
     for the query Asis.Declarations.Names and
     Asis.Declarations.Parameter_Profile.

NF-ASIS05-F207-008 AI-361 Raise with string message (2006-02-07)

  A new query Associated_Message is added to Asis.Statements to get the
  expression from raise_statement.

NF-ASIS05-F207-013 New predefined attributes (2006-02-07)

  ASIS Element classification is extended to represent new predefined
  attributes. The following values are added to Asis.Attribute_Kinds:
     A_Machine_Rounding_Attribute
     A_Mod_Attribute
     A_Priority_Attribute
     A_Stream_Size_Attribute
     A_Wide_Wide_Image_Attribute
     A_Wide_Wide_Value_Attribute
     A_Wide_Wide_Width_Attribute
  At the moment ASIS can not detect A_Priority_Attribute, because this
  attribute is not supported by the compiler

NF-ASIS05-F207-014 New predefined pragmas (2006-02-08)

  ASIS Element classification is extended to represent new predefined pragmas.
  The following values are added to Asis.Pragma_Kinds:
     An_Assert_Pragma
     An_Assertion_Policy_Pragma
     A_Detect_Blocking_Pragma
     A_No_Return_Pragma
     A_Partition_Elaboration_Policy_Pragma
     A_Preelaborable_Initialization_Pragma
     A_Priority_Specific_Dispatching_Pragma
     A_Profile_Pragma
     A_Relative_Deadline_Pragma
     An_Unchecked_Union_Pragma
     An_Unsuppress_Pragma
     An_Assert_Pragma
     An_Assertion_Policy_Pragma
     A_Detect_Blocking_Pragma
     A_No_Return_Pragma
     A_Partition_Elaboration_Policy_Pragma
     A_Preelaborable_Initialization_Pragma
     A_Priority_Specific_Dispatching_Pragma
     A_Profile_Pragma
     A_Relative_Deadline_Pragma
     An_Unchecked_Union_Pragma
     An_Unsuppress_Pragma

  At the moment ASIS can not detect the following pragmas, because they are
  not supported by the compiler:
     A_Partition_Elaboration_Policy_Pragma
     A_Preelaborable_Initialization_Pragma
     A_Priority_Specific_Dispatching_Pragma
     A_Relative_Deadline_Pragma

NF-ASIS05-F208-017 New predefined library units (2006-02-08)

  When ASIS is initialized with '-asis05' parameter,
  Asis.Asis.Compilation_Units.Unit_Origin query classifies all the units
  listed in RM-06 Annex A as A_Predefined_Unit
