From sblake@alsys.com Wed Jun 21 21:20:35 1995 Return-Path: Date: Wed, 21 Jun 1995 17:43:31 -0700 From: sblake@alsys.com (Steve Blake @pulsar) To: asiswg-technical@sw-eng.falls-church.va.us Subject: ASIS 95 Proposed version 2.0.B Content-Length: 106860 X-Lines: 2024 Status: RO Proposed ASIS 95 Version 2.0.B -- June 1995 Steve Blake, Thomson Software Products (formerly Alsys, Inc.) 619-457-2700 x272 sblake@thomsoft.com Summary >>>>> See Appendix C for a list of changes in this proposed version. <<<<<< 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 a source of topics for the ASISWG with the changes in Appendix C as the focus. The next ASISWG meeting is scheduled from June 27-28, 1995 in McLean, VA, at the WAdaS conference. 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 the changes dealing with Library, Compilation_Unit, and Element models. It does not address the issue of ASIS modularity and the possible separation of Library, Compilation_Unit and Element queries. Issues raised at the March 6-7, 1995 ASISWG meeting are also addressed. Organization ---------------------------------------------------------------------- A new Appendix C summarizes the changes made in this version since the last proposal for ASIS version 2.0.A. ---------------------------------------------------------------------- This proposal is organized into four Sections and three Appendices. The new fourth section addresses changes to the Library and Compilation_Unit models. The new Appendix C lists changes made in this version since the last proposal for ASIS version 2.0.A. All four Sections 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. 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 Element queries or existing element semantic models. Separation of defining_name and expression elements, enumeration literals as functions, obtaining implicit components of derived types, Name_Definition simplification. Section 4. Changes to the semantics of Library and Compilation_Unit queries and existing semantic models. Appendix A. A synopsis of the ASIS 2.0.B packages and their queries Appendix B. A list of the changes evolving ASIS 1.1.1 into ASIS 2.0.B. Appendix C. Changes to ASIS version 2.0.B since ASIS version 2.0.A. Related Documents Proposed ASIS 95 element kind type hierarchy, Draft 6. This proposal contains the element kind declarations in the new package Asis_Element_Kinds. It also contains the unit kind declarations in the new package Asis_Unit_Kinds and Error_Kinds in the new package Asis_Errors. Section 1. Conventions for content, format, appearance. 1.1 Name conventions Some query names have changed for several reasons. First, Ada95 terminology has introduced new terms and names, and has changed or deleted some Ada83 terms. Second, the element kinds for ASIS 95 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 95 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 95 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: --|95 These comments describe changes made in ASIS 95 (differences with ASIS 1.1.1). --|ER (Element Reference) These comments mark an element kind reference which acts as a header for the section of queries that work on this element kind. --|CR (CHild elements) These sentinel comments follow sentinel comments marking element references (--|ER) and list child element queries that decompose the element kind. --|IM (IMplicit reference) These comments follow any sentinel comments marking child reference element queries (--|CR) and list element queries that provide related implicit elements. --|SR (Semantic Reference) These comments follow any sentinel comments marking child reference element queries (--|CR) and list element queries that provide semantically related elements. --|IP (Implementation Permissions) These comments describe permissions given a vendor when implementing the associated type or query. --|IR (Implementation Requirements) These comments describe additional requirements for conforming implementations. --|DR (Documentation Requirements) These comments describe additional documentation requirements for conforming implementations. 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. Vendors can add extra commentary, if desired, as an allowable difference in the ASIS specification. 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 --|95------------------------------------------------------------------------- --|95 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_Error_Kinds -- a new package containing a type declaration 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 -- Minor changes Asis_Libraries -- Minor changes Asis_Compilation_Units -- Queries for Compilation_Units, relationship, -- element gateway. 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 - not addressed in this proposal Asis_Text -- No change - not addressed in this proposal Asis_Portable_Transfer -- No change - not addressed in this proposal Asis_Data_Decomposition -- No change - not addressed in this proposal 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 95 element kind type hierarchy, Draft 6." 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 95 features. New queries were also added to support the element kinds hierarchy. Changes are identified in the ASIS 95 commentary using the sentinel --|95, 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.B 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 Element queries or existing element 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 95 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 95 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 rather than Expression_Kinds'A_Function_Call. 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.B offer a new query Implicit_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. Note that this query is now called Implicit_Derived_Definition. In the previous proposal, it was named Corresponding_Derived_Definition, but was changed to follow the naming convention for queries returning implicit elements. 3.5 Body Block functionality was restored The function Body_Block_Statement is a new query that supplies the equivalent combined functionality of the replaced queries: Subprogram_Body_Block, Package_Body_Block, and Task_Body_Block. The new function also accepts An_Entry_Body_Declaration elements. 3.6 Is_Referenced and References are still deleted These two functions remain deleted in this proposed version. This is an issue based on performance, that will be discussed further at the ASISWG meeting. Section 4. Changes to the Library and Compilation_Unit queries and related semantic models. ASIS_Libraries needs no semantic changes and only minor modification to commentary. ASIS_Compilation_Units needs some additional queries, name changes, and removal of some queries that are based on concepts no longer supported in Ada 95. A complete list of these changes is presented in Appendix B. Summary of changes: - The Unit_Kinds enumeration type has been expanded to be more specific. - The Unit_Trait_Kinds enumeration type has been added to classify public and private declarations, and bodies. - The Unit_State_Kinds enumeration type has been added to classify the state of a unit. - Three compilation order queries Related_Compilation_Units, Compilation_Order, and Recompilation_Order have been merged into one new query called Semantic_Dependence_Order. - Four unit relationship filter queries have been deleted: Direct_Supporters, Supporters, Direct_Dependents, and Dependents. 4.1 Issues and Assumptions The most important differences between Ada 83 and Ada 95 having the direct impact on the revision of the ASIS Library Model are: - the Ada 83 notions of - a library; - a compilation unit belonging to a library - a compilation/recompilation order; - an obsolete unit have been removed from the Ada standard; - the new notions of - an environment; - a library containing compilation units - semantic dependences; - a consistent set of the supporters of a unit have been introduced instead of removed notions; The ASIS 95 Library and Compilation Unit Models should be based on the Ada 95 RM as much as possible. This means: - ASIS 95 should avoid relying on some implementation-dependent assumptions concerning the internal vendor library structure. - ASIS 95 will have to use some assumptions concerning vendor Ada library/environment. If so, these assumptions must be the well-defined and carefully evaluated invariants of the vendor libraries/environments. - ASIS 95 should use the Ada-standard-defined notions (an environment, semantic dependencies in the environment, consistency in the environment) to define formally the interface between ASIS Library and vendor Ada compiler environment. - The formal definition of ASIS 95 must be permissive just as the Ada 95 Reference Manual is permissive about the ways environments and libraries can be implemented. - ASIS 95 should be implementable by lightweight or heavyweight vendor libraries. ASIS should not define requirements that impose unreasonable constraints on implementations. - ASIS 95 should be careful not to inherit some Ada-83-dependent features from the ASIS 1.1.1 Library model, if such features do not conform to Ada 95 standard. - ASIS Library should have the compiler-independent definition and it should be source-based; ASIS should work only with the content of the library but not with the history of the library. Note that source-based does not imply the existence of a text file. - The content of the ASIS Library handled by an ASIS implementation and processed by an Ada tool (ASIS application) should be determined by the ASIS implementation, but not by the compiler, moreover, ASIS implementation could be even a stand-alone tool (which does not require any compiler at all and which could handle the arbitrary collections of Ada sources). - ASIS Library should at least contain the consistent Compilable Compilation Units (see RM95. 10.1.4); Optionally, an implementation can choose to support inconsistent units and even units that are only syntactically legal. The semantics of ASIS operations dealing with such optional units must be well defined. - The content of the ASIS Library should be frozen from the Initialization till the Finalization of the ASIS Environment. That means that ASIS is to process the snapshots of the compilation environment of a compiler or of some set of Ada sources. - ASIS offers a post-compilation snapshot, but it is optional for an ASIS implementation to require compilation of units prior to ASIS initialization. The post-compilation view can be simulated through on-the-fly semantic analysis. Rationale and observations. Having a frozen environment/library during an invocation of ASIS is ideal and desired. However, ASIS 95 cannot make this a requirement because there is no reasonable way to enforce it. ASIS implementations that cannot recover from the effects of an ill-timed intrusive action can gracefully raise ASIS_Failed and report the reason through Status and Diagnosis operations. Similarly, ASIS 95 cannot assume a single version restriction applies within an Ada environment or Ada library, but it can within a single ASIS library. Different Ada libraries may contain different versions of units, but the assumption is that only a single version is made "visible" by some internal mapping or library search order, and that is the version constructed by ASIS. Every Ada implementation I know of offers multiple libraries with some (post-compilation) method for defining how units are selected for inclusion in a program. This is the same method a binder would use. Hence, I believe this assumption to be an invariant. This is one reason ASIS 95 needs a well defined model for consistent and inconsistent units. One library might contain a version of a consistent unit, and another might contain another version of the same unit that is inconsistent. Note that ASIS 83 and ASIS 95 do not offer specific queries to fetch versions of units. For the ASIS 95 standard, compatibility checking during ASIS can be optional but not a requirement for inclusion in the ASIS library. For some heavyweight implementations, construction of library contents could just be a lookup with no legality check. To require them to reanalyze the environment/library would be unreasonable. For other source analysis based implementations, it seems that the legality check could be performed only on demand AFTER opening a library. ASIS can require that no queries cause any update to the library. This rules out compilation (with code generation) from within ASIS but does not rule out an ASIS tool invoking a compiler through some other interface. 4.2 The ASIS_Libraries model ASIS_Libraries needs no semantic changes and only minor modification to commentary. Rationale: The ASIS_Libraries model supports all the issues and assumptions defined in section 4.1. 4.3 The ASIS_Compilation_Units model ASIS_Compilation_Units needs some additional queries, name changes, and removal of some queries that are based on concepts no longer supported in Ada 95. A complete list of these changes is presented in Appendix B. Key changes are discussed below. 4.4 Unit classification is expanded The Unit_Kinds enumeration type has been expanded to be more specific. The former literals: A_Subprogram_Declaration, A_Package_Declaration, A_Generic_Declaration, A_Generic_Instantiation, A_Subprogram_Body, A_Package_Body, have become: A_Procedure, A_Function, A_Package, A_Generic_Procedure, A_Generic_Function, A_Generic_Package, A_Procedure_Instance, A_Function_Instance, A_Package_Instance, A_Procedure_Renaming, A_Function_Renaming, A_Package_Renaming, A_Generic_Procedure_Renaming, A_Generic_Function_Renaming, A_Generic_Package_Renaming, A_Procedure_Body, A_Function_Body, A_Package_Body, Rationale: Now it does not require a call to Unit_Declaration to know that A_Subprogram is actually A_Procedure, or A_Generic_Instantiation is A_Package_Instance. The literal identifiers are shorter, more consise, and do not clash with any of the ASIS_Element_Kinds.Declaration_Kinds literals. The Unit_Trait_Kinds enumeration type has been added to classify public and private declarations, and bodies: type Unit_Trait_Kinds is ( -- 10.1.1 Not_A_Unit_Trait, -- A nil, nonexistent, or unknown unit trait. A_Public_Unit, -- library_unit_declaration or -- library_unit_renaming_declaration A_Private_Unit, -- private library_unit_declaration or -- private library_unit_renaming_declaration A_Unit_Body, -- library_unit_body A_Separate_Unit); -- subunit Rationale: The Unit_State_Kinds enumeration type has been added to classify the state of a unit contained in a library. See the next section. 4.5 Compilation Unit State The Boolean queries Is_Consistent and Is_Obsolete have been removed. Equivalent functionality is provided by the new Unit_State_Kind and the new Unit_State query. Rationale: ASIS 95 can represent the state of units with an enumeration type rather than with Boolean queries like Is_Consistent or Is_Obsolete. Is_Obsolete is redundant (= not Is_Consistent) and the concept of obsolete units is not expressed in Ada 95. Replacement of Boolean queries with enumeration kind values and queries follows the trend established for ASIS element classification. type Unit_State_Kinds is ( Not_A_State, -- The state of a nil or unknown unit A_Consistent_Unit, -- Consistent with all other units on which it -- semantically depends. Meets all legality -- rules within and across unit boundaries. An_Inconsistent_Unit, -- Not consistent with one or more units on -- which it semantically depends. Meets all -- legality rules within itself, but not -- across unit boundaries. A_Syntactically_Legal_Unit, -- Meets only the syntax rules A_Nonexistent_Unit); -- the state of a nonexistent unit ASIS syntax queries (ie Traverse_Element) should work correctly for consistent, inconsistent, and syntactically legal units. ASIS Semantic queries should work correctly for consistent units, and should work correctly for inconsistent units only within the unit's border. Semantic queries across the unit border of inconsistent units, and all semantic queries on syntactical legal units should be expected to raise ASIS_Failed. This will permit ASIS 95 client tools to deal with the possible states in a consistent manner. Implementation permissions: Each ASIS 95 implementation is allowed to support some subset (perhaps all) of the allowed unit states. An implementation that does not remove units made inconsistent by recompilation may choose to support consistent and inconsistent units. Alternatively, an ASIS implementation like GNAT-ASIS may choose to support *only* consistent units the environment. Terminology: The state of an ASIS unit is defined within the context of the ASIS library that contains it. An ASIS Library defines a single environment that determines a unit's state. The state of a unit is constant and does not change during the time the ASIS library is open. ASIS units that are the same (Asis.Compilation_Units.Is_Equal) may be contained in more than one ASIS library, and their state may be different due to differences in the semantic dependence relationships in the different enclosing libraries. The Ada 95 terms "consistent" and "legal" can be extended to be useful ASIS terms. An ASIS unit is "syntactically legal" if it meets only the syntax rules of Ada. An ASIS unit is "semantically legal" if it meets all the legality rules of Ada. A set of ASIS units is "consistent" if it meets the legality rules for consistent units defined in the Ada 95 RM 10.1.4(5). An ASIS unit is "consistent" with other units if it is "semantically legal" and the set, inclusive of itself and all units upon which it semantically depends, is "consistent". A consistent unit is available to be assigned or included in a partition. An ASIS unit is "inconsistent" with other units if the set, inclusive of itself and all units upon which it semantically depends, is not consistent. The inconsistent unit is syntactically legal and is semantically legal only within its compilation unit boundary. There is no guarantee that the unit is semantically legal across its compilation unit boundary. An inconsistent unit cannot be included in a partition. 4.6 Semantic Dependency Relationships 4.6.1 Three compilation order queries Related_Compilation_Units, Compilation_Order, and Recompilation_Order have been merged into one new query called Semantic_Dependence_Order. Rationale: The compilation order queries from ASIS 1.1.1 did not fit the Ada 95 terminology nor the new semantic dependence definitions. There is not concept of compilation or recompilation order in Ada 95. Implementation of the old model does not make sense for some lightweight compilation systems. Functionality of the new relationship query Semantic_Dependence_Order defines consistent units to be ordered such that there are no forward semantic dependences. This is consistent with Ada 95 terminology (Ada 95 RM 10.1.4(2)). No functionality will be lost by this merge. Related_Compilation_Units and Compilation_Order were different only in the order returned in the existing units list. Recompilation_Order can be inferred by using the new Semantic_Dependence_Order with the Dependents, Direct_Dependents, or Descendants relations and then querying the Unit_State of the resulting units. 4.6.2 Four unit relationship filter queries have been deleted: Direct_Supporters Supporters Direct_Dependents Dependents Rationale: Similar functionality can be implemented with the new Semantic_Dependence_Order that properly fits the Ada 95 terminology and dependence definitions. Appendix A. A synopsis of the ASIS 2.0.B packages and their queries package Asis_Environment is function Asis_Version return Asis.Asis_String; function Asis_Vendor return Asis.Asis_String; function Asis_Vendor_Version return Asis.Asis_String; function Asis_Vendor_Information return Asis.Asis_String; function Is_Initialized return Boolean; procedure Initialize function Is_Finalized return Boolean; procedure Finalize function Status return Asis.Errors.Error_Kinds; function Diagnosis return Asis.Asis_String; procedure Set_Status function Is_Formal_Parameter_Named_Notation_Supported return Boolean; function Default_In_Mode_Supported return Boolean; function Generic_Parameters_Include_Defaults return Boolean; function Generic_Parameters_Normalized return Boolean; function Components_Normalized return Boolean; function Is_Prefix_Call_Supported return Boolean; function Function_Call_Parameters_Include_Defaults return Boolean; function Function_Call_Parameters_Normalized return Boolean; function Call_Parameters_Include_Defaults return Boolean; function Call_Parameters_Normalized return Boolean; function Discriminant_Associations_Include_Defaults return Boolean; function Discriminant_Associations_Normalized return Boolean; function Is_Line_Number_Supported return Boolean; function Is_Span_Column_Position_Supported return Boolean; function Is_Commentary_Supported return Boolean; function Attributes_Are_Supported return Boolean; function Minimal_Inconsistent_Units return Boolean; package Asis_Libraries is function Default_Name return Asis.Asis_String; function Default_Parameters return Asis.Asis_String; procedure Associate procedure Open (Library : in out Asis.Library); procedure Close (Library : in out Asis.Library); procedure Dissociate (Library : in out Asis.Library); function Is_Equal (Left : in Asis.Library; function Is_Identical (Left : in Asis.Library; function Exists (Library : in Asis.Library) return Boolean; function Is_Open (Library : in Asis.Library) return Boolean; function Has_Associations (Library : in Asis.Library) return Boolean; function Name (Library : in Asis.Library) return Asis.Asis_String; function Parameters (Library : in Asis.Library) return Asis.Asis_String; function Debug_Image (Library : in Asis.Library) return Asis.Asis_String; package Asis_Compilation_Units is function Unit_Kind (Compilation_Unit : in Asis.Compilation_Unit) function Unit_Trait (Compilation_Unit : in Asis.Compilation_Unit) function Unit_State (Compilation_Unit : in Asis.Compilation_Unit) function Unit_Origin (Compilation_Unit : in Asis.Compilation_Unit) function Enclosing_Library (Compilation_Unit : in Asis.Compilation_Unit) function Library_Unit_Declaration (Name : in String; function Compilation_Unit_Body (Name : in String; function Library_Unit_Declarations (Library : in Asis.Library) function Compilation_Unit_Bodies (Library : in Asis.Library) function Compilation_Units (Library : in Asis.Library) function Children (Library_Unit : in Asis.Compilation_Unit) function Children (Library_Unit : in Asis.Compilation_Unit; function Parent_Declaration function Parent_Declaration function Corresponding_Declaration function Corresponding_Declaration function Corresponding_Body function Corresponding_Body function Compilation_Pragmas (Compilation_Unit : in Asis.Compilation_Unit) function Is_Nil (Right : in Asis.Compilation_Unit) function Is_Nil (Right : in Asis.Compilation_Unit_List) function Is_Equal (Left : in Asis.Compilation_Unit; function Is_Identical (Left : in Asis.Compilation_Unit; function Name (Compilation_Unit : in Asis.Compilation_Unit) return String; function Unique_Name (Compilation_Unit : in Asis.Compilation_Unit) function Exists (Compilation_Unit : in Asis.Compilation_Unit) function Can_Be_Main_Program (Compilation_Unit : in Asis.Compilation_Unit) function Text_Name (Compilation_Unit : in Asis.Compilation_Unit) function Text_Form (Compilation_Unit : in Asis.Compilation_Unit) function Object_Name (Compilation_Unit : in Asis.Compilation_Unit) function Object_Form (Compilation_Unit : in Asis.Compilation_Unit) function Compilation_Command_Line_Options function Time_Of_Last_Update (Compilation_Unit : in Asis.Compilation_Unit) function Compilation_Cpu_Time (Compilation_Unit : in Asis.Compilation_Unit) function Has_Attribute (Compilation_Unit : in Asis.Compilation_Unit; function Attribute_Value_Delimiter return Asis.Asis_String; function Attribute_Values function Attribute_Time function Enclosing_Compilation_Unit (Element : in Asis.Element) function Unit_Declaration (Compilation_Unit : in Asis.Compilation_Unit) function Context_Clause_Elements function Named_Units (Clause : in Asis.Context_Clause) function Subunits (Parent_Unit : in Asis.Compilation_Unit) function Subunits (Parent_Unit : in Asis.Compilation_Unit; function Subunit_Parent (Subunit : in Asis.Compilation_Unit) function Subunit_Parent (Subunit : in Asis.Compilation_Unit; function Subunit_Ancestor (Subunit : in Asis.Compilation_Unit) function Subunit_Ancestor (Subunit : in Asis.Compilation_Unit; function Semantic_Dependence_Order function Elaboration_Order function Debug_Image (Compilation_Unit : in Asis.Compilation_Unit) 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 Declaration_Origin (Declaration : in Asis.Declaration) function Mode_Kind (Declaration : in Asis.Declaration) function Default_Kind (Declaration : in Asis.Generic_Formal_Parameter) function Definition_Kind (Definition : in Asis.Definition) function Trait_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_Block_Statement (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_Variable_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 package Asis_Ids is function Is_Nil (Right : in Asis.Id) return Boolean; function Is_Nil (Right : in Asis.Id_List) return Boolean; function Is_Equal (Left : in Asis.Id; function Is_Identical (Left : in Asis.Id; function Create_Id (Element : in Asis.Element) return Asis.Id; function Create_Element (Id : in Asis.Id; function Create_Id_Segments (Element : in Asis.Element) function Create_Id_Segments (Id : in Asis.Id) function Create_Element (List : in Asis.Id_Segment_List; function Create_Id (List : in Asis.Id_Segment_List) return Asis.Id; function Debug_Image (Id : in Asis.Id) return Asis.Asis_String; function Debug_Image (Segment : in Asis.Id_Segment) return Asis.Asis_String; package Asis_Text is function First_Line_Number (Element : in Asis.Element) function Last_Line_Number (Element : in Asis.Element) function Element_Span (Element : in Asis.Element) return Asis.Span; function Compilation_Unit_Span (Element : in Asis.Element) function Compilation_Span (Element : in Asis.Element) function Is_Nil (Right : in Asis.Line) return Boolean; function Is_Nil (Right : in Asis.Line_List) return Boolean; function Is_Equal (Left : in Asis.Line; function Is_Identical (Left : in Asis.Line; function Length (Line : in Asis.Line) return Asis.Character_Position; function Lines (Element : in Asis.Element) return Asis.Line_List; function Lines (Element : in Asis.Element; function Lines (Element : in Asis.Element; function Image_Delimiter return Asis.Asis_String; function Image (Element : in Asis.Element) return Asis.Asis_String; function Image (Line : in Asis.Line) return Asis.Asis_String; function Non_Comment_Image (Line : in Asis.Line) return Asis.Asis_String; function Comment_Image (Line : in Asis.Line) return Asis.Asis_String; function Is_Text_Available (Element : in Asis.Element) return Boolean; function Debug_Image (Line : in Asis.Line) return Asis.Asis_String; package Asis_Portable_Transfer is package Asis_Data_Decomposition is function Type_Model_Kind (Type_Definition : in Asis.Type_Definition) function Type_Model_Kind (Component : in Record_Component) function Type_Model_Kind (Component : in Array_Component) function Is_Nil (Right : in Record_Component) return Boolean; function Is_Nil (Right : in Array_Component) return Boolean; function Is_Equal (Left : in Record_Component; function Is_Equal (Left : in Array_Component; function Is_Identical (Left : in Record_Component; function Is_Identical (Left : in Array_Component; function Is_Array (Component : in Record_Component) return Boolean; function Is_Array (Component : in Array_Component) return Boolean; function Is_Record (Component : in Record_Component) return Boolean; function Is_Record (Component : in Array_Component) return Boolean; function Done (Iterator : in Array_Component_Iterator) return Boolean; procedure Next (Iterator : in out Array_Component_Iterator); procedure Reset (Iterator : in out Array_Component_Iterator); function Array_Index (Iterator : in Array_Component_Iterator) function Array_Indexes (Iterator : in Array_Component_Iterator) function Discriminant_Components (Type_Definition : in Asis.Type_Definition) function Discriminant_Components (Component : in Record_Component) function Discriminant_Components (Component : in Array_Component) function Record_Components (Type_Definition : in Asis.Type_Definition) function Record_Components (Component : in Record_Component) function Record_Components (Component : in Array_Component) function Record_Components function Record_Components function Record_Components function Array_Components (Type_Definition : in Asis.Type_Definition) function Array_Components (Component : in Record_Component) function Array_Components (Component : in Array_Component) function Array_Iterator (Component : in Array_Component) function Component_Data_Stream function Component_Data_Stream function Component_Data_Stream function Component_Data_Stream function Component_Declaration (Component : in Record_Component) function Component_Indication (Component : in Array_Component) function All_Named_Components (Type_Definition : in Asis.Type_Definition) function Array_Length (Component : in Record_Component) function Array_Length (Component : in Array_Component) function Array_Length (Component : in Record_Component; function Array_Length (Component : in Array_Component; function Size (Type_Definition : in Asis.Type_Definition) function Size (Component : in Record_Component) return Asis.Asis_Natural; function Size (Component : in Array_Component) return Asis.Asis_Natural; function Size (Type_Definition : in Asis.Type_Definition; function Position (Component : in Record_Component) function Position (Component : in Array_Component; function Position (Component : in Array_Component; function Position (Iterator : in Array_Component_Iterator) function First_Bit (Component : in Record_Component) function First_Bit (Component : in Array_Component; function First_Bit (Component : in Array_Component; function First_Bit (Iterator : in Array_Component_Iterator) function Last_Bit (Component : in Record_Component) function Last_Bit (Component : in Array_Component; function Last_Bit (Component : in Array_Component; function Last_Bit (Iterator : in Array_Component_Iterator) function Portable_Constrained_Subtype function Construct_Artificial_Data_Stream Appendix B. A list of the changes evolving ASIS 1.1.1 into ASIS 2.0.B. 1 ----------------------------------------------------------------------- 2 package ASIS_Errors is a new ASIS package 3 ----------------------------------------------------------------------- 4 5 Changes to package Asis_Libraries. 6 7 ----------------------------------------------------------------------- 8 package Operations was deleted. 9 ----------------------------------------------------------------------- 10 11 Changes to package Asis_Compilation_Units. 12 13 ----------------------------------------------------------------------- 14 function Unit_Kind was called Kind. The return type Unit_Kinds was 15 called Compilation_Unit_Kinds. 16 ----------------------------------------------------------------------- 17 function Unit_Trait is new. 18 ----------------------------------------------------------------------- 19 function Unit_State is new. 20 function Unit_State replaces functionality of the deleted functions 21 Is_Consistent and Is_Obsolete. 22 ----------------------------------------------------------------------- 23 function Unit_Origin was called Origin. The return type Unit_Origins 24 was called Compilation_Unit_Origins. 25 ----------------------------------------------------------------------- 26 function Library_Unit_Declaration was called Library_Unit. 27 ----------------------------------------------------------------------- 28 function Compilation_Unit_Body was called Secondary_Unit. 29 ----------------------------------------------------------------------- 30 function Library_Unit_Declarations was called Library_Units. 31 ----------------------------------------------------------------------- 32 function Compilation_Unit_Bodies was called Secondary_Units. 33 ----------------------------------------------------------------------- 34 function Children is new. 35 ----------------------------------------------------------------------- 36 function Children is new. 37 ----------------------------------------------------------------------- 38 function Corresponding_Declaration was called Corresponding_Library_Unit. 39 ----------------------------------------------------------------------- 40 function Corresponding_Body was called Corresponding_Secondary_Unit. 41 ----------------------------------------------------------------------- 42 function Body_Is_Optional was deleted: Bodies are not optional. 43 ----------------------------------------------------------------------- 44 function Text_Name was Text_File_Name. Ada 95 has no concept of 45 source or text file. 46 ----------------------------------------------------------------------- 47 function Text_Form was Text_File_Form. Ada 95 has no concept of 48 source or text file. 49 ----------------------------------------------------------------------- 50 function Object_Name was Object_File_Name. 51 ----------------------------------------------------------------------- 52 function Object_Form was Object_File_Form. 53 ----------------------------------------------------------------------- 54 function Named_Units was Referenced_Units. 55 ----------------------------------------------------------------------- 56 function Is_Subunit was deleted. Reason: SECONDARY. Use Unit_Kind. 57 ----------------------------------------------------------------------- 58 DEPENDENCES replaces COMPILATION ORDER terminology. 59 ----------------------------------------------------------------------- 60 The term Consistent replaces the term Existing in the type Relationship. 61 ----------------------------------------------------------------------- 62 function Semantic_Dependence_Order was Related_Compilation_Units. 63 ----------------------------------------------------------------------- 64 function Compilation_Order was deleted. Reason: REPLACED by 65 functionality of the new relationship query Semantic_Dependence_Order 66 that defines consistent units to be ordered such that there are no 67 forward semantic dependences. 68 ----------------------------------------------------------------------- 69 function Recompilation_Order was deleted. Reason: REPLACED by 70 functionality of the new relationship query Semantic_Dependence_Order 71 that provides inconsistent units. 72 ----------------------------------------------------------------------- 73 function Direct_Supporters was deleted. Reason: SECONDARY. Similar 74 functionality can be implemented with the new Semantic_Dependence_Order. 75 ----------------------------------------------------------------------- 76 function Supporters was deleted. Reason: SECONDARY. Similar 77 functionality can be implemented with the new Semantic_Dependence_Order. 78 ----------------------------------------------------------------------- 79 function Direct_Dependents was deleted. Reason: SECONDARY. Similar 80 functionality can be implemented with the new Semantic_Dependence_Order. 81 ----------------------------------------------------------------------- 82 function Dependents was deleted. Reason: SECONDARY. Similar 83 functionality can be implemented with the new Semantic_Dependence_Order. 84 ----------------------------------------------------------------------- 85 function Is_Obsolete was deleted. Reason: REPLACED. 86 function Is_Consistent was deleted. Reason: REPLACED. 87 Equivalent functionality of the deleted functions Is_Consistent and 88 Is_Obsolete is provided by the new function Unit_State. 89 ----------------------------------------------------------------------- 90 package Operations was deleted. 91 ----------------------------------------------------------------------- 92 93 Changes to package Asis_Elements. 94 95 ----------------------------------------------------------------------- 96 The Element_Kinds Hierarchy is new. 97 ----------------------------------------------------------------------- 98 All Kind queries are moved here to Asis.Elements. 99 ----------------------------------------------------------------------- 100 function Defining_Name_Kind is new. 101 ----------------------------------------------------------------------- 102 function Declaration_Kind was Kind and moved from Asis.Declarations. 103 ----------------------------------------------------------------------- 104 function Declaration_Origin was Origin and moved from Asis.Declarations. 105 ----------------------------------------------------------------------- 106 function Mode_Kind moved from Asis.Declarations. 107 ----------------------------------------------------------------------- 108 function Default_Kind was 109 Generic_Formal_Subprogram_Default_Kind and moved from Asis.Declarations. 110 ----------------------------------------------------------------------- 111 function Definition_Kind is new. 112 ----------------------------------------------------------------------- 113 function Trait_Kind is new. 114 ----------------------------------------------------------------------- 115 function Type_Kind was Kind and moved from Asis.Definitions. 116 ----------------------------------------------------------------------- 117 function Formal_Type_Kind is new. 118 ----------------------------------------------------------------------- 119 function Access_Type_Kind is new. 120 ----------------------------------------------------------------------- 121 function Root_Type_Kind is new. 122 ----------------------------------------------------------------------- 123 function Expression_Kind was Kind and moved from Asis.Expressions. 124 ----------------------------------------------------------------------- 125 function Operator_Kind moved from Asis.Expressions. 126 ----------------------------------------------------------------------- 127 function Attribute_Kind moved from Asis.Expressions. 128 ----------------------------------------------------------------------- 129 function Association_Kind is new. 130 ----------------------------------------------------------------------- 131 function Statement_Kind was Kind and moved from Asis.Statements. 132 ----------------------------------------------------------------------- 133 function Alternative_Kind is new. 134 ----------------------------------------------------------------------- 135 function Clause_Kind is new. 136 ----------------------------------------------------------------------- 137 function Representation_Clause_Kind moved from Asis.Clauses. 138 ----------------------------------------------------------------------- 139 function Is_Part_Of_Implicit moved from Asis.Declarations. 140 ----------------------------------------------------------------------- 141 function Is_Part_Of_Derived moved from Asis.Declarations. 142 ----------------------------------------------------------------------- 143 function Is_Part_Of_Instance moved from Asis.Declarations. 144 ----------------------------------------------------------------------- 145 function Enclosing_Generic was moved from Asis.Declarations. 146 ----------------------------------------------------------------------- 147 function Corresponding_Pragmas was called Associated_Pragmas. 148 ----------------------------------------------------------------------- 149 function Is_Predefined for pragmas was deleted. Reason: HIERARCHY. 150 ----------------------------------------------------------------------- 151 function Hash was moved out of the nested package Operations. 152 ----------------------------------------------------------------------- 153 package Operations was deleted. Kind declaration in new package. 154 ----------------------------------------------------------------------- 155 156 Changes to package Asis_Declarations. 157 158 ----------------------------------------------------------------------- 159 function Kind called Declaration_Kind and moved to Asis.Elements 160 ----------------------------------------------------------------------- 161 function Origin called Declaration_Origin and moved to Asis.Elements 162 ----------------------------------------------------------------------- 163 Name is a new query specific to A_Defining_Name elements 164 ----------------------------------------------------------------------- 165 function Position_Number_Image was moved from Asis.Expressions and 166 works on A_Defining_Name elements only. 167 ----------------------------------------------------------------------- 168 function Representation_Value_Image was moved from Asis.Expressions and 169 works on A_Defining_Name elements only. 170 ----------------------------------------------------------------------- 171 Defining_Prefix is a new query 172 ----------------------------------------------------------------------- 173 Defining_Selector is a new query 174 ----------------------------------------------------------------------- 175 function Discriminant_Part is a new query; an intermediate step 176 before the Asis.Definitions.Discriminants query. 177 ----------------------------------------------------------------------- 178 Type_Declaration_Definition was deleted. Reason: REPLACED. 179 The new query Type_Declaration_View provides equivalent functionality 180 with added definition for task and protected elements. 181 ----------------------------------------------------------------------- 182 Object_Declaration_Definition was deleted. Reason: REPLACED. 183 The new query Object_Declaration_View provides equivalent functionality 184 with added definition for single task and single protected elements 185 ----------------------------------------------------------------------- 186 function Is_Initialized was deleted. Reason SECONDARY. The presence 187 of an initial value expression can be determined by Initial_Value. 188 ----------------------------------------------------------------------- 189 function Is_Character_Literal was deleted. Reason HIERARCHY. 190 ----------------------------------------------------------------------- 191 function Declaration_Subtype_Mark is a new query replacing 192 parts of Object_Declaration_Definition and Type_Mark functionality. 193 ----------------------------------------------------------------------- 194 function Is_Variable was deleted. Reason HIERARCHY. 195 function Is_Constant was deleted. Reason HIERARCHY. 196 function Is_Type_Declaration was deleted. Reason HIERARCHY. 197 function Is_Private was deleted. Reason HIERARCHY and ILL_DEFINED. 198 function Is_Limited was deleted Reason HIERARCHY and ILL_DEFINED. 199 ----------------------------------------------------------------------- 200 function Is_Discriminated was deleted. Reason REPLACED. 201 ----------------------------------------------------------------------- 202 function Discriminants on A_Declaration was deleted. Reason REPLACED. 203 Discriminants are obtained from A_Declaration elements using 204 Asis.Declarations.Discriminant_Part and the new function Discriminants 205 that operates on A_Known_Discriminant_Part element. 206 ----------------------------------------------------------------------- 207 function Is_Part_Of_Implicit moved to Asis.Elements. 208 function Is_Part_Of_Derived moved to Asis.Elements. 209 ----------------------------------------------------------------------- 210 function Implicit_Derived_Subprograms moved to Asis.Definitions. 211 function Implicit_Predefined_Operators moved to Asis.Definitions. 212 function Implicit_Attribute_Functions moved to Asis.Definitions. 213 function Type_Operators moved to Asis.Definitions. 214 ----------------------------------------------------------------------- 215 function Base_Type is now called Corresponding_First_Subtype and 216 works on A_Declaration elements returning A_Declaration. 217 ----------------------------------------------------------------------- 218 function Last_Constraint is now called Corresponding_Last_Constraint 219 and works on A_Declaration elements returning A_Declaration. 220 ----------------------------------------------------------------------- 221 function Last_Subtype is now called Corresponding_Last_Subtype 222 and works on A_Declaration elements returning A_Declaration. 223 ----------------------------------------------------------------------- 224 Associated_Representation_Clauses is called 225 Corresponding_Representation_Clauses and moved to Asis.Declarations 226 ----------------------------------------------------------------------- 227 Specification_Subtype_Definition replaces Loop_Parameter_Range 228 and works on entry index specification elements 229 ----------------------------------------------------------------------- 230 function Is_Specification was deleted. Reason HIERARCHY. 231 function Is_Package was deleted. Reason HIERARCHY. 232 function Is_Task was deleted. Reason HIERARCHY. 233 function Is_Procedure was deleted. Reason HIERARCHY. 234 function Is_Function was deleted. Reason HIERARCHY. 235 function Is_Subprogram was deleted. Reason HIERARCHY. 236 ----------------------------------------------------------------------- 237 function Parameter_Mode_Kind moved to Asis.Elements and is now called 238 Mode_Kind. 239 ----------------------------------------------------------------------- 240 function Parameters is now called Parameter_Profile. 241 ----------------------------------------------------------------------- 242 function Return_Type is now called Result_Profile. 243 An_Enumeration_Literal_Specification is not appropriate. 244 ----------------------------------------------------------------------- 245 function Subprogram_Body_Block was deleted. Reason REPLACED. 246 function Package_Body_Block was deleted. Reason REPLACED. 247 function Task_Body_Block was deleted. Reason REPLACED. 248 The new query function Body_Block_Statement supplies the equivalent 249 combined functionality. 250 ----------------------------------------------------------------------- 251 function Body_Block_Statement is a new query that supplies the 252 equivalent combined functionality of the replaced queries: 253 Subprogram_Body_Block, Package_Body_Block, and Task_Body_Block. 254 ----------------------------------------------------------------------- 255 Changed name; Corresponding_Subprogram_Derivation was 256 Subprogram_Derivation 257 ----------------------------------------------------------------------- 258 function Is_Renaming_Declaration was deleted. Reason HIERARCHY. 259 ----------------------------------------------------------------------- 260 Corresponding_Base_Entity is the new name for Renamed_Base_Entity 261 ----------------------------------------------------------------------- 262 function Is_Interface_Present was deleted. Reason REPLACED. 263 The new query Type_Declaration_View provides equivalent functionality. 264 ----------------------------------------------------------------------- 265 function Task_Declaration_Declarative_Items is deleted. Reason REPLACED. 266 function Entry_Declarations was deleted. Reason REPLACED and REDUNDANT. 267 Equivalent functionality is provided by the new Asis.Definitions 268 functions Visible_Part_Items and Private_Part_Items that operate 269 on A_Task_Definition elements. 270 ----------------------------------------------------------------------- 271 function Protected_Operation_Items is a new query. 272 ----------------------------------------------------------------------- 273 function Entry_Index is now called Entry_Family_Definition 274 ----------------------------------------------------------------------- 275 function Entry_Index_Specification is a new query. 276 ----------------------------------------------------------------------- 277 function Entry_Barrier is a new query. 278 ----------------------------------------------------------------------- 279 function Subunit is now called Corresponding_Subunit. 280 ----------------------------------------------------------------------- 281 function Body_Stub is now called Corresponding_Body_Stub. 282 ----------------------------------------------------------------------- 283 function Is_Generic was deleted. Reason HIERARCHY. 284 ----------------------------------------------------------------------- 285 function Is_Part_Of_Instance moved to Asis.Elements. 286 ----------------------------------------------------------------------- 287 function Generic_Formal_Parameters is called Generic_Formal_Part. 288 ----------------------------------------------------------------------- 289 function Enclosing_Generic moved to Asis.Elements. 290 ----------------------------------------------------------------------- 291 function Is_Generic_Instantiation was deleted. Reason HIERARCHY. 292 ----------------------------------------------------------------------- 293 function Generic_Parameters is called Generic_Actual_Part. 294 ----------------------------------------------------------------------- 295 function Is_Generic_Formal was deleted. Reason HIERARCHY. 296 ----------------------------------------------------------------------- 297 function Generic_Formal_Subprogram_Default_Kind is now called 298 Default_Kind and moved to Asis.Elements. 299 ----------------------------------------------------------------------- 300 function Generic_Formal_Subprogram_Default is called 301 Formal_Subprogram_Default. 302 ----------------------------------------------------------------------- 303 package Operations was deleted. Kind declaration in new package. 304 ----------------------------------------------------------------------- 305 306 Changes to package Asis_Definitions. 307 308 ----------------------------------------------------------------------- 309 function Kind called Definition_Kind and moved to Asis.Elements 310 ----------------------------------------------------------------------- 311 function Type_Definition_Declaration is deleted. Reason REDUNDANT. 312 Asis.Elements.Enclosing_Element provides equivalent functionality. 313 ----------------------------------------------------------------------- 314 function Implicit_Predefined_Operators moved from Asis.Declarations. 315 ----------------------------------------------------------------------- 316 function Implicit_Attribute_Functions moved from Asis.Declarations. 317 ----------------------------------------------------------------------- 318 function Type_Operators moved from Asis.Declarations. 319 ----------------------------------------------------------------------- 320 function Parent_Subtype_Indication is new name of Parent_Subtype. 321 ----------------------------------------------------------------------- 322 function Record_Definition is a new query. 323 ----------------------------------------------------------------------- 324 function Corresponding_Derived_Definition is a new query. 325 ----------------------------------------------------------------------- 326 function Implicit_Derived_Subprograms moved from Asis.Declarations. 327 ----------------------------------------------------------------------- 328 function Corresponding_Parent_Subtype was called Parent_Type and 329 returns a declaration element. Unwinds one step. 330 ----------------------------------------------------------------------- 331 function Corresponding_Ground_Type was called Ground_Type and 332 returns a declaration element. 333 ----------------------------------------------------------------------- 334 function Corresponding_Type_Structure was called Type_Structure and 335 returns a declaration element. 336 ----------------------------------------------------------------------- 337 function Is_Predefined on type_definition was deleted. Reason SECONDARY. 338 ----------------------------------------------------------------------- 339 function Enumeration_Literal_Names was deleted. Reason REDUNDANT and 340 SECONDARY. 341 ----------------------------------------------------------------------- 342 function Mod_Static_Expression is a new query. 343 ----------------------------------------------------------------------- 344 function Real_Type_Constraint was deleted. Reason REPLACED. 345 Equivalent functionality is provided by new functions Digits_Expression, 346 Delta_Expression, and Real_Range_Constraint. 347 ----------------------------------------------------------------------- 348 function Digits_Expression was called Floating_Accuracy_Definition. 349 ----------------------------------------------------------------------- 350 function Delta_Expression was called Fixed_Accuracy_Definition. 351 ----------------------------------------------------------------------- 352 function Real_Range_Constraint was called Floating_Point_Range_Constraint. 353 ----------------------------------------------------------------------- 354 function Is_Constrained_Array was deleted. Reason HIERARCHY. 355 ----------------------------------------------------------------------- 356 function Index_Constraint was deleted. Reason REPLACED. The new query 357 Discrete_Subtype_Definitions provides equivalent functionality. 358 ----------------------------------------------------------------------- 359 function Discrete_Subtype_Definitions is a new query. 360 ----------------------------------------------------------------------- 361 function Array_Component_Definition was called 362 Component_Subtype_Indication. 363 ----------------------------------------------------------------------- 364 function Is_Discriminated was deleted. Reason REPLACED. 365 Presence of discriminants can be determined with the new function 366 Asis.Declarations.Discriminant_Part. 367 ----------------------------------------------------------------------- 368 function Discriminants on A_Type_Definition was deleted. Reason REPLACED. 369 Discriminants are obtained from A_Declaration elements using 370 Asis.Declarations.Discriminant_Part and the new function Discriminants 371 that operates on A_Known_Discriminant_Part element. 372 ----------------------------------------------------------------------- 373 function Access_To was deleted. Reason REPLACED. Equivalent 374 functionality is provided by new queries Access_To_Object_Definition and 375 Access_To_Subprogram_Parameter_Profile. 376 ----------------------------------------------------------------------- 377 function Access_To_Object_Definition is a new query. 378 ----------------------------------------------------------------------- 379 function Access_To_Subprogram_Parameter_Profile is a new query. 380 ----------------------------------------------------------------------- 381 function Access_To_Function_Result_Profile is a new query. 382 ----------------------------------------------------------------------- 383 function Subtype_Definition_Subtype_Indication was deleted. Reason 384 REPLACED. Changes to the element kind hierarchy along with removal of 385 Type_Definition_Declaration allow this unnecessary kludge to be removed. 386 ----------------------------------------------------------------------- 387 function Subtype_Mark was called Type_Mark. 388 ----------------------------------------------------------------------- 389 function Constraint_Kinds was moved to Asis.Elements. 390 ----------------------------------------------------------------------- 391 function Choice_Kind was deleted. Reason REPLACED. 392 function Choice_Simple_Expression was deleted. Reason REPLACED. 393 function Choice_Discrete_Range was deleted. Reason REPLACED. 394 function Choice_Name was deleted. Reason REPLACED. 395 Queries that formely returned A_Choice were changed to return either 396 An_Expression or A_Definiton, bypassing the extra A_Choice element. 397 The new functionality makes these choice queries obsolete. 398 ----------------------------------------------------------------------- 399 function Discrete_Range_Kind was moved to Asis.Elements. 400 ----------------------------------------------------------------------- 401 function Discriminant_Simple_Names was changed to 402 Discriminant_Selector_Names and moved to Asis.Expressions. 403 ----------------------------------------------------------------------- 404 function Discriminant_Expression moved to Asis.Expressions. 405 ----------------------------------------------------------------------- 406 function Component_Subtype_Indication is a new query. 407 ----------------------------------------------------------------------- 408 function Discriminants is a new query. 409 ----------------------------------------------------------------------- 410 function Record_Components operates on A_Record_Definition elements 411 rather than A_Type_Definition elements. 412 ----------------------------------------------------------------------- 413 function Implicit_Components operates on A_Record_Definition elements 414 rather than A_Type_Definition elements. 415 ----------------------------------------------------------------------- 416 function Component_Kind was deleted. Reason HIERARCHY. 417 ----------------------------------------------------------------------- 418 function Discriminant_Direct_Name was called 419 Corresponding_Discriminant_Simple_Name. 420 ----------------------------------------------------------------------- 421 function Ancestor_Subtype_Indication is a new query. 422 ----------------------------------------------------------------------- 423 function Visible_Part_Items is a new query. 424 ----------------------------------------------------------------------- 425 function Private_Part_Items is a new query. 426 ----------------------------------------------------------------------- 427 function Is_Private_Present is a new query. 428 ----------------------------------------------------------------------- 429 package Operations was deleted. Kind declaration in new package. 430 ----------------------------------------------------------------------- 431 432 Changes to package Asis_Expressions. 433 434 ----------------------------------------------------------------------- 435 function Kind is called Expression_Kind and moved to Asis.Elements 436 ----------------------------------------------------------------------- 437 function Corresponding_Expression_Type was called Expression_Type and 438 now returns a declaration rather than a definition (type_definition). 439 ----------------------------------------------------------------------- 440 function Is_Universal was deleted. Reason HIERARCHY. 441 ----------------------------------------------------------------------- 442 function Expression_Associated_Type was deleted. Reason SECONDARY. 443 function Is_Static is deleted. Reason ILL_DEFINED. 444 Static_Value is called Value and works on string and numeric 445 literals only. Former Static_Value function not well defined. 446 ----------------------------------------------------------------------- 447 function Name only operates on An_Expression elements. 448 The new query Asis.Declarations.Name works on A_Defining_Name elements. 449 ----------------------------------------------------------------------- 450 function References was deleted. Reason SECONDARY. 451 ----------------------------------------------------------------------- 452 function Is_Referenced was deleted. Reason SECONDARY. 453 ----------------------------------------------------------------------- 454 function Corresponding_Name_Definition was called Name_Definition and 455 the functional semantics and appropriate elements have changed. 456 ----------------------------------------------------------------------- 457 function Corresponding_Name_Definition_List was called 458 Name_Definition_List and the functional semantics and appropriate 459 elements have changed. 460 ----------------------------------------------------------------------- 461 function Corresponding_Name_Declaration was called Name_Declaration and 462 the functional semantics and appropriate elements have changed. 463 ----------------------------------------------------------------------- 464 function Operator_Kind moved to Asis.Elements 465 ----------------------------------------------------------------------- 466 function Subprogram_Derivation was deleted. Reason REDUNDANT. 467 ----------------------------------------------------------------------- 468 function Selection_Kind was deleted. Reason REPLACED and HIERARCHY. 469 ----------------------------------------------------------------------- 470 function Named_Packages was deleted. Reason REPLACED. 471 The new query Asis.Clauses.Clause_Names provides equivalent functionaliy. 472 ----------------------------------------------------------------------- 473 function Attribute_Designator_Kind moved to Asis.Elements and is now 474 called Attribute_Kind. 475 ----------------------------------------------------------------------- 476 function Is_Literal was deleted. Reason HIERARCHY. 477 ----------------------------------------------------------------------- 478 function Position_Number_Image was moved to Asis.Declarations and 479 works on A_Defining_Name elements only. 480 function Representation_Value_Image was moved to Asis.Declarations and 481 works on A_Defining_Name elements only. 482 The query Corresponding_Name_Definition given A_Character_Literal or 483 An_Enumeration_Literal elements will provide A_Defining_Name appropriate 484 for Position_Number_Image or Representation_Value_Image. 485 ----------------------------------------------------------------------- 486 function Record_Component_Associations was called Components. 487 ----------------------------------------------------------------------- 488 function Extension_Aggregate_Expression is a new query. 489 ----------------------------------------------------------------------- 490 function Array_Component_Associations is a new query. 491 ----------------------------------------------------------------------- 492 function Formal_Parameter was moved from Asis.Statements. 493 ----------------------------------------------------------------------- 494 function Actual_Parameter was moved from Asis.Statements. 495 ----------------------------------------------------------------------- 496 function Discriminant_Selector_Names was called 497 Discriminant_Simple_Names and moved from Asis.Definitions. 498 ----------------------------------------------------------------------- 499 function Discriminant_Expression moved from Asis.Definitions. 500 ----------------------------------------------------------------------- 501 function Is_Parameter_Association was deleted. Reason HIERARCHY. 502 ----------------------------------------------------------------------- 503 function Special_Operation_Kind was deleted. Reason REPLACED and 504 HIERARCHY. 505 ----------------------------------------------------------------------- 506 function Special_Operation_Left_Hand_Side was deleted. Reason REPLACED. 507 The new queries Short_Circuit_Operation_Left_Expression and 508 Membership_Test_Expression provide equivalent functionality. 509 ----------------------------------------------------------------------- 510 function Short_Circuit_Operation_Left_Expression is a new query. 511 ----------------------------------------------------------------------- 512 function Short_Circuit_Operation_Right_Expression was called 513 Special_Operation_Right_Hand_Side. 514 ----------------------------------------------------------------------- 515 function Membership_Test_Expression is a new query. 516 ----------------------------------------------------------------------- 517 function In_Range_Operation_Right_Hand_Side was deleted. Reason REPLACED. 518 The new query Membership_Test_Range provides equivalent functionality. 519 ----------------------------------------------------------------------- 520 function In_Type_Operation_Right_Hand_Side was deleted. Reason REPLACED. 521 The new query Membership_Test_Subtype_Mark provides equivalent 522 functionality. 523 ----------------------------------------------------------------------- 524 function Converted_Or_Qualified_Subtype_Mark was called Type_Mark. 525 ----------------------------------------------------------------------- 526 function Allocator_Subtype_Indication was called Allocation_Type. 527 ----------------------------------------------------------------------- 528 function Allocator_Qualified_Expression was called 529 Qualified_Object_Expression. 530 ----------------------------------------------------------------------- 531 package Operations was deleted. Kind declaration in new package. 532 ----------------------------------------------------------------------- 533 534 Changes to package Asis_Statements. 535 536 ----------------------------------------------------------------------- 537 function Assignment_Variable_Name was called Object_Assigned_To. 538 ----------------------------------------------------------------------- 539 function If_Statement_Arm_Kind was deleted. Reason REPLACED. 540 The new Element_Kinds'An_Alternative provides equivalent functionality. 541 ----------------------------------------------------------------------- 542 function If_Statement_Arms was deleted. Reason REPLACED. 543 The new query Statement_Alternatives provides equivalent functionality. 544 ----------------------------------------------------------------------- 545 function Statement_Alternatives is a new query. 546 ----------------------------------------------------------------------- 547 function Condition_Expression now operates on An_Alternative elements. 548 ----------------------------------------------------------------------- 549 function Sequence_Of_Statements was called Arm_Statements and now 550 operates on An_Alternative elements. 551 ----------------------------------------------------------------------- 552 function Case_Statement_Alternatives was deleted. Reason REPLACED. 553 The new query Statement_Alternatives provides equivalent functionality. 554 ----------------------------------------------------------------------- 555 function Is_When_Others was deleted. Reason HIERARCHY. 556 ----------------------------------------------------------------------- 557 function Case_Statement_Alternative_Statements was deleted. Reason 558 REPLACED. The new query Sequence_Of_Statements provides equivalent 559 functionality. 560 ----------------------------------------------------------------------- 561 function Loop_Kind was deleted. Reason HIERARCHY. 562 ----------------------------------------------------------------------- 563 function Loop_Statement_Identifier was called Loop_Simple_Name. 564 ----------------------------------------------------------------------- 565 function Loop_Parameter_Range was changed to 566 Specification_Subtype_Definition and moved to Asis.Declarations. 567 ----------------------------------------------------------------------- 568 function Is_Reverse_Loop_Parameter was deleted. Reason HIERARCHY. 569 ----------------------------------------------------------------------- 570 function Block_Statement_Identifier was called Block_Simple_Name. 571 ----------------------------------------------------------------------- 572 function Block_Declarative_Items was called Declarative_Items. 573 ----------------------------------------------------------------------- 574 function Block_Statements was called Block_Body_Statements. 575 ----------------------------------------------------------------------- 576 function Corresponding_Loop_Exited was called Loop_Exited. 577 ----------------------------------------------------------------------- 578 function Corresponding_Destination_Statement was called 579 Destination_Statement. 580 ----------------------------------------------------------------------- 581 function Corresponding_Called_Entity was called Called_Procedure. 582 ----------------------------------------------------------------------- 583 function Formal_Parameter was moved to Asis.Expressions. 584 ----------------------------------------------------------------------- 585 function Actual_Parameter was moved to Asis.Expressions. 586 ----------------------------------------------------------------------- 587 function Accept_Entry_Index was called Family_Index. 588 It no longer operates on An_Entry_Call_Statement elements. 589 ----------------------------------------------------------------------- 590 function Accept_Entry_Direct_Name was called Accept_Entry_Simple_Name. 591 ----------------------------------------------------------------------- 592 function Accept_Body_Exception_Handlers is a new query. 593 ----------------------------------------------------------------------- 594 function Corresponding_Entry was called Accepted_Entry. 595 ----------------------------------------------------------------------- 596 function Requeue_Entry_Name is a new query. 597 ----------------------------------------------------------------------- 598 function Select_Statement_Arm_Kind was deleted. Reason REPLACED. 599 The new Element_Kinds'An_Alternative provides equivalent functionality. 600 ----------------------------------------------------------------------- 601 function Select_Statement_Arms was deleted. Reason REPLACED. 602 The new query Statement_Alternatives provides equivalent functionality. 603 ----------------------------------------------------------------------- 604 function Select_Alternative_Kind was deleted. Reason REPLACED. 605 The new Element_Kinds'An_Alternative provides equivalent functionality. 606 ----------------------------------------------------------------------- 607 function Select_Alternative was called Arm_Select_Alternative. 608 ----------------------------------------------------------------------- 609 function Select_Alternative_Statements was deleted. Reason REPLACED. 610 function Else_Statements was deleted. Reason REPLACED. 611 function Entry_Call_Statements was deleted. Reason REPLACED. 612 The new query Sequence_Of_Statements provides the combined equivalent 613 functionality. 614 ----------------------------------------------------------------------- 615 function Timed_Entry_Call_Or_Statements was deleted. Reason REPLACED. 616 The query Select_Alternative followed by the new query 617 Sequence_Of_Statements provides equivalent functionality. 618 ----------------------------------------------------------------------- 619 function Choice_Parameter_Specification is a new query. 620 ----------------------------------------------------------------------- 621 function Is_Others_Handler was deleted. Reason HIERARCHY. 622 ----------------------------------------------------------------------- 623 package Operations was deleted. Kind declaration in new package. 624 ----------------------------------------------------------------------- 625 626 Changes to package Asis_Clauses. 627 628 ----------------------------------------------------------------------- 629 package Asis_Clauses was called Asis_Representation_Clauses. 630 ----------------------------------------------------------------------- 631 function Clause_Names is a new query. 632 ----------------------------------------------------------------------- 633 function Kind changed to Representation_Clause_Kind and moved to 634 Asis.Elements. 635 ----------------------------------------------------------------------- 636 function Associated_Type was deleted. Reason SECONDARY. 637 ----------------------------------------------------------------------- 638 function Length_Clause_Attribute_Kind was deleted. Reason REPLACED. 639 ----------------------------------------------------------------------- 640 function Associated_Length_Clause_Representations was deleted. 641 Reason REPLACED. 642 function Associated_Enumeration_Type_Representation was deleted. 643 Reason REPLACED. 644 function Associated_Record_Type_Representation was deleted. 645 Reason REPLACED. 646 The new query Asis.Declarations.Corresponding_Representation_Clauses 647 provides the combined equivalent functionality operating on 648 A_Declaration elements rather than A_Type_Definition elements. 649 ----------------------------------------------------------------------- 650 function Length_Clause_Attribute was deleted. Reason REPLACED. 651 function Enumeration_Representation_Clause_Type_Simple_Name was deleted. 652 Reason REPLACED. 653 function Record_Representation_Clause_Type_Simple_Name was deleted. 654 Reason REPLACED. 655 function Representation_Clause_Name is a new query providing the 656 combined equivalent functionality. 657 ----------------------------------------------------------------------- 658 function Length_Clause_Simple_Expression was deleted. 659 function Enumeration_Representation_Clause_Aggregate was deleted. 660 function Representation_Clause_Expression is a new query providing the 661 combined equivalent functionality. 662 ----------------------------------------------------------------------- 663 function Record_Representation_Clause_Alignment_Clause_Pragmas was 664 deleted. Reason REDUNDANT. Asis.Elements.Pragmas provides equivalent 665 functionality. 666 ----------------------------------------------------------------------- 667 function Mod_Clause_Expression was called 668 Record_Representation_Clause_Alignment_Clause_Expression. 669 ----------------------------------------------------------------------- 670 function Component_Clause_Position was called 671 Component_Clause_Relative_Address. 672 ----------------------------------------------------------------------- 673 package Operations was deleted. Kind declaration in new package. Appendix C. A list of changes made in this version since the last proposal for ASIS version 2.0.A. - Section 1.3 Comment sentinels for marking text Several new sentinels have been added. - Section 2.1 Proposed package structure The new package is proposed: Asis_Error_Kinds -- a new package containing a type declaration - Section 3.2 Enumeration literals as functions The following was added to the fourth paragraph: "rather than Expression_Kinds'A_Function_Call." - Section 3.4: In the previous proposal, the query Implicit_Derived_Definition was named Corresponding_Derived_Definition, but was changed to follow the naming convention for queries returning implicit elements. - Section 3.5 Body Block functionality was restored The function Body_Block_Statement is a new query that supplies the equivalent combined functionality of the replaced queries: Subprogram_Body_Block, Package_Body_Block, and Task_Body_Block. The new function also accepts An_Entry_Body_Declaration elements. - Section 3.6 Is_Referenced and References are still deleted These two functions remain deleted in this proposed version. This is an issue based on performance and definition, that will be discussed further at the ASISWG meeting. - Section 4 is new. Read this section for the library model changes. - Appendix A now contains a synopsis of ASIS_Library and ASIS_Compilation_Units packages. - Appendix B now contains the complete list of changes to ASIS_Library and ASIS_Compilation_Units packages. - Appendix C is new.