This file contains an annotated list of non-implemented and partially- implemented ASIS queries. The queries in this list are ordered in the same way as they are ordered in the ASIS definition, with the corresponding clause and subclause numbers. 9 package Asis.Ada_Environments.Containers ======================================== 9.3 function Defining_Containers 9.4 function Enclosing_Context 9.5 function Library_Unit_Declarations 9.6 function Compilation_Unit_Bodies 9.7 function Compilation_Units 9.8 function Is_Equal 9.9 function Is_Identical 9.10 function Name Recently the simplest Container model was implemented, but it needs to be documented in ASIS RM (?) as implementation-specific feature 10 package Asis.Compilation_Units ============================== 10.5 function Enclosing_Container Recently implmented for the simplest Container model and it needs to be documented in ASIS RM (?) as implementation-specific query Raises Not_Implemented_Error. See comments for non-implemented queries for ASIS Containers, Section 9. 11 package Asis.Compilation_Units.Times ==================================== 11.3 function Compilation_CPU_Duration. Recently implemented, but needs to be documented in ASIS RM (?) as implementation-specific query 12 package Asis.Compilation_Units.Relations ======================================== 12.4 function Elaboration_Order Raises Not_Implemented_Error. Serious hole in our ASIS implementation - this query is very important for applications. 13 package Asis.Elements ===================== 13.4 function Configuration_Pragmas Does not raise an exception, but always returns an empty result. This hole may be considered as serious from the point of view of at least some applications. How to get information about configuration pragmas? Tree files do not contain anything related to the content of gnat.adc... 15 package Asis.Declarations ========================= 15.30 function Corresponding_Equality_Operator Raises Not_Implemented_Error. Up to now, the only "user request" for this query came from inside ACT - it was needed by gnatelim (at the moment some workaround is used). But the query may be of real interest for some tools. The implementation problems for this query have not been investigated in details. "Inter-Context" queries: For the following queries defined in Asis.Declarations: 5.13 Corresponding_Type_Declaration 15.26 Corresponding_Declaration 15.27 Corresponding_Body 15.40 Corresponding_Subunit 15.42 Corresponding_Body_Stub ASIS defies two versions of the query. One takes an Element as the only parameter and computes the corresponding semantic link in the same Context, and another has two parameters - the argument Element and the Context to look for the corresponding semantic information into. The idea of the second("inter-Context" version is, for example, to try to compute (if possible) for a given subprogram declaration its completion in another Context, this another COntext may represent another implementation for the same interface packages. "Inter-Context" versions of these queries are not implemented. Up to now nobody at all has asked about anything related to processing more then one Context at a time. But in general the possibility to process several opened Context is implemented. ASIS defines the versions of '16' package Asis.Definitions ======================== '16.1' function Corresponding_Type_Operators Raises Not_Implemented_Error. This query may be important for some tools. The problem with implementing this tool is the consequence of the general problem of representing the implicit predefined stuff in ASIS. The source of the problem is that except for the types defined in Standard, the tree contains nothing related to the predefined type operators. So in our ASIS implementation, only implicit user-defined inherited subprograms may be represented, but the implicitly declared predefined type operations can not. '16.4' function Implicit_Inherited_Declarations This query is implemented but it has been carefully tested only record types and partially for enumeration types. The case of derived concurrent types needs more testing. The code still contains and "else" alternative which raises Not_Implemented_Error. This exception is also raised in case if the argument is a type derived from a Standard character type. '16.27' function Discriminant_Associations Marked as PARTIALLY IMPLEMENTED in the code, but actually all the code is in place. The implementation needs more testing for the case when Normalized => True '16.31' function Implicit_Components Raises Not_Implemented_Error. The effect of this query is implementation-specific. In case of GNAT, it may return non-empty results only for tagged types, the result may contain the _tag field and probably the _parent field (but I'm not completely sure concerning _parent_). The problem is that the tree created with '-gnatc' does not contain any information related to these fields. I have no idea how important returning the information about _tag and _parent field may be for applications. If it is not really important, we can just always return an empty result, and it makes this query implemented. 17 package Asis.Expressions ======================== 17.4 function References Partially implemented (the case when Implicitly => True is not implemented and raised Not_Implemented_Error) This query is important for applications, so fixing the hole for implicit references should be a high-priority task. 17.5 function Is_Referenced The situation is the same as for '17.4' (function References) 17.21 function Formal_Parameter The case when Normalized => True is not implemented and raises Not_Implemented_Error. May be important for applications 17.22 function Actual_Parameter The case when Normalized => True is not implemented and raises Not_Implemented_Error May be important for applications 17.24 function Discriminant_Expression1 The case when Normalized => True is not implemented and raises Not_Implemented_Error May be important for applications 7.30 function Function_Call_Parameters The case when Normalized => True definitely needs some more testing. It was implemented a long time ago and has not been really used, so the implementation may be junk. '18' package Asis.Statements ======================= '18.26' function Call_Statement_Parameters The situation is the same as for '17.30' (function Function_Call_Parameters) '21' package Asis.Ids ================ '21.2' function Hash '21.3' function "<" '21.4' function ">" '21.5' function Is_Nil '21.6' function Is_Equal '21.7' function Create_Id '21.8' function Create_Element '21.9' function Debug_Image The ASIS Id abstraction is not implemented. The queries from Asis.Ids package do not raise any exception, but they return some junk or empty results. The Id abstraction may be of some interest for some tools, but up for now nobody from our customers even has mentioned it (except Thomas, but finally (if I've got him right) he founded at the CORBA side some other alternative for using ASIS Ids). '23' package Asis.Data_Decomposition.Portable_Transfer (optional) ================================================= This optional ASIS Annex is not implemented in the current version of ASIS-for-GNAT, and it is not even presented in any place-holder form. To be honest, I do not understand what does this package mean. Nobody from our customers has ever asked about it.