!ASIS Issue #002
!topic Proposed Change to ASIS83 to produce ASIS95 Draft Standard
!reference ASIS95-ASIS
!from S. Blake 95-03-08
!keywords 
!discussion

From sblake@alsys.com Mon May  1 16:50:57 1995
Return-Path: <sblake@alsys.com>
Date: Mon, 1 May 1995 13:50:49 -0700
From: sblake@alsys.com (Steve Blake @pulsar)
To: roby@csed-115.csed.ida.org.
Subject: Document for Issue 002
Content-Length: 70518
X-Lines: 1244
Status: RO


Proposed ASIS 9X Version 2.0.A -- Jan 1995

Steve Blake, Thomson Software Products (formerly Alsys, Inc.)
619-457-2700 x272
sblake@thomsoft.com


Purpose

  This proposal addresses some of the changes required to evolve ASIS 1.1.1 
  into ASIS 2.0.  It is intended to serve as topic for the ASISWG.  The
  next ASISWG meeting is scheduled from 6-8 March 1995 in Fort Lauderdale, 
  Florida. It will be hosted by Harris Computer Systems Corporation.

  Comments are welcome from anyone, hopefully prior to the meeting.

  Please submit comments via email to: 
     asiswg-technical@sw-eng.falls-church.va.us

Scope

  This proposal covers only the changes dealing with elements.  Changes to
  the Asis.Compilation_Units package will be addressed in a separate
  proposal; these changes appear so far to be minor.  All other ASIS 
  packages require few, if any, changes.


Organization

  This proposal is organized into three Sections and two Appendices.
  The three Sections, about seven pages, address higher level issues and 
  rational for the proposed changes.  This discussion should be of interest
  to all ASISWG practitioners.

  The appendices provide more details of the actual proposed changes, and
  should be of more interest to implementors and users.


  Section 1. Conventions for content, format, appearance.

    Proposed name conventions, use of LRM terminology, commentary, comment
    sentinels for marking text, element kind query cross reference.

  Section 2. Organization of ASIS packages and queries.

    Proposed package structure, list and order of queries.
    Changes from ASIS 1.1.1 including new queries, deleted queries,
    name changes, and moved queries.

  Section 3. Changes to the semantics of queries or existing semantic models.

    Separation of defining_name and expression elements, enumeration literals
    as functions, obtaining implicit components of derived types,
    Name_Definition simplification.

  Appendix A.

    A synopsis of the ASIS 2.0.A packages and their queries

  Appendix B.

    A list of the changes evolving ASIS 1.1.1 into ASIS 2.0.A.


Related Documents

  Proposed ASIS 9X element kind type hierarchy, Draft 5.  This proposal
  contains the element kind declarations in the new package 
  Asis_Element_Kinds.


Section 1. Conventions for content, format, appearance.

1.1 Name conventions

  Some query names have changed for several reasons.  First, Ada9X terminology
  has introduced new terms and names, and has changed or deleted some Ada83
  terms.  Second, the element kinds for ASIS 9X have some new names and the
  names of queries operating on those element kinds have changed to be
  consistent with them.

  The query names should be consistent with 9X terms and element kind names,
  and should specify the action or result of the operation.  

  Queries that return implicit structural elements (like implicit predefined
  operators of a type_declaration) will have names that all start with 
  "Implicit_" to distinguish them from explicit structural and semantic queries.

  Semantic query names will all start with "Corresponding_" to distinguish
  them from structural queries.
  
  Most queries in ASIS 1.1.1 already used these name conventions, and only a 
  few needed their names changed.  While this makes some names longer, the 
  benefit of name recognition is very strong.  For example, it is easy to find 
  all semantic queries by searching for "function Corresponding_".


1.2 Use of LRM terminology

  LRM terms are used liberally in the commentary that describes the arguments
  and functional operation of each query.  These terms appear as they do in the 
  LRM, in lower case and with underscores (ie. type_definition, 
  subtype_indication).

  ASIS element kind literals are used in the lists of appropriate kinds and
  return kinds for each query.  They appear with leading letters capitalized 
  (ie. A_Type_Definition, A_Subtype_Indication).  The kind literal are used in
  the description commentary where necessary.

  This format makes it easy to tell them apart and provides the reader with 
  the correlation of LRM terms to the kind literals.


1.3 Comment sentinels for marking text

  Several sentinels mark portions of the ASIS 9X text.  These are not intended
  to be permanent, but provide a way to automate the construction of
  accompanying documents.  They can be easily stripped out.
  
  The sentinels and their meanings are:

  --|9X  These comments describe changes made in ASIS 9X (differences with 
	 ASIS 1.1.1).

  --|ER  These comments mark an element kind reference which acts as a
         header for the section of queries that work on this element kind.

  --|CR  These comments follow comments marking element kind references and
	 list child element queries that decompose the element kind.

  --|IR  These comments follow comments marking child element queries and
	 list element queries that provide related implicit elements.

  --|SR  These comments follow comments marking related implicit elements and
	 list element queries that provide semantically related elements.


1.4 Redundant commentary

  Commentary that is redundant should be removed.  This includes:

  o The general usage commentary that appears in each ASIS 1.1.1 package 
    dealing with elements.  This can appear once in Asis.Elements.

  o The commentary stating that ASIS_Failed may be raised due to encountering
    and obsolete element.  Nearly every query can do that in some
    implementations, so that comments can be stated once in the description of
    ASIS_Failed.  This can appear once in Asis.Elements.
  
  o Commentary listing appropriate kinds can be removed where immediately
    following it is commentary listing more specific kinds.

    In the example, 

    -- Appropriate Element_Kinds:
    --      An_Expression
    --
    -- Appropriate Expression_Kinds:
    --      An_Indexed_Component

    the second list of Expression_Kinds is sufficient and implies that the 
    Element_Kinds must be An_Expression.  
  
  o Further Analysis commentary is redundant due to the element kind
    references and child element syntactic and semantic query lists.

  o For queries that return Nil_Element, the Not_A_XXXXX kind literal should
    appear in the return kind list.


1.5 Examples of Proposed Conventions

  This example from Asis.Declarations illustrates the proposed conventions.

--|ER-------------------------------------------------------------------------
--|ER An_Entry_Declaration - LRM 9.5.2
--|CR
--|CR Child elements returned by:
--|CR    function Names
--|CR    function Entry_Family_Definition
--|CR    function Parameter_Profile
--|9X-------------------------------------------------------------------------
--|9X function Entry_Family_Definition was called Entry_Index.
------------------------------------------------------------------------------

    function Entry_Family_Definition (Declaration : in Asis.Declaration)
                                     return Asis.Discrete_Subtype_Definition;

------------------------------------------------------------------------------
--  Declaration - Specifies the entry_declaration to query
--
-- Returns the discrete_subtype_definition element for the entry family of 
-- an entry_declaration.  Returns a Nil_Element if the entry_declaration 
-- does not define a family of entries.
--
-- Appropriate Declaration_Kinds:
--      An_Entry_Declaration
--
-- Returns Definition_Kinds:
--      Not_A_Definition
--      A_Discrete_Subtype_Definition
--


Section 2. Organization of ASIS packages and queries.

2.1 Proposed package structure

  Asis_Unit_Kinds           -- a new package containing type declarations
			    -- for Unit_Kinds and Relation_Kinds
  Asis_Element_Kinds        -- a new package containing type declarations
			    -- for all element kinds
  Asis_Type_Primitives      -- Minor changes
  Asis_Vendor_Primitives    -- Minor changes
  Asis_Environment          -- No change
  Asis_Libraries            -- No change
  Asis_Compilation_Units    -- Changes not addressed in this proposal
  Asis_Elements             -- Queries for general elements and A_Pragma
  Asis_Declarations         -- Queries for A_Declaration and A_Defining_Name 
  Asis_Definitions          -- Replaces ASIS 1.1.1 Asis_Type_Definitions
                            -- Queries for A_Definition
  Asis_Statements           -- Queries for A_Statement, An_Alternative, and
			    --   An_Exception_Handler
  Asis_Expressions          -- Queries for An_Expression and An_Association 
  Asis_Clauses              -- Replaces ASIS 1.1.1 Asis_Representation_Clauses
                            -- Queries for A_Clause
  Asis_Ids                  -- No change
  Asis_Text                 -- No change
  Asis_Portable_Transfer    -- No change
  Asis_Data_Decomposition   -- No change
  Asis                      -- Minor name changes

  The two new packages Asis_Unit_Kinds and Asis_Element_Kinds provide
  several advantages.  The kinds no longer need to be derived and their 
  literals duplicated in commentary.  The types can be employed by both
  implementation packages and the ASIS packages, avoiding conversions
  between the derived types.  The packages can be printed to supply a 
  concise listing for programmer reference.  These packages address 
  suggestions made at the November ASISWG meeting.  See the related document
  "Proposed ASIS 9X element kind type hierarchy, Draft 5."

  Asis_Definitions is more general than just type_definitions.  This should
  avoid confusion and questions like "Why are discrete ranges in
  ASIS_Type_Definitions?"
  
  Asis_Clauses supports all clauses including with and use clauses as well
  as representation clauses.

  The packages dealing with elements contain operations whose arguments fit
  the element kinds supported by the packages.  For example, Asis_Declarations 
  contains queries whose arguments are either A_Declaration or A_Defining_Name.
  Users will not have to look in other packages for operations for those
  kinds.

  In the packages dealing with elements, the nested packages called Operations 
  were deleted since they were intended to make visibility to operations of the 
  various kind declarations easy to access.  Since the kind declarations are 
  in new packages, their operations can be made visible through 
  use_package_clauses or use_type_clauses.


2.2 List and Order of Queries.

  Queries are ordered to follow the order of the Element Kinds hierarchy.
  This means queries that are appropriate for An_Ordinary_Type_Declaration
  appear before queries that operate on A_Procedure_Declaration.  The
  Element Kinds follow the order of the LRM, so the Appendix E, Syntax
  Summary is a useful guide to the layout of both kinds and queries.

  Within this ordering paradigm, for a particular kind, structural queries 
  appear first, followed by any implicit element queries and finally any 
  semantic queries .

  A synopsis of the ASIS packages and their queries is in Appendix A.


2.3 Changes from ASIS 1.1.1.

  Many new queries were added to provide new functionality supporting Ada 9X
  features.  New queries were also added to support the element kinds
  hierarchy.  Changes are identified in the ASIS 9X commentary using the
  sentinel --|9X, see section 1.3.

  Deleted queries were determined by the following:

  1. Remove all queries that simply duplicate information that can
     be determined from the element kinds hierarchy.  Many Boolean queries
     fit this criteria.  For example, Is_Parameter_Specification is obvious 
     from the Declaration_Kind.  Deletions are marked with the keyword 
     HIERARCHY.

  2. Remove all queries that are no longer applicable due to the new kinds
     hierarchy or that were replaced by new queries providing equivalent
     functionality.  Deletions are marked with the keyword REPLACED.

  3. Remove all queries that are not well defined.  Is_Private fits this 
     criteria.  Does Is_Private mean a private type, a declaration in the
     private part of a package, or a unit whose Enclosing_Compilation_Unit has
     the reserved word private? Deletions are marked with the keyword 
     ILL_DEFINED.

  4. Remove all redundant duplicated queries.  Entry_Declaration fits this
     criteria.  No loss of functionality is incurred.  Deletions are marked 
     with the keyword REDUNDANT.

  5. Remove all non-essential secondary queries.  These are queries that can
     easily be implemented using ASIS queries.  The function References fits
     this criteria.  I will be happy to supply implementations of these
     secondary queries for inclusion in a "view layer".  This adds the
     benefit that users can easily tailor or customize these queries.
     Deletions are marked with the keyword SECONDARY.

  A list of the changes evolving ASIS 1.1.1 into ASIS 2.0.A is in Appendix B.  

  Remember, this is a proposal; if an operation essential to your application 
  or ASIS implementation was deleted, it is simple enough to restore it. 
  Please provide justification that the query belongs in ASIS rather than a 
  utility or view layer.


Section 3. Changes to the semantics of queries or existing semantic models.

3.1 Separation of defining_name and expression elements.

  A point of confusion in ASIS 1.1.1 was the sharing of Expression_Kinds
  between An_Entity_Name_Definition and An_Expression.  In ASIS 9X
  A_Defining_Name replaces An_Entity_Name_Definition and has its own
  subordinate kind Defining_Name_Kinds.

  Several ASIS 1.1.1 queries accepted both An_Entity_Name_Definition and
  An_Expression elements.  In general, ASIS 9X has separated those queries
  providing distinct operations where necessary.  Some queries now accept
  only one kind or the other.  A_Defining_Name can always be obtained from
  Expression_Kinds'An_Identifier using Corresponding_Name_Definition.  See
  section 2.3 for these changes.  No loss of functionality has been
  incurred.  See 3.3 for Corresponding_Name_Definition simplification.


3.2 Enumeration literals as functions

  Whether or not to treat enumeration literals as functions has been a topic
  of discussion throughout the development of ASIS.  It is generally agreed
  that since the LRM treats them as functions, ASIS should too.  To address
  this issue, ASIS 1.1.1 added An_Enumeration_Literal_Specification to the
  list of appropriate Declaration_Kinds for two of its queries Parameters
  and Return_Type.  Given An_Enumeration_Literal_Specification, Parameters
  will always return a Nil_Element_List and Return_Type creates an implicit
  element referencing the enumeration type.

  This proposal suggests that these two queries remove
  An_Enumeration_Literal_Specification from the list of appropriate
  elements.  For Parameters, nothing is ever returned, so no functionality
  is lost there.  The implicit reference from Return_Type has no real use
  other than to get the Corresponding_Name_Definition.  Getting to the
  A_Defining_Name of the declaration of the enumeration type, or the
  declaration itself, is trivial from An_Enumeration_Literal_Specification.
  Again, no functionality is lost.  The result is simplification;
  Return_Type becomes simply a structural query rather than a mixture of 
  syntactic and implicit semantic capability.  

  It seems the best way to treat them as functions is to just leave them
  alone.  The client tools can apply an view they desire.

  Another issue with enumeration literals deals with their use.  This
  proposal suggests that an expression representing the use of an
  enumeration literal be treated as Expression_Kinds'An_Enumeration_Literal.

  Apparently, some ASIS implementations treat such a use as A_Function_Call 
  rather than An_Enumeration_Literal.  This model adds unneeded complexity;
  now Prefix, Called_Function, and Function_Call_Parameters must deal with 
  enumeration literals.

  ASIS implementations that treat a use as An_Enumeration_Literal remove the
  extra step of calling Prefix on the A_Function_Call to get 
  An_Enumeration_Literal.  Additionally, users are not forced to deal with 
  enumeration literal uses as function calls, but certainly can do so if they 
  desire.


3.3 Corresponding_Name_Definition simplification (formerly Name_Definition)

  This semantic query is perhaps the single most important query in ASIS.
  It should be efficient and primitive.  But the way it is defined in ASIS
  1.1.1, it is neither.  Two main changes are proposed:
  
  First, It should no longer accept both A_Defining_Name and An_Expression
  elements.  Now that these element kinds no longer share Expression_Kinds,
  Corresponding_Name_Definition should only work for An_Expression elements.
  (The Corresponding_Name_Definition of A_Defining_Name is the identity
  function).

  Second, it should no longer attempt to return the A_Defining_Name element
  from the first part of two part declarations.  It should return the
  A_Defining_Name element from the most immediate declaration in the innermost 
  scope where the argument expression occurs (This requires more explanation 
  that is pending).  Basically, a reference to the name of a procedure body
  within or in the enclosing declarative region after the body, should
  return the body name, not the spec name.  Similarly, references in the
  immediate scope of a full type should return the full type that is the 
  completion, not the incomplete type, if any.  The completion holds the
  interesting information and is most likely what the user wants to get.

  The main problem with always attempting to return the first part, is
  efficiency.  Some Ada implementations force inefficient searches for these
  first parts, which may not exist.  In the RISCAda ASIS implementation,
  attempting to follow the strict interpretation given in ASIS 1.1.1 is
  painfully slow, and hence is disabled.  There have been no complaints by
  any users.

  Converting a potential second part to a first part should be a secondary
  and conscious choice made by the user.  There are ASIS queries that will
  provide such functionality.


3.4 Obtaining implicit components of derived types

  In ASIS 1.1.1, several queries accept A_Derived_Type_Definition elements
  whose Ground_Type is A_Record_Type_Definition, A_Task_Type_Definition,
  An_Enumeration_Type_Definition, etc. in order to return implicit components 
  of derived task, record or enumeration types.  This proposal suggests that 
  ASIS 2.0.A offer a new query Corresponding_Derived_Definition that accepts 
  A_Derived_Type_Definition and returns the implicit definition, if any.  
  The A_Task_Definition, A_Record_Type_Definition, or other definitions would 
  test Is_Implicit and could then be passed to the usual functions appropriate 
  for them, in order to decompose the implicit components, entries, etc.  
  This would consolidate this functionality and simplify the model and 
  descriptions of the queries involved.


3.5 Queries should not always return identity elements.

  Some semantic queries in ASIS 1.1.1 accept appropriate elements for which
  its identity element is always returned.  An example is Corresponding_Body
  which takes A_Package_Body and returns that same A_Package_Body.
  Corresponding_Specification is another example.  While this functionality
  acts as a "normalizer" of all units to either specs or bodies, it is not 
  otherwise very useful.  This proposal suggests that this redundant 
  functionality be removed from these queries.  

  No functionality is being lost by this proposal.  These queries will
  simply have their appropriate element lists shortened.


Appendix A.  A synopsis of the ASIS 2.0.A packages and their queries


package Asis_Elements is
    function Element_Kind (Element : in Asis.Element) 
    function Pragma_Kind (Pragma_Element : Asis.Pragma_Element)
    function Defining_Name_Kind (Defining_Name : in Asis.Defining_Name)
    function Declaration_Kind (Declaration : in Asis.Declaration)
    function Trait_Kind (Definition : in Asis.Definition)
    function Declaration_Origin (Declaration : in Asis.Declaration)
    function Mode_Kind (Declaration : in Asis.Declaration)
    function Default_Kind 
    function Definition_Kind (Definition : in Asis.Definition)
    function Type_Kind (Definition : in Asis.Type_Definition)
    function Formal_Type_Kind 
    function Access_Type_Kind 
    function Root_Type_Kind 
    function Expression_Kind (Expression : in Asis.Expression)
    function Operator_Kind (Element : in Asis.Element)
    function Attribute_Kind (Expression : in Asis.Expression)
    function Association_Kind (Association : in Asis.Association)
    function Statement_Kind (Statement : in Asis.Statement)
    function Alternative_Kind (Alternative : in Asis.Alternative)
    function Clause_Kind (Clause : in Asis.Clause)
    function Representation_Clause_Kind 
    function Is_Nil (Right : in Asis.Element) return Boolean;
    function Is_Nil (Right : in Asis.Element_List) return Boolean;
    function Is_Equal (Left  : in Asis.Element;  
    function Is_Identical (Left  : in Asis.Element;  
    function Is_Part_Of_Implicit (Element : in Asis.Element) return Boolean;
    function Is_Part_Of_Derived (Element : in Asis.Element) return Boolean;
    function Is_Part_Of_Instance (Element : Asis.Element) return Boolean;
    procedure Traverse_Element  
    function Enclosing_Element (Element : in Asis.Element) return Asis.Element;
    function Enclosing_Element (Element : in Asis.Element;  
    function Enclosing_Generic (Element : Asis.Element) return Asis.Element;
    function Pragmas (Context : in Asis.Element)
    function Corresponding_Pragmas (Element : in Asis.Element)  
    function Name (Pragma_Element : in Asis.Pragma_Element) return String;
    function Argument_Associations (Pragma_Element : in Asis.Pragma_Element)
    function Debug_Image (Element : in Asis.Element) return Asis.Asis_String;
    function Hash (Element : in Asis.Element) return Asis.Asis_Integer
package Asis_Declarations is
    function Names (Declaration : in Asis.Declaration)  
    function Name (Defining_Name : in Asis.Defining_Name) return String;
    function Position_Number_Image 
    function Representation_Value_Image 
    function Defining_Prefix (Defining_Name : in Asis.Defining_Name) 
    function Defining_Selector (Defining_Name : in Asis.Defining_Name) 
    function Discriminant_Part (Declaration : in Asis.Declaration)  
    function Type_Declaration_View (Declaration : in Asis.Declaration) 
    function Object_Declaration_View (Declaration : in Asis.Declaration) 
    function Initial_Value (Declaration : in Asis.Declaration)  
    function Corresponding_Constant_Declaration  
    function Declaration_Subtype_Mark (Declaration : in Asis.Declaration)  
    function Corresponding_Type_Declaration  
    function Corresponding_Type_Declaration  
    function Corresponding_First_Subtype
    function Corresponding_Last_Constraint 
    function Corresponding_Last_Subtype 
    function Corresponding_Representation_Clauses
    function Specification_Subtype_Definition
    function Parameter_Profile (Declaration : in Asis.Declaration)  
    function Result_Profile (Declaration : in Asis.Declaration)  
    function Body_Declarative_Items (Declaration : in Asis.Declaration;
    function Body_Statements (Declaration : in Asis.Declaration;
    function Body_Exception_Handlers (Declaration : in Asis.Declaration)
    function Is_Name_Repeated
    function Corresponding_Specification  
    function Corresponding_Specification  
    function Corresponding_Body (Declaration : in Asis.Declaration)  
    function Corresponding_Body (Declaration : in Asis.Declaration;  
    function Corresponding_Subprogram_Derivation 
    function Corresponding_Type (Declaration : in Asis.Declaration)  
    function Corresponding_Equality_Operator 
    function Visible_Part_Declarative_Items  
    function Is_Private_Present
    function Private_Part_Declarative_Items  
    function Renamed_Entity (Declaration : in Asis.Declaration)  
    function Corresponding_Base_Entity (Declaration : in Asis.Declaration)  
    function Protected_Operation_Items 
    function Entry_Family_Definition (Declaration : in Asis.Declaration)
    function Entry_Index_Specification (Declaration : in Asis.Declaration)
    function Entry_Barrier (Declaration : in Asis.Declaration)
    function Corresponding_Subunit (Body_Stub : in Asis.Declaration)  
    function Corresponding_Subunit (Body_Stub : in Asis.Declaration;  
    function Is_Subunit (Declaration : in Asis.Declaration) return Boolean;
    function Corresponding_Body_Stub (Subunit : in Asis.Declaration)  
    function Corresponding_Body_Stub (Subunit : in Asis.Declaration;  
    function Generic_Formal_Part
    function Generic_Unit_Name (Declaration : in Asis.Declaration)  
    function Generic_Actual_Part (Declaration : in Asis.Declaration;  
    function Formal_Subprogram_Default  
    function Corresponding_Generic_Element (Reference : in Asis.Element)  
package Asis_Definitions is
    function Implicit_Predefined_Operators  
    function Implicit_Attribute_Functions  
    function Type_Operators (Type_Definition : in Asis.Type_Definition)  
    function Parent_Subtype_Indication 
    function Record_Definition (Type_Definition : in Asis.Type_Definition)
    function Corresponding_Derived_Definition 
    function Implicit_Derived_Subprograms  
    function Corresponding_Parent_Subtype 
    function Corresponding_Ground_Type
    function Corresponding_Type_Structure 
    function Enumeration_Literal_Declarations  
    function Integer_Constraint  
    function Mod_Static_Expression  
    function Digits_Expression (Definition : in Asis.Definition)  
    function Delta_Expression (Definition : in Asis.Definition)  
    function Real_Range_Constraint
    function Index_Subtype_Definitions  
    function Discrete_Subtype_Definitions
    function Array_Component_Definition
    function Access_To_Object_Definition
    function Access_To_Subprogram_Parameter_Profile
    function Access_To_Function_Result_Profile 
    function Subtype_Mark (Definition : in Asis.Definition)  
    function Subtype_Constraint (Definition : in Asis.Definition)   
    function Lower_Bound (Constraint : in Asis.Range_Constraint)  
    function Upper_Bound (Constraint : in Asis.Range_Constraint)  
    function Range_Attribute (Constraint : in Asis.Range_Constraint)  
    function Discrete_Ranges (Constraint : in Asis.Constraint)  
    function Discriminant_Associations
    function Component_Subtype_Indication 
    function Discriminants (Definition : in Asis.Definition)  
    function Record_Components (Record_Definition : in Asis.Record_Definition;  
    function Implicit_Components 
    function Discriminant_Direct_Name  
    function Variants (Variant_Part    : in Asis.Record_Component;
    function Variant_Choices (Variant : in Asis.Variant)  
    function Variant_Components (Variant         : in Asis.Variant;  
    function Implicit_Variant_Components (Variant : in Asis.Variant)  
    function Ancestor_Subtype_Indication
    function Visible_Part_Items  
    function Private_Part_Items  
    function Is_Private_Present
package Asis_Expressions is
    function Corresponding_Expression_Type (Expression : in Asis.Expression)  
    function Value (Expression : in Asis.Expression) return String;
    function Name (Name : in Asis.Expression) return String;
    function Corresponding_Name_Definition (Reference : in Asis.Expression)
    function Corresponding_Name_Definition_List (Reference : in Asis.Element)
    function Corresponding_Name_Declaration (Reference : in Asis.Expression)  
    function Is_Predefined (Reference : in Asis.Element) return Boolean;
    function Is_Implicit (Reference : in Asis.Element)  
    function Is_Derived (Reference : in Asis.Element) return Boolean;
    function Prefix (Expression : in Asis.Expression) return Asis.Expression;
    function Index_Expressions (Expression : in Asis.Expression)  
    function Slice_Range (Expression : in Asis.Expression)
    function Selector (Expression : in Asis.Expression)  
    function Attribute_Designator_Name (Expression : in Asis.Expression)  
    function Attribute_Designator_Arguments (Expression : in Asis.Expression)  
    function Record_Component_Associations
    function Extension_Aggregate_Expression
    function Array_Component_Associations
    function Component_Choices (Association : in Asis.Component_Association)  
    function Component_Expression (Association : in Asis.Component_Association) 
    function Formal_Parameter (Parameter : in Asis.Association)  
    function Actual_Parameter (Parameter : in Asis.Association)  
    function Discriminant_Selector_Names  
    function Discriminant_Expression  
    function Is_Normalized (Association : in Asis.Association) return Boolean;
    function Is_Defaulted_Association
    function Expression_Parenthesized (Expression : in Asis.Expression)  
    function Is_Prefix_Call (Expression : in Asis.Expression) return Boolean;
    function Called_Function (Expression : in Asis.Expression)  
    function Function_Call_Parameters (Expression : in Asis.Expression;  
    function Short_Circuit_Operation_Left_Expression  
    function Short_Circuit_Operation_Right_Expression  
    function Membership_Test_Expression (Expression : in Asis.Expression)  
    function Membership_Test_Range
    function Membership_Test_Subtype_Mark
    function Converted_Or_Qualified_Subtype_Mark
    function Converted_Or_Qualified_Expression 
    function Allocator_Subtype_Indication (Expression : in Asis.Expression)  
    function Allocator_Qualified_Expression (Expression : in Asis.Expression)  
package Asis_Statements is
    function Is_Labeled (Statement : in Asis.Statement) return Boolean;
    function Label_Names (Statement : in Asis.Statement)
    function Assignment_Name (Statement : in Asis.Statement)  
    function Assignment_Expression (Statement : in Asis.Statement)  
    function Statement_Alternatives (Statement : in Asis.Statement)  
    function Condition_Expression (Alternative : in Asis.Alternative)  
    function Sequence_Of_Statements (Alternative     : in Asis.Alternative;
    function Case_Expression (Statement : in Asis.Statement)  
    function Case_Statement_Alternative_Choices  
    function Loop_Statement_Identifier (Statement : in Asis.Statement)  
    function Is_Name_Repeated (Statement : in Asis.Statement) return Boolean;
    function While_Condition (Statement : in Asis.Statement)  
    function For_Loop_Parameter_Specification (Statement : in Asis.Statement)  
    function Loop_Statements (Statement       : in Asis.Statement;
    function Block_Statement_Identifier (Statement : in Asis.Statement)  
    function Is_Declare_Block (Statement : in Asis.Statement) return Boolean;
    function Block_Declarative_Items (Statement       : in Asis.Statement;  
    function Block_Statements  
    function Block_Exception_Handlers  
    function Exit_Loop_Name (Statement : in Asis.Statement)  
    function Exit_Condition (Statement : in Asis.Statement)  
    function Corresponding_Loop_Exited 
    function Return_Expression (Statement : in Asis.Statement)  
    function Goto_Label (Statement : in Asis.Statement)  
    function Corresponding_Destination_Statement 
    function Called_Name (Statement : in Asis.Statement)  
    function Corresponding_Called_Entity (Statement : in Asis.Statement)  
    function Call_Parameters (Statement  : in Asis.Statement;
    function Accept_Entry_Index (Statement : in Asis.Statement)  
    function Accept_Entry_Direct_Name (Statement : in Asis.Statement)  
    function Accept_Parameters (Statement : in Asis.Statement)  
    function Accept_Body_Statements (Statement       : in Asis.Statement;  
    function Accept_Body_Exception_Handlers
    function Corresponding_Entry (Statement : in Asis.Statement)  
    function Requeue_Entry_Name (Statement : in Asis.Statement)  
    function Delay_Expression (Statement : in Asis.Statement)  
    function Select_Alternative (Alternative : in Asis.Alternative)  
    function Is_Guarded (Alternative : in Asis.Select_Alternative)  
    function Guard (Alternative : in Asis.Select_Alternative)  
    function Aborted_Tasks (Statement : in Asis.Statement)  
    function Choice_Parameter_Specification 
    function Exception_Choices (Handler : in Asis.Exception_Handler)  
    function Handler_Statements (Handler         : in Asis.Exception_Handler;
    function Raised_Exception (Statement : in Asis.Statement)  
    function Qualified_Expression (Statement : in Asis.Statement)  
package Asis_Clauses is
    function Clause_Names 
    function Representation_Clause_Name 
    function Representation_Clause_Expression  
    function Mod_Clause_Expression
    function Component_Clauses 
    function Component_Clause_Position  
    function Component_Clause_Range  


Appendix B.  A list of the changes evolving ASIS 1.1.1 into ASIS 2.0.A.

   1 
   2 ----------------------------------------------------------------------
   3 
   4  Changes to package Asis_Elements.
   5 
   6 ----------------------------------------------------------------------
   7  The Element_Kinds Hierarchy is new.
   8 ----------------------------------------------------------------------
   9  All Kind queries are moved here to Asis.Elements.
  10 ----------------------------------------------------------------------
  11  function Defining_Name_Kind is new.
  12 ----------------------------------------------------------------------
  13  function Declaration_Kind was Kind and moved from Asis.Declarations.
  14 ----------------------------------------------------------------------
  15  function Declaration_Origin was Origin and moved from Asis.Declarations.
  16 ----------------------------------------------------------------------
  17  function Mode_Kind was Parameter_Mode_Kind moved from Asis.Declarations.
  18 ----------------------------------------------------------------------
  19  function Default_Kind was 
  20  Generic_Formal_Subprogram_Default_Kind and moved from Asis.Declarations.
  21 ----------------------------------------------------------------------
  22  function Definition_Kind is new.
  23 ----------------------------------------------------------------------
  24  function Trait_Kind is new.
  25 ----------------------------------------------------------------------
  26  function Type_Kind was Kind and moved from Asis.Definitions.
  27 ----------------------------------------------------------------------
  28  function Formal_Type_Kind is new.
  29 ----------------------------------------------------------------------
  30  function Access_Type_Kind is new.
  31 ----------------------------------------------------------------------
  32  function Root_Type_Kind is new.
  33 ----------------------------------------------------------------------
  34  function Expression_Kind was Kind and moved from Asis.Expressions.
  35 ----------------------------------------------------------------------
  36  function Operator_Kind moved from Asis.Expressions.
  37 ----------------------------------------------------------------------
  38  function Attribute_Kind moved from Asis.Expressions.
  39 ----------------------------------------------------------------------
  40  function Association_Kind is new.
  41 ----------------------------------------------------------------------
  42  function Statement_Kind was Kind and moved from Asis.Statements.
  43 ----------------------------------------------------------------------
  44  function Alternative_Kind is new.
  45 ----------------------------------------------------------------------
  46  function Clause_Kind is new.
  47 ----------------------------------------------------------------------
  48  function Representation_Clause_Kind moved from Asis.Clauses.
  49 ----------------------------------------------------------------------
  50  function Is_Part_Of_Implicit moved from Asis.Declarations.
  51 ----------------------------------------------------------------------
  52  function Is_Part_Of_Derived moved from Asis.Declarations.
  53 ----------------------------------------------------------------------
  54  function Is_Part_Of_Instance moved from Asis.Declarations.
  55 ----------------------------------------------------------------------
  56  function Enclosing_Generic was moved from Asis.Declarations.
  57 ----------------------------------------------------------------------
  58  function Corresponding_Pragmas was called Associated_Pragmas.
  59 ----------------------------------------------------------------------
  60  function Is_Predefined for pragmas was deleted.  Reason: HIERARCHY.
  61 ----------------------------------------------------------------------
  62  function Hash was moved out of the nested package Operations.
  63 ----------------------------------------------------------------------
  64  package Operations was deleted.  Kind declaration in new package.
  65 ----------------------------------------------------------------------
  66 
  67  Changes to package Asis_Declarations.
  68 
  69 ----------------------------------------------------------------------
  70  function Kind called Declaration_Kind and moved to Asis.Elements
  71 ----------------------------------------------------------------------
  72  function Origin called Declaration_Origin and moved to Asis.Elements
  73 ----------------------------------------------------------------------
  74  Name is a new query specific to A_Defining_Name elements
  75 ----------------------------------------------------------------------
  76  function Position_Number_Image was moved from Asis.Expressions and
  77  works on A_Defining_Name elements only.
  78 ----------------------------------------------------------------------
  79  function Representation_Value_Image was moved from Asis.Expressions and
  80  works on A_Defining_Name elements only.
  81 ----------------------------------------------------------------------
  82  Defining_Prefix is a new query
  83 ----------------------------------------------------------------------
  84  Defining_Selector is a new query
  85 ----------------------------------------------------------------------
  86  function Discriminant_Part is a new query; an intermediate step 
  87  before the Asis.Definitions.Discriminants query.
  88 ----------------------------------------------------------------------
  89  Type_Declaration_Definition was deleted.  Reason: REPLACED.
  90  The new query Type_Declaration_View provides equivalent functionality
  91  with added definition for task and protected elements.
  92 ----------------------------------------------------------------------
  93  Object_Declaration_Definition was deleted.  Reason: REPLACED.
  94  The new query Object_Declaration_View provides equivalent functionality
  95  with added definition for single task and single protected elements
  96 ----------------------------------------------------------------------
  97  function Is_Character_Literal was deleted.  Reason HIERARCHY.
  98 ----------------------------------------------------------------------
  99  function Declaration_Subtype_Mark is a new query replacing 
 100  parts of Object_Declaration_Definition and Type_Mark functionality.
 101 ----------------------------------------------------------------------
 102  function Is_Variable was deleted.  Reason HIERARCHY.
 103  function Is_Constant was deleted.  Reason HIERARCHY.
 104  function Is_Type_Declaration was deleted.  Reason HIERARCHY.
 105  function Is_Private was deleted.  Reason HIERARCHY and ILL_DEFINED.
 106  function Is_Limited was deleted   Reason HIERARCHY and ILL_DEFINED.
 107 ----------------------------------------------------------------------
 108  function Is_Part_Of_Implicit moved to Asis.Elements.
 109  function Is_Part_Of_Derived moved to Asis.Elements.
 110 ----------------------------------------------------------------------
 111  function Implicit_Derived_Subprograms moved to Asis.Definitions.
 112  function Implicit_Predefined_Operators moved to Asis.Definitions.
 113  function Implicit_Attribute_Functions moved to Asis.Definitions.
 114  function Type_Operators moved to Asis.Definitions.
 115 ----------------------------------------------------------------------
 116  function Base_Type is now called Corresponding_First_Subtype and
 117  works on A_Declaration elements returning A_Declaration.
 118 ----------------------------------------------------------------------
 119  function Last_Constraint is now called Corresponding_Last_Constraint
 120  and works on A_Declaration elements returning A_Declaration.
 121 ----------------------------------------------------------------------
 122  function Last_Subtype is now called Corresponding_Last_Subtype
 123  and works on A_Declaration elements returning A_Declaration.
 124 ----------------------------------------------------------------------
 125  Associated_Representation_Clauses is called 
 126  Corresponding_Representation_Clauses and moved to Asis.Declarations
 127 ----------------------------------------------------------------------
 128  Specification_Subtype_Definition replaces Loop_Parameter_Range
 129  and works on entry index specification elements
 130 ----------------------------------------------------------------------
 131  function Is_Specification was deleted.  Reason HIERARCHY.
 132  function Is_Package was deleted.  Reason HIERARCHY.
 133  function Is_Task was deleted.  Reason HIERARCHY.
 134  function Is_Procedure was deleted.  Reason HIERARCHY.
 135  function Is_Function was deleted.  Reason HIERARCHY.
 136  function Is_Subprogram was deleted.  Reason HIERARCHY.
 137 ----------------------------------------------------------------------
 138  function Parameter_Mode_Kind moved to Asis.Elements.
 139 ----------------------------------------------------------------------
 140  function Parameters is now called Parameter_Profile.
 141 ----------------------------------------------------------------------
 142  function Return_Type is now called Result_Profile.
 143  An_Enumeration_Literal_Specification is not appropriate.
 144 ----------------------------------------------------------------------
 145  function Subprogram_Body_Block was deleted.  Reason REPLACED.
 146  function Package_Body_Block was deleted.  Reason REPLACED.
 147  function Task_Body_Block was deleted.  Reason REPLACED.
 148  The intermediate step of converting unit bodies to implicit
 149  block statements is eliminated.  Child elements of unit bodies 
 150  are returned by function Body_Declarative_Items, function 
 151  Body_Statements, and function Body_Exception_Handlers. 
 152 ----------------------------------------------------------------------
 153  function Body_Declarative_Items is a new query.
 154 ----------------------------------------------------------------------
 155  function Body_Statements is a new query.
 156 ----------------------------------------------------------------------
 157  function Body_Exception_Handlers is a new query.
 158 ----------------------------------------------------------------------
 159  Changed name; Corresponding_Subprogram_Derivation was 
 160  Subprogram_Derivation
 161 ----------------------------------------------------------------------
 162  function Is_Renaming_Declaration was deleted.  Reason HIERARCHY.
 163 ----------------------------------------------------------------------
 164  Corresponding_Base_Entity is the new name for Renamed_Base_Entity 
 165 ----------------------------------------------------------------------
 166  function Is_Interface_Present was deleted.    Reason REPLACED.
 167  The new query Type_Declaration_View provides equivalent functionality.
 168 ----------------------------------------------------------------------
 169  function Task_Declaration_Declarative_Items was deleted. Reason REPLACED.
 170  function Entry_Declarations was deleted.  Reason REPLACED and REDUNDANT.
 171  Their functionality is replaced by the new Asis.Definitions 
 172  functions Visible_Part_Items and Private_Part_Items operate 
 173  on A_Task_Definition elements.
 174 ----------------------------------------------------------------------
 175  function Protected_Operation_Items is a new query.
 176 ----------------------------------------------------------------------
 177  function Entry_Index is now called Entry_Family_Definition
 178 ----------------------------------------------------------------------
 179  function Entry_Index_Specification is a new query.
 180 ----------------------------------------------------------------------
 181  function Entry_Barrier is a new query.
 182 ----------------------------------------------------------------------
 183  function Subunit is now called Corresponding_Subunit.
 184 ----------------------------------------------------------------------
 185  function Body_Stub is now called Corresponding_Body_Stub.
 186 ----------------------------------------------------------------------
 187  function Is_Generic was deleted.  Reason HIERARCHY.
 188 ----------------------------------------------------------------------
 189  function Is_Part_Of_Instance moved to Asis.Elements.
 190 ----------------------------------------------------------------------
 191  function Generic_Formal_Parameters is called Generic_Formal_Part.
 192 ----------------------------------------------------------------------
 193  function Enclosing_Generic moved to Asis.Elements.
 194 ----------------------------------------------------------------------
 195  function Is_Generic_Instantiation was deleted.  Reason HIERARCHY.
 196 ----------------------------------------------------------------------
 197  function Generic_Parameters is called Generic_Actual_Part.
 198 ----------------------------------------------------------------------
 199  function Is_Generic_Formal was deleted.  Reason HIERARCHY.
 200 ----------------------------------------------------------------------
 201  function Generic_Formal_Subprogram_Default_Kind is called 
 202  Subprogram_Default_Kind and moved to Asis.Elements.
 203 ----------------------------------------------------------------------
 204  function Generic_Formal_Subprogram_Default is called 
 205  Formal_Subprogram_Default.
 206 ----------------------------------------------------------------------
 207  package Operations was deleted.  Kind declaration in new package.
 208 ----------------------------------------------------------------------
 209 
 210  Changes to package Asis_Definitions.
 211 
 212 ----------------------------------------------------------------------
 213  function Kind called Definition_Kind and moved to Asis.Elements
 214 ----------------------------------------------------------------------
 215  function Type_Definition_Declaration is deleted.  Reason REDUNDANT.
 216  Asis.Elements.Enclosing_Element provides equivalent functionality.
 217 ----------------------------------------------------------------------
 218  function Implicit_Predefined_Operators moved from Asis.Declarations.
 219 ----------------------------------------------------------------------
 220  function Implicit_Attribute_Functions moved from Asis.Declarations.
 221 ----------------------------------------------------------------------
 222  function Type_Operators moved from Asis.Declarations.
 223 ----------------------------------------------------------------------
 224  function Parent_Subtype_Indication is new name of Parent_Subtype.
 225 ----------------------------------------------------------------------
 226  function Record_Definition is a new query.
 227 ----------------------------------------------------------------------
 228  function Corresponding_Derived_Definition is a new query.
 229 ----------------------------------------------------------------------
 230  function Implicit_Derived_Subprograms moved from Asis.Declarations.
 231 ----------------------------------------------------------------------
 232  function Corresponding_Parent_Subtype was called Parent_Type and
 233  returns a declaration element.  Unwinds one step.
 234 ----------------------------------------------------------------------
 235  function Corresponding_Ground_Type was called Ground_Type and
 236  returns a declaration element.
 237 ----------------------------------------------------------------------
 238  function Corresponding_Type_Structure was called Type_Structure and
 239  returns a declaration element.
 240 ----------------------------------------------------------------------
 241  function Is_Predefined on type_definition was deleted.  Reason SECONDARY.
 242 ----------------------------------------------------------------------
 243  function Enumeration_Literal_Names was deleted.  Reason REDUNDANT and
 244  SECONDARY.  
 245 ----------------------------------------------------------------------
 246  function Mod_Static_Expression is a new query.
 247 ----------------------------------------------------------------------
 248  function Real_Type_Constraint was deleted.  Reason REPLACED.
 249 ----------------------------------------------------------------------
 250  function Digits_Expression was called Floating_Accuracy_Definition.
 251 ----------------------------------------------------------------------
 252  function Delta_Expression was called Fixed_Accuracy_Definition.
 253 ----------------------------------------------------------------------
 254  function Real_Range_Constraint was called Floating_Point_Range_Constraint.
 255 ----------------------------------------------------------------------
 256  function Is_Constrained_Array was deleted.  Reason HIERARCHY.
 257 ----------------------------------------------------------------------
 258  function Index_Constraint was deleted.  Reason REPLACED.  The new query 
 259  Discrete_Subtype_Definitions provides equivalent functionality.
 260 ----------------------------------------------------------------------
 261  function Discrete_Subtype_Definitions is a new query.
 262 ----------------------------------------------------------------------
 263  function Array_Component_Definition was called
 264  Component_Subtype_Indication.
 265 ----------------------------------------------------------------------
 266  function Is_Discriminated was deleted.  Reason REPLACED.
 267 ----------------------------------------------------------------------
 268  function Discriminants on A_Type_Definition was deleted.  Reason REPLACED.
 269  Discriminants are obtained from A_Declaration elements using 
 270  Asis.Declarations.Discriminant_Part and the new function Discriminants
 271  that operates on A_Known_Discriminant_Part element.
 272 ----------------------------------------------------------------------
 273  function Access_To was deleted.  Reason REPLACED.
 274 ----------------------------------------------------------------------
 275  function Access_To_Object_Definition is a new query.
 276 ----------------------------------------------------------------------
 277  function Access_To_Subprogram_Parameter_Profile is a new query.
 278 ----------------------------------------------------------------------
 279  function Access_To_Function_Result_Profile is a new query.
 280 ----------------------------------------------------------------------
 281  function Subtype_Definition_Subtype_Indication was deleted.  Reason
 282  REPLACED.  Changes to the element kind hierarchy along with removal of
 283  Type_Definition_Declaration allow this unnecessary kludge to be removed.
 284 ----------------------------------------------------------------------
 285  function Subtype_Mark was called Type_Mark.
 286 ----------------------------------------------------------------------
 287  function Constraint_Kinds was moved to Asis.Elements.
 288 ----------------------------------------------------------------------
 289  function Choice_Kind was deleted.  Reason REPLACED.
 290 ----------------------------------------------------------------------
 291  function Choice_Simple_Expression was deleted.  Reason REPLACED.
 292 ----------------------------------------------------------------------
 293  function Choice_Discrete_Range was deleted.  Reason REPLACED.
 294 ----------------------------------------------------------------------
 295  function Choice_Name was deleted.  Reason REPLACED.
 296 ----------------------------------------------------------------------
 297  function Discrete_Range_Kind was moved to Asis.Elements.
 298 ----------------------------------------------------------------------
 299  function Discriminant_Simple_Names was changed to 
 300  Discriminant_Selector_Names and moved to Asis.Expressions.
 301 ----------------------------------------------------------------------
 302  function Discriminant_Expression moved to Asis.Expressions.
 303 ----------------------------------------------------------------------
 304  function Component_Subtype_Indication is a new query.
 305 ----------------------------------------------------------------------
 306  function Discriminants is a new query.
 307 ----------------------------------------------------------------------
 308  function Record_Components operates on A_Record_Definition elements 
 309  rather than A_Type_Definition elements.
 310 ----------------------------------------------------------------------
 311  function Implicit_Components operates on A_Record_Definition elements 
 312  rather than A_Type_Definition elements.
 313 ----------------------------------------------------------------------
 314  function Component_Kind was deleted.  Reason REPLACED.
 315 ----------------------------------------------------------------------
 316  function Discriminant_Direct_Name was called
 317  Corresponding_Discriminant_Simple_Name.
 318 ----------------------------------------------------------------------
 319  function Ancestor_Subtype_Indication is a new query.
 320 ----------------------------------------------------------------------
 321  function Visible_Part_Items is a new query.
 322 ----------------------------------------------------------------------
 323  function Private_Part_Items is a new query.
 324 ----------------------------------------------------------------------
 325  function Is_Private_Present is a new query.
 326 ----------------------------------------------------------------------
 327  package Operations was deleted.  Kind declaration in new package.
 328 ----------------------------------------------------------------------
 329 
 330  Changes to package Asis_Expressions.
 331 
 332 ----------------------------------------------------------------------
 333  function Kind is called Expression_Kind and moved to Asis.Elements
 334 ----------------------------------------------------------------------
 335  function Corresponding_Expression_Type was called Expression_Type and
 336  now returns a declaration rather than a definition (type_definition).
 337 ----------------------------------------------------------------------
 338  function Is_Universal was deleted.  Reason REPLACED and HIERARCHY.
 339 ----------------------------------------------------------------------
 340  function Expression_Associated_Type was deleted. Reason SECONDARY.
 341  function Is_Static is deleted.  Reason ILL_DEFINED.
 342  Static_Value is called Value and works on string and numeric
 343  literals only.  Former Static_Value function not well defined.
 344 ----------------------------------------------------------------------
 345  function Name only operates on An_Expression elements.
 346  The new query Asis.Declarations.Name works on A_Defining_Name elements.
 347 ----------------------------------------------------------------------
 348  function References was deleted.  Reason SECONDARY.
 349 ----------------------------------------------------------------------
 350  function Is_Referenced was deleted.  Reason SECONDARY.
 351 ----------------------------------------------------------------------
 352  function Corresponding_Name_Definition was called Name_Definition and 
 353  the functional semantics and appropriate elements have changed.
 354 ----------------------------------------------------------------------
 355  function Corresponding_Name_Definition_List was called 
 356  Name_Definition_List and the functional semantics and appropriate 
 357  elements have changed.
 358 ----------------------------------------------------------------------
 359  function Corresponding_Name_Declaration was called Name_Declaration and 
 360  the functional semantics and appropriate elements have changed.
 361 ----------------------------------------------------------------------
 362  function Operator_Kind moved to Asis.Elements
 363 ----------------------------------------------------------------------
 364  function Subprogram_Derivation was deleted.  Reason REDUNDANT.
 365 ----------------------------------------------------------------------
 366  function Selection_Kind was deleted.  Reason REPLACED.
 367 ----------------------------------------------------------------------
 368  function Named_Packages was deleted.  Reason REPLACED.
 369  The new query Asis.Clauses.Clause_Names provides equivalent functionality.
 370 ----------------------------------------------------------------------
 371  function Attribute_Designator_Kind moved to Asis.Elements.
 372 ----------------------------------------------------------------------
 373  function Is_Literal was deleted.  Reason HIERARCHY.
 374 ----------------------------------------------------------------------
 375  function Position_Number_Image was moved to Asis.Declarations and
 376  works on A_Defining_Name elements only.
 377  function Representation_Value_Image was moved to Asis.Declarations and
 378  works on A_Defining_Name elements only.
 379  The query Corresponding_Name_Definition given A_Character_Literal or 
 380  An_Enumeration_Literal elements will provide A_Defining_Name appropriate
 381  for Position_Number_Image or Representation_Value_Image.
 382 ----------------------------------------------------------------------
 383  function Record_Component_Associations was called Components.
 384 ----------------------------------------------------------------------
 385  function Extension_Aggregate_Expression is a new query.
 386 ----------------------------------------------------------------------
 387  function Array_Component_Associations is a new query.
 388 ----------------------------------------------------------------------
 389  function Formal_Parameter was moved from Asis.Statements.
 390 ----------------------------------------------------------------------
 391  function Actual_Parameter was moved from Asis.Statements.
 392 ----------------------------------------------------------------------
 393  function Discriminant_Selector_Names was called
 394  Discriminant_Simple_Names and moved from Asis.Definitions.
 395 ----------------------------------------------------------------------
 396  function Discriminant_Expression moved from Asis.Definitions.
 397 ----------------------------------------------------------------------
 398  function Is_Parameter_Association was deleted.  Reason HIERARCHY.
 399 ----------------------------------------------------------------------
 400  function Special_Operation_Kind was deleted.  Reason REPLACED.
 401 ----------------------------------------------------------------------
 402  function Special_Operation_Left_Hand_Side was deleted.  Reason REPLACED.
 403  The new queries Short_Circuit_Operation_Left_Expression and 
 404  Membership_Test_Expression provide equivalent functionality.
 405 ----------------------------------------------------------------------
 406  function Short_Circuit_Operation_Left_Expression is a new query.
 407 ----------------------------------------------------------------------
 408  function Short_Circuit_Operation_Right_Expression was called
 409  Special_Operation_Right_Hand_Side.
 410 ----------------------------------------------------------------------
 411  function Membership_Test_Expression is a new query.
 412 ----------------------------------------------------------------------
 413  function In_Range_Operation_Right_Hand_Side was deleted. Reason REPLACED.
 414  The new query Membership_Test_Range provides equivalent functionality.
 415 ----------------------------------------------------------------------
 416  function In_Type_Operation_Right_Hand_Side was deleted. Reason REPLACED.
 417  The new query Membership_Test_Subtype_Mark provides equivalent 
 418  functionality.
 419 ----------------------------------------------------------------------
 420  function Converted_Or_Qualified_Subtype_Mark was called Type_Mark.
 421 ----------------------------------------------------------------------
 422  function Allocator_Subtype_Indication was called Allocation_Type.
 423 ----------------------------------------------------------------------
 424  function Allocator_Qualified_Expression was called 
 425  Qualified_Object_Expression.
 426 ----------------------------------------------------------------------
 427  package Operations was deleted.  Kind declaration in new package.
 428 ----------------------------------------------------------------------
 429 
 430  Changes to package Asis_Statements.
 431 
 432 ----------------------------------------------------------------------
 433  function Assignment_Name was called Object_Assigned_To.
 434 ----------------------------------------------------------------------
 435  function If_Statement_Arm_Kind was deleted.  Reason REPLACED.
 436 ----------------------------------------------------------------------
 437  function If_Statement_Arms was deleted.  Reason REPLACED.
 438  The new query Statement_Alternatives provides equivalent functionality.
 439 ----------------------------------------------------------------------
 440  function Statement_Alternatives is a new query.
 441 ----------------------------------------------------------------------
 442  function Condition_Expression now operates on An_Alternative elements.
 443 ----------------------------------------------------------------------
 444  function Sequence_Of_Statements was called Arm_Statements and now 
 445  operates on An_Alternative elements.
 446 ----------------------------------------------------------------------
 447  function Case_Statement_Alternatives was deleted.  Reason REPLACED.
 448  The new query Statement_Alternatives provides equivalent functionality.
 449 ----------------------------------------------------------------------
 450  function Is_When_Others was deleted.  Reason HIERARCHY.
 451 ----------------------------------------------------------------------
 452  function Case_Statement_Alternative_Statements was deleted. Reason 
 453  REPLACED.  The new query Sequence_Of_Statements provides equivalent 
 454  functionality.
 455 ----------------------------------------------------------------------
 456  function Loop_Kind was deleted.  Reason HIERARCHY.
 457 ----------------------------------------------------------------------
 458  function Loop_Statement_Identifier was called Loop_Simple_Name.
 459 ----------------------------------------------------------------------
 460  function Loop_Parameter_Range was changed to
 461  Specification_Subtype_Definition and moved to Asis.Declarations.
 462 ----------------------------------------------------------------------
 463  function Is_Reverse_Loop_Parameter was deleted.  Reason HIERARCHY.
 464 ----------------------------------------------------------------------
 465  function Block_Statement_Identifier was called Block_Simple_Name.
 466 ----------------------------------------------------------------------
 467  function Block_Declarative_Items was called Declarative_Items.
 468 ----------------------------------------------------------------------
 469  function Block_Statements was called Block_Body_Statements.
 470 ----------------------------------------------------------------------
 471  function Corresponding_Loop_Exited was called Loop_Exited.
 472 ----------------------------------------------------------------------
 473  function Corresponding_Destination_Statement was called 
 474  Destination_Statement.
 475 ----------------------------------------------------------------------
 476  function Corresponding_Called_Entity was called Called_Procedure.
 477 ----------------------------------------------------------------------
 478  function Formal_Parameter was moved to Asis.Expressions.
 479 ----------------------------------------------------------------------
 480  function Actual_Parameter was moved to Asis.Expressions.
 481 ----------------------------------------------------------------------
 482  function Accept_Entry_Index was called Family_Index.  
 483  It no longer operates on An_Entry_Call_Statement elements.
 484 ----------------------------------------------------------------------
 485  function Accept_Entry_Direct_Name was called Accept_Entry_Simple_Name.  
 486 ----------------------------------------------------------------------
 487  function Accept_Body_Exception_Handlers is a new query.
 488 ----------------------------------------------------------------------
 489  function Corresponding_Entry was called Accepted_Entry.
 490 ----------------------------------------------------------------------
 491  function Requeue_Entry_Name is a new query.
 492 ----------------------------------------------------------------------
 493  function Select_Statement_Arm_Kind was deleted.  Reason REPLACED.
 494 ----------------------------------------------------------------------
 495  function Select_Statement_Arms was deleted.  Reason REPLACED.
 496  The new query Statement_Alternatives provides equivalent functionality.
 497 ----------------------------------------------------------------------
 498  function Select_Alternative_Kind was deleted.  Reason REPLACED.
 499 ----------------------------------------------------------------------
 500  function Select_Alternative was called Arm_Select_Alternative.
 501 ----------------------------------------------------------------------
 502  function Select_Alternative_Statements was deleted.  Reason REPLACED.
 503  function Else_Statements was deleted.  Reason REPLACED.
 504  function Entry_Call_Statements was deleted.  Reason REPLACED.
 505  The new query Sequence_Of_Statements provides equivalent functionality.
 506 ----------------------------------------------------------------------
 507  function Timed_Entry_Call_Or_Statements was deleted.  Reason REPLACED.
 508  The query Select_Alternative followed by the new query
 509  Sequence_Of_Statements provides equivalent functionality.
 510 ----------------------------------------------------------------------
 511  function Choice_Parameter_Specification is a new query.
 512 ----------------------------------------------------------------------
 513  function Is_Others_Handler was deleted.  Reason HIERARCHY.
 514 ----------------------------------------------------------------------
 515  package Operations was deleted.  Kind declaration in new package.
 516 ----------------------------------------------------------------------
 517 
 518  Changes to package Asis_Clauses.
 519 
 520 ----------------------------------------------------------------------
 521  package Asis_Clauses was called Asis_Representation_Clauses.
 522 ----------------------------------------------------------------------
 523  function Clause_Names is a new query.
 524 ----------------------------------------------------------------------
 525  function Kind changed to Representation_Clause_Kind and moved to 
 526  Asis.Elements.
 527 ----------------------------------------------------------------------
 528  function Associated_Type was deleted.  Reason SECONDARY.
 529 ----------------------------------------------------------------------
 530  function Length_Clause_Attribute_Kind was deleted.  Reason REPLACED.
 531 ----------------------------------------------------------------------
 532  function Associated_Length_Clause_Representations was deleted.
 533  Reason REPLACED.
 534  function Associated_Enumeration_Type_Representation was deleted.
 535  Reason REPLACED.
 536  function Associated_Record_Type_Representation was deleted.
 537  Reason REPLACED.
 538  The new query Asis.Declarations.Corresponding_Representation_Clauses 
 539  provides the combined equivalent functionality operating on
 540  A_Declaration elements rather than A_Type_Definition elements.
 541 ----------------------------------------------------------------------
 542  function Length_Clause_Attribute was deleted.  Reason REPLACED.
 543  function Enumeration_Representation_Clause_Type_Simple_Name was deleted.
 544  Reason REPLACED.
 545  function Record_Representation_Clause_Type_Simple_Name was deleted.
 546  Reason REPLACED.
 547  function Representation_Clause_Name is a new query providing the 
 548  combined equivalent functionality.
 549 ----------------------------------------------------------------------
 550  function Length_Clause_Simple_Expression was deleted.
 551  function Enumeration_Representation_Clause_Aggregate was deleted.
 552  function Representation_Clause_Expression is a new query providing the 
 553  combined equivalent functionality.
 554 ----------------------------------------------------------------------
 555  function Record_Representation_Clause_Alignment_Clause_Pragmas was
 556  deleted.  Reason REDUNDANT.  Asis.Elements.Pragmas provides equivalent 
 557  functionality.
 558 ----------------------------------------------------------------------
 559  function Mod_Clause_Expression was called
 560  Record_Representation_Clause_Alignment_Clause_Expression.
 561 ----------------------------------------------------------------------
 562  function Component_Clause_Position was called 
 563  Component_Clause_Relative_Address.
 564 ----------------------------------------------------------------------
 565  package Operations was deleted.  Kind declaration in new package.

!resolution Accepted.
!date 95-03-08
!Notes

These became part of the baselined version 2.0.D.

