------------------------------------------------------------------------------ -- -- -- Libadalang -- -- -- -- Copyright (C) 2014-2021, AdaCore -- -- -- -- Libadalang is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- -- Software Foundation; either version 3, or (at your option) any later -- -- version. This software is distributed in the hope that it will be -- -- useful but WITHOUT ANY WARRANTY; without even the implied warranty of -- -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -- -- -- -- As a special exception under Section 7 of GPL version 3, you are -- -- granted additional permissions described in the GCC Runtime Library -- -- Exception, version 3.1, as published by the Free Software Foundation. -- -- -- -- You should have received a copy of the GNU General Public License and a -- -- copy of the GCC Runtime Library Exception along with this program; see -- -- the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- -- . -- ------------------------------------------------------------------------------ with Ada.Containers; use Ada.Containers; with Ada.Containers.Hashed_Maps; with Ada.Containers.Hashed_Sets; with Ada.Containers.Ordered_Maps; with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; with Ada.Strings.Unbounded.Hash; with Ada.Unchecked_Conversion; with Ada.Unchecked_Deallocation; with System; use System; with GNATCOLL.Traces; with GNATCOLL.GMP.Integers; with GNATCOLL.VFS; use GNATCOLL.VFS; with Langkit_Support.Adalog.Abstract_Relation; use Langkit_Support.Adalog.Abstract_Relation; with Langkit_Support.Adalog.Eq_Same; with Langkit_Support.Bump_Ptr; use Langkit_Support.Bump_Ptr; with Langkit_Support.Cheap_Sets; with Langkit_Support.File_Readers; use Langkit_Support.File_Readers; with Langkit_Support.Lexical_Envs; use Langkit_Support.Lexical_Envs; with Langkit_Support.Lexical_Envs_Impl; with Langkit_Support.Symbols; use Langkit_Support.Symbols; with Langkit_Support.Token_Data_Handlers; use Langkit_Support.Token_Data_Handlers; with Langkit_Support.Types; use Langkit_Support.Types; with Langkit_Support.Vectors; with Libadalang.Parsers; use Libadalang.Parsers; with Libadalang.Common; use Libadalang.Common; with Libadalang.Lexer_Implementation; use Libadalang.Lexer_Implementation; -- Internal package: low-level primitives to implement public types and -- operations in Libadalang.Analysis. private package Libadalang.Implementation is use Support.Diagnostics, Support.Slocs, Support.Text; type Analysis_Context_Type; type Internal_Context is access all Analysis_Context_Type; Unexpected_Call_Depth : exception; -- Raised when the Call_Depth for two matching calls to Enter_Call and -- Exit_Call don't match, i.e. when there is a bug in the counting of -- recursive calls. procedure Enter_Call (Context : Internal_Context; Call_Depth : access Natural); -- Increment the call depth in Context. If the depth exceeds Context's -- maximum, raise a Property_Error for "stack overflow". -- -- Note that in the case of an exception, the depth is still incremented. -- This means that all calls to Enter_Call must be wrapped in an exception -- handler which calls Exit_Call on exception. -- -- Put in Call_Depth the incremented call depth. procedure Exit_Call (Context : Internal_Context; Call_Depth : Natural); -- Decrement the call depth in Context. If Call_Depth does not match the -- current call depth, raise an Unexpected_Call_Depth. type Analysis_Unit_Type; type Internal_Unit is access all Analysis_Unit_Type; type Root_Node_Record; type Bare_Ada_Node is access all Root_Node_Record; No_Bare_Ada_Node : constant Bare_Ada_Node := null; -- Most generic AST node type function "<" (Left, Right : Bare_Ada_Node) return Boolean; -- Abritrary but deterministic ordering criteria for parsing nodes. This -- handles null nodes as well. Raise a Property_Error for synthetic nodes. function Is_Null (Node : Bare_Ada_Node) return Boolean; function Kind (Node : Bare_Ada_Node) return Ada_Node_Kind_Type; subtype Bare_Abort_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Abort_Node) or else Kind (Bare_Abort_Node) in Ada_Abort_Node; subtype Bare_Abort_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Abort_Absent) or else Kind (Bare_Abort_Absent) in Ada_Abort_Absent_Range; subtype Bare_Abort_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Abort_Present) or else Kind (Bare_Abort_Present) in Ada_Abort_Present_Range; subtype Bare_Abstract_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Abstract_Node) or else Kind (Bare_Abstract_Node) in Ada_Abstract_Node; subtype Bare_Abstract_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Abstract_Absent) or else Kind (Bare_Abstract_Absent) in Ada_Abstract_Absent_Range; subtype Bare_Abstract_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Abstract_Present) or else Kind (Bare_Abstract_Present) in Ada_Abstract_Present_Range; subtype Bare_Ada_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Ada_List) or else Kind (Bare_Ada_List) in Ada_Ada_List; subtype Bare_Ada_Node_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Ada_Node_List) or else Kind (Bare_Ada_Node_List) in Ada_Ada_Node_List_Range; subtype Bare_Abstract_State_Decl_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Abstract_State_Decl_List) or else Kind (Bare_Abstract_State_Decl_List) in Ada_Abstract_State_Decl_List_Range; subtype Bare_Alternatives_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Alternatives_List) or else Kind (Bare_Alternatives_List) in Ada_Alternatives_List_Range; subtype Bare_Constraint_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Constraint_List) or else Kind (Bare_Constraint_List) in Ada_Constraint_List_Range; subtype Bare_Decl_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Decl_List) or else Kind (Bare_Decl_List) in Ada_Decl_List_Range; subtype Bare_Stmt_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Stmt_List) or else Kind (Bare_Stmt_List) in Ada_Stmt_List_Range; subtype Bare_Aspect_Assoc_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Aspect_Assoc_List) or else Kind (Bare_Aspect_Assoc_List) in Ada_Aspect_Assoc_List_Range; subtype Bare_Base_Assoc_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Assoc_List) or else Kind (Bare_Base_Assoc_List) in Ada_Base_Assoc_List_Range; subtype Bare_Basic_Assoc_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Basic_Assoc_List) or else Kind (Bare_Basic_Assoc_List) in Ada_Basic_Assoc_List; subtype Bare_Assoc_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Assoc_List) or else Kind (Bare_Assoc_List) in Ada_Assoc_List_Range; subtype Bare_Basic_Decl_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Basic_Decl_List) or else Kind (Bare_Basic_Decl_List) in Ada_Basic_Decl_List_Range; subtype Bare_Case_Expr_Alternative_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Case_Expr_Alternative_List) or else Kind (Bare_Case_Expr_Alternative_List) in Ada_Case_Expr_Alternative_List_Range; subtype Bare_Case_Stmt_Alternative_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Case_Stmt_Alternative_List) or else Kind (Bare_Case_Stmt_Alternative_List) in Ada_Case_Stmt_Alternative_List_Range; subtype Bare_Compilation_Unit_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Compilation_Unit_List) or else Kind (Bare_Compilation_Unit_List) in Ada_Compilation_Unit_List_Range; subtype Bare_Contract_Case_Assoc_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Contract_Case_Assoc_List) or else Kind (Bare_Contract_Case_Assoc_List) in Ada_Contract_Case_Assoc_List_Range; subtype Bare_Defining_Name_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Defining_Name_List) or else Kind (Bare_Defining_Name_List) in Ada_Defining_Name_List_Range; subtype Bare_Discriminant_Spec_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Discriminant_Spec_List) or else Kind (Bare_Discriminant_Spec_List) in Ada_Discriminant_Spec_List_Range; subtype Bare_Elsif_Expr_Part_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Elsif_Expr_Part_List) or else Kind (Bare_Elsif_Expr_Part_List) in Ada_Elsif_Expr_Part_List_Range; subtype Bare_Elsif_Stmt_Part_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Elsif_Stmt_Part_List) or else Kind (Bare_Elsif_Stmt_Part_List) in Ada_Elsif_Stmt_Part_List_Range; subtype Bare_Enum_Literal_Decl_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Enum_Literal_Decl_List) or else Kind (Bare_Enum_Literal_Decl_List) in Ada_Enum_Literal_Decl_List_Range; subtype Bare_Expr_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Expr_List) or else Kind (Bare_Expr_List) in Ada_Expr_List; subtype Bare_Expr_Alternatives_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Expr_Alternatives_List) or else Kind (Bare_Expr_Alternatives_List) in Ada_Expr_Alternatives_List_Range; subtype Bare_Identifier_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Identifier_List) or else Kind (Bare_Identifier_List) in Ada_Identifier_List; subtype Bare_Discriminant_Choice_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Discriminant_Choice_List) or else Kind (Bare_Discriminant_Choice_List) in Ada_Discriminant_Choice_List_Range; subtype Bare_Name_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Name_List) or else Kind (Bare_Name_List) in Ada_Name_List_Range; subtype Bare_Parent_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Parent_List) or else Kind (Bare_Parent_List) in Ada_Parent_List_Range; subtype Bare_Param_Spec_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Param_Spec_List) or else Kind (Bare_Param_Spec_List) in Ada_Param_Spec_List_Range; subtype Bare_Pragma_Node_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Pragma_Node_List) or else Kind (Bare_Pragma_Node_List) in Ada_Pragma_Node_List_Range; subtype Bare_Select_When_Part_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Select_When_Part_List) or else Kind (Bare_Select_When_Part_List) in Ada_Select_When_Part_List_Range; subtype Bare_Unconstrained_Array_Index_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Unconstrained_Array_Index_List) or else Kind (Bare_Unconstrained_Array_Index_List) in Ada_Unconstrained_Array_Index_List_Range; subtype Bare_Variant_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Variant_List) or else Kind (Bare_Variant_List) in Ada_Variant_List_Range; subtype Bare_Aliased_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Aliased_Node) or else Kind (Bare_Aliased_Node) in Ada_Aliased_Node; subtype Bare_Aliased_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Aliased_Absent) or else Kind (Bare_Aliased_Absent) in Ada_Aliased_Absent_Range; subtype Bare_Aliased_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Aliased_Present) or else Kind (Bare_Aliased_Present) in Ada_Aliased_Present_Range; subtype Bare_All_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_All_Node) or else Kind (Bare_All_Node) in Ada_All_Node; subtype Bare_All_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_All_Absent) or else Kind (Bare_All_Absent) in Ada_All_Absent_Range; subtype Bare_All_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_All_Present) or else Kind (Bare_All_Present) in Ada_All_Present_Range; subtype Bare_Array_Indices is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Array_Indices) or else Kind (Bare_Array_Indices) in Ada_Array_Indices; subtype Bare_Constrained_Array_Indices is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Constrained_Array_Indices) or else Kind (Bare_Constrained_Array_Indices) in Ada_Constrained_Array_Indices_Range; subtype Bare_Unconstrained_Array_Indices is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Unconstrained_Array_Indices) or else Kind (Bare_Unconstrained_Array_Indices) in Ada_Unconstrained_Array_Indices_Range; subtype Bare_Aspect_Assoc is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Aspect_Assoc) or else Kind (Bare_Aspect_Assoc) in Ada_Aspect_Assoc_Range; subtype Bare_Aspect_Clause is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Aspect_Clause) or else Kind (Bare_Aspect_Clause) in Ada_Aspect_Clause; subtype Bare_At_Clause is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_At_Clause) or else Kind (Bare_At_Clause) in Ada_At_Clause_Range; subtype Bare_Attribute_Def_Clause is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Attribute_Def_Clause) or else Kind (Bare_Attribute_Def_Clause) in Ada_Attribute_Def_Clause_Range; subtype Bare_Enum_Rep_Clause is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Enum_Rep_Clause) or else Kind (Bare_Enum_Rep_Clause) in Ada_Enum_Rep_Clause_Range; subtype Bare_Record_Rep_Clause is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Record_Rep_Clause) or else Kind (Bare_Record_Rep_Clause) in Ada_Record_Rep_Clause_Range; subtype Bare_Aspect_Spec is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Aspect_Spec) or else Kind (Bare_Aspect_Spec) in Ada_Aspect_Spec_Range; subtype Bare_Base_Assoc is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Assoc) or else Kind (Bare_Base_Assoc) in Ada_Base_Assoc; subtype Bare_Contract_Case_Assoc is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Contract_Case_Assoc) or else Kind (Bare_Contract_Case_Assoc) in Ada_Contract_Case_Assoc_Range; subtype Bare_Pragma_Argument_Assoc is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Pragma_Argument_Assoc) or else Kind (Bare_Pragma_Argument_Assoc) in Ada_Pragma_Argument_Assoc_Range; subtype Bare_Base_Formal_Param_Holder is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Formal_Param_Holder) or else Kind (Bare_Base_Formal_Param_Holder) in Ada_Base_Formal_Param_Holder; subtype Bare_Base_Subp_Spec is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Subp_Spec) or else Kind (Bare_Base_Subp_Spec) in Ada_Base_Subp_Spec; subtype Bare_Entry_Spec is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Entry_Spec) or else Kind (Bare_Entry_Spec) in Ada_Entry_Spec_Range; subtype Bare_Enum_Subp_Spec is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Enum_Subp_Spec) or else Kind (Bare_Enum_Subp_Spec) in Ada_Enum_Subp_Spec_Range; subtype Bare_Subp_Spec is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Subp_Spec) or else Kind (Bare_Subp_Spec) in Ada_Subp_Spec_Range; subtype Bare_Component_List is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Component_List) or else Kind (Bare_Component_List) in Ada_Component_List_Range; subtype Bare_Discriminant_Part is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Discriminant_Part) or else Kind (Bare_Discriminant_Part) in Ada_Discriminant_Part; subtype Bare_Known_Discriminant_Part is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Known_Discriminant_Part) or else Kind (Bare_Known_Discriminant_Part) in Ada_Known_Discriminant_Part_Range; subtype Bare_Unknown_Discriminant_Part is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Unknown_Discriminant_Part) or else Kind (Bare_Unknown_Discriminant_Part) in Ada_Unknown_Discriminant_Part_Range; subtype Bare_Entry_Completion_Formal_Params is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Entry_Completion_Formal_Params) or else Kind (Bare_Entry_Completion_Formal_Params) in Ada_Entry_Completion_Formal_Params_Range; subtype Bare_Generic_Formal_Part is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Formal_Part) or else Kind (Bare_Generic_Formal_Part) in Ada_Generic_Formal_Part_Range; subtype Bare_Base_Record_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Record_Def) or else Kind (Bare_Base_Record_Def) in Ada_Base_Record_Def; subtype Bare_Null_Record_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Null_Record_Def) or else Kind (Bare_Null_Record_Def) in Ada_Null_Record_Def_Range; subtype Bare_Record_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Record_Def) or else Kind (Bare_Record_Def) in Ada_Record_Def_Range; subtype Bare_Basic_Assoc is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Basic_Assoc) or else Kind (Bare_Basic_Assoc) in Ada_Basic_Assoc; subtype Bare_Aggregate_Assoc is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Aggregate_Assoc) or else Kind (Bare_Aggregate_Assoc) in Ada_Aggregate_Assoc_Range; subtype Bare_Multi_Dim_Array_Assoc is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Multi_Dim_Array_Assoc) or else Kind (Bare_Multi_Dim_Array_Assoc) in Ada_Multi_Dim_Array_Assoc_Range; subtype Bare_Discriminant_Assoc is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Discriminant_Assoc) or else Kind (Bare_Discriminant_Assoc) in Ada_Discriminant_Assoc_Range; subtype Bare_Iterated_Assoc is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Iterated_Assoc) or else Kind (Bare_Iterated_Assoc) in Ada_Iterated_Assoc_Range; subtype Bare_Param_Assoc is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Param_Assoc) or else Kind (Bare_Param_Assoc) in Ada_Param_Assoc_Range; subtype Bare_Basic_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Basic_Decl) or else Kind (Bare_Basic_Decl) in Ada_Basic_Decl; subtype Bare_Abstract_State_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Abstract_State_Decl) or else Kind (Bare_Abstract_State_Decl) in Ada_Abstract_State_Decl_Range; subtype Bare_Anonymous_Expr_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Anonymous_Expr_Decl) or else Kind (Bare_Anonymous_Expr_Decl) in Ada_Anonymous_Expr_Decl_Range; subtype Bare_Base_Formal_Param_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Formal_Param_Decl) or else Kind (Bare_Base_Formal_Param_Decl) in Ada_Base_Formal_Param_Decl; subtype Bare_Component_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Component_Decl) or else Kind (Bare_Component_Decl) in Ada_Component_Decl_Range; subtype Bare_Discriminant_Spec is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Discriminant_Spec) or else Kind (Bare_Discriminant_Spec) in Ada_Discriminant_Spec_Range; subtype Bare_Generic_Formal is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Formal) or else Kind (Bare_Generic_Formal) in Ada_Generic_Formal; subtype Bare_Generic_Formal_Obj_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Formal_Obj_Decl) or else Kind (Bare_Generic_Formal_Obj_Decl) in Ada_Generic_Formal_Obj_Decl_Range; subtype Bare_Generic_Formal_Package is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Formal_Package) or else Kind (Bare_Generic_Formal_Package) in Ada_Generic_Formal_Package_Range; subtype Bare_Generic_Formal_Subp_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Formal_Subp_Decl) or else Kind (Bare_Generic_Formal_Subp_Decl) in Ada_Generic_Formal_Subp_Decl_Range; subtype Bare_Generic_Formal_Type_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Formal_Type_Decl) or else Kind (Bare_Generic_Formal_Type_Decl) in Ada_Generic_Formal_Type_Decl_Range; subtype Bare_Param_Spec is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Param_Spec) or else Kind (Bare_Param_Spec) in Ada_Param_Spec_Range; subtype Bare_Base_Package_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Package_Decl) or else Kind (Bare_Base_Package_Decl) in Ada_Base_Package_Decl; subtype Bare_Generic_Package_Internal is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Package_Internal) or else Kind (Bare_Generic_Package_Internal) in Ada_Generic_Package_Internal_Range; subtype Bare_Package_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Package_Decl) or else Kind (Bare_Package_Decl) in Ada_Package_Decl_Range; subtype Bare_Base_Type_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Type_Decl) or else Kind (Bare_Base_Type_Decl) in Ada_Base_Type_Decl; subtype Bare_Base_Subtype_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Subtype_Decl) or else Kind (Bare_Base_Subtype_Decl) in Ada_Base_Subtype_Decl; subtype Bare_Discrete_Base_Subtype_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Discrete_Base_Subtype_Decl) or else Kind (Bare_Discrete_Base_Subtype_Decl) in Ada_Discrete_Base_Subtype_Decl_Range; subtype Bare_Subtype_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Subtype_Decl) or else Kind (Bare_Subtype_Decl) in Ada_Subtype_Decl_Range; subtype Bare_Classwide_Type_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Classwide_Type_Decl) or else Kind (Bare_Classwide_Type_Decl) in Ada_Classwide_Type_Decl_Range; subtype Bare_Incomplete_Type_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Incomplete_Type_Decl) or else Kind (Bare_Incomplete_Type_Decl) in Ada_Incomplete_Type_Decl_Range; subtype Bare_Incomplete_Tagged_Type_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Incomplete_Tagged_Type_Decl) or else Kind (Bare_Incomplete_Tagged_Type_Decl) in Ada_Incomplete_Tagged_Type_Decl_Range; subtype Bare_Protected_Type_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Protected_Type_Decl) or else Kind (Bare_Protected_Type_Decl) in Ada_Protected_Type_Decl_Range; subtype Bare_Task_Type_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Task_Type_Decl) or else Kind (Bare_Task_Type_Decl) in Ada_Task_Type_Decl_Range; subtype Bare_Single_Task_Type_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Single_Task_Type_Decl) or else Kind (Bare_Single_Task_Type_Decl) in Ada_Single_Task_Type_Decl_Range; subtype Bare_Type_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Type_Decl) or else Kind (Bare_Type_Decl) in Ada_Type_Decl_Range; subtype Bare_Anonymous_Type_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Anonymous_Type_Decl) or else Kind (Bare_Anonymous_Type_Decl) in Ada_Anonymous_Type_Decl_Range; subtype Bare_Synth_Anonymous_Type_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Synth_Anonymous_Type_Decl) or else Kind (Bare_Synth_Anonymous_Type_Decl) in Ada_Synth_Anonymous_Type_Decl_Range; subtype Bare_Basic_Subp_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Basic_Subp_Decl) or else Kind (Bare_Basic_Subp_Decl) in Ada_Basic_Subp_Decl; subtype Bare_Classic_Subp_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Classic_Subp_Decl) or else Kind (Bare_Classic_Subp_Decl) in Ada_Classic_Subp_Decl; subtype Bare_Abstract_Subp_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Abstract_Subp_Decl) or else Kind (Bare_Abstract_Subp_Decl) in Ada_Abstract_Subp_Decl_Range; subtype Bare_Formal_Subp_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Formal_Subp_Decl) or else Kind (Bare_Formal_Subp_Decl) in Ada_Formal_Subp_Decl; subtype Bare_Abstract_Formal_Subp_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Abstract_Formal_Subp_Decl) or else Kind (Bare_Abstract_Formal_Subp_Decl) in Ada_Abstract_Formal_Subp_Decl_Range; subtype Bare_Concrete_Formal_Subp_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Concrete_Formal_Subp_Decl) or else Kind (Bare_Concrete_Formal_Subp_Decl) in Ada_Concrete_Formal_Subp_Decl_Range; subtype Bare_Subp_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Subp_Decl) or else Kind (Bare_Subp_Decl) in Ada_Subp_Decl_Range; subtype Bare_Entry_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Entry_Decl) or else Kind (Bare_Entry_Decl) in Ada_Entry_Decl_Range; subtype Bare_Enum_Literal_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Enum_Literal_Decl) or else Kind (Bare_Enum_Literal_Decl) in Ada_Enum_Literal_Decl_Range; subtype Bare_Generic_Subp_Internal is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Subp_Internal) or else Kind (Bare_Generic_Subp_Internal) in Ada_Generic_Subp_Internal_Range; subtype Bare_Body_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Body_Node) or else Kind (Bare_Body_Node) in Ada_Body_Node; subtype Bare_Base_Subp_Body is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Subp_Body) or else Kind (Bare_Base_Subp_Body) in Ada_Base_Subp_Body; subtype Bare_Expr_Function is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Expr_Function) or else Kind (Bare_Expr_Function) in Ada_Expr_Function_Range; subtype Bare_Null_Subp_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Null_Subp_Decl) or else Kind (Bare_Null_Subp_Decl) in Ada_Null_Subp_Decl_Range; subtype Bare_Subp_Body is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Subp_Body) or else Kind (Bare_Subp_Body) in Ada_Subp_Body_Range; subtype Bare_Subp_Renaming_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Subp_Renaming_Decl) or else Kind (Bare_Subp_Renaming_Decl) in Ada_Subp_Renaming_Decl_Range; subtype Bare_Body_Stub is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Body_Stub) or else Kind (Bare_Body_Stub) in Ada_Body_Stub; subtype Bare_Package_Body_Stub is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Package_Body_Stub) or else Kind (Bare_Package_Body_Stub) in Ada_Package_Body_Stub_Range; subtype Bare_Protected_Body_Stub is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Protected_Body_Stub) or else Kind (Bare_Protected_Body_Stub) in Ada_Protected_Body_Stub_Range; subtype Bare_Subp_Body_Stub is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Subp_Body_Stub) or else Kind (Bare_Subp_Body_Stub) in Ada_Subp_Body_Stub_Range; subtype Bare_Task_Body_Stub is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Task_Body_Stub) or else Kind (Bare_Task_Body_Stub) in Ada_Task_Body_Stub_Range; subtype Bare_Entry_Body is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Entry_Body) or else Kind (Bare_Entry_Body) in Ada_Entry_Body_Range; subtype Bare_Package_Body is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Package_Body) or else Kind (Bare_Package_Body) in Ada_Package_Body_Range; subtype Bare_Protected_Body is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Protected_Body) or else Kind (Bare_Protected_Body) in Ada_Protected_Body_Range; subtype Bare_Task_Body is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Task_Body) or else Kind (Bare_Task_Body) in Ada_Task_Body_Range; subtype Bare_Entry_Index_Spec is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Entry_Index_Spec) or else Kind (Bare_Entry_Index_Spec) in Ada_Entry_Index_Spec_Range; subtype Bare_Error_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Error_Decl) or else Kind (Bare_Error_Decl) in Ada_Error_Decl_Range; subtype Bare_Exception_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Exception_Decl) or else Kind (Bare_Exception_Decl) in Ada_Exception_Decl_Range; subtype Bare_Exception_Handler is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Exception_Handler) or else Kind (Bare_Exception_Handler) in Ada_Exception_Handler_Range; subtype Bare_For_Loop_Var_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_For_Loop_Var_Decl) or else Kind (Bare_For_Loop_Var_Decl) in Ada_For_Loop_Var_Decl_Range; subtype Bare_Generic_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Decl) or else Kind (Bare_Generic_Decl) in Ada_Generic_Decl; subtype Bare_Generic_Package_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Package_Decl) or else Kind (Bare_Generic_Package_Decl) in Ada_Generic_Package_Decl_Range; subtype Bare_Generic_Subp_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Subp_Decl) or else Kind (Bare_Generic_Subp_Decl) in Ada_Generic_Subp_Decl_Range; subtype Bare_Generic_Instantiation is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Instantiation) or else Kind (Bare_Generic_Instantiation) in Ada_Generic_Instantiation; subtype Bare_Generic_Package_Instantiation is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Package_Instantiation) or else Kind (Bare_Generic_Package_Instantiation) in Ada_Generic_Package_Instantiation_Range; subtype Bare_Generic_Subp_Instantiation is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Subp_Instantiation) or else Kind (Bare_Generic_Subp_Instantiation) in Ada_Generic_Subp_Instantiation_Range; subtype Bare_Generic_Renaming_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Renaming_Decl) or else Kind (Bare_Generic_Renaming_Decl) in Ada_Generic_Renaming_Decl; subtype Bare_Generic_Package_Renaming_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Package_Renaming_Decl) or else Kind (Bare_Generic_Package_Renaming_Decl) in Ada_Generic_Package_Renaming_Decl_Range; subtype Bare_Generic_Subp_Renaming_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Generic_Subp_Renaming_Decl) or else Kind (Bare_Generic_Subp_Renaming_Decl) in Ada_Generic_Subp_Renaming_Decl_Range; subtype Bare_Label_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Label_Decl) or else Kind (Bare_Label_Decl) in Ada_Label_Decl_Range; subtype Bare_Named_Stmt_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Named_Stmt_Decl) or else Kind (Bare_Named_Stmt_Decl) in Ada_Named_Stmt_Decl_Range; subtype Bare_Number_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Number_Decl) or else Kind (Bare_Number_Decl) in Ada_Number_Decl_Range; subtype Bare_Object_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Object_Decl) or else Kind (Bare_Object_Decl) in Ada_Object_Decl_Range; subtype Bare_Extended_Return_Stmt_Object_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Extended_Return_Stmt_Object_Decl) or else Kind (Bare_Extended_Return_Stmt_Object_Decl) in Ada_Extended_Return_Stmt_Object_Decl_Range; subtype Bare_Package_Renaming_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Package_Renaming_Decl) or else Kind (Bare_Package_Renaming_Decl) in Ada_Package_Renaming_Decl_Range; subtype Bare_Single_Protected_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Single_Protected_Decl) or else Kind (Bare_Single_Protected_Decl) in Ada_Single_Protected_Decl_Range; subtype Bare_Single_Task_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Single_Task_Decl) or else Kind (Bare_Single_Task_Decl) in Ada_Single_Task_Decl_Range; subtype Bare_Case_Stmt_Alternative is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Case_Stmt_Alternative) or else Kind (Bare_Case_Stmt_Alternative) in Ada_Case_Stmt_Alternative_Range; subtype Bare_Compilation_Unit is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Compilation_Unit) or else Kind (Bare_Compilation_Unit) in Ada_Compilation_Unit_Range; subtype Bare_Component_Clause is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Component_Clause) or else Kind (Bare_Component_Clause) in Ada_Component_Clause_Range; subtype Bare_Component_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Component_Def) or else Kind (Bare_Component_Def) in Ada_Component_Def_Range; subtype Bare_Constant_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Constant_Node) or else Kind (Bare_Constant_Node) in Ada_Constant_Node; subtype Bare_Constant_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Constant_Absent) or else Kind (Bare_Constant_Absent) in Ada_Constant_Absent_Range; subtype Bare_Constant_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Constant_Present) or else Kind (Bare_Constant_Present) in Ada_Constant_Present_Range; subtype Bare_Constraint is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Constraint) or else Kind (Bare_Constraint) in Ada_Constraint; subtype Bare_Delta_Constraint is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Delta_Constraint) or else Kind (Bare_Delta_Constraint) in Ada_Delta_Constraint_Range; subtype Bare_Digits_Constraint is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Digits_Constraint) or else Kind (Bare_Digits_Constraint) in Ada_Digits_Constraint_Range; subtype Bare_Discriminant_Constraint is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Discriminant_Constraint) or else Kind (Bare_Discriminant_Constraint) in Ada_Discriminant_Constraint_Range; subtype Bare_Index_Constraint is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Index_Constraint) or else Kind (Bare_Index_Constraint) in Ada_Index_Constraint_Range; subtype Bare_Range_Constraint is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Range_Constraint) or else Kind (Bare_Range_Constraint) in Ada_Range_Constraint_Range; subtype Bare_Declarative_Part is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Declarative_Part) or else Kind (Bare_Declarative_Part) in Ada_Declarative_Part_Range; subtype Bare_Private_Part is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Private_Part) or else Kind (Bare_Private_Part) in Ada_Private_Part_Range; subtype Bare_Public_Part is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Public_Part) or else Kind (Bare_Public_Part) in Ada_Public_Part_Range; subtype Bare_Elsif_Expr_Part is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Elsif_Expr_Part) or else Kind (Bare_Elsif_Expr_Part) in Ada_Elsif_Expr_Part_Range; subtype Bare_Elsif_Stmt_Part is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Elsif_Stmt_Part) or else Kind (Bare_Elsif_Stmt_Part) in Ada_Elsif_Stmt_Part_Range; subtype Bare_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Expr) or else Kind (Bare_Expr) in Ada_Expr; subtype Bare_Abstract_State_Decl_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Abstract_State_Decl_Expr) or else Kind (Bare_Abstract_State_Decl_Expr) in Ada_Abstract_State_Decl_Expr_Range; subtype Bare_Allocator is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Allocator) or else Kind (Bare_Allocator) in Ada_Allocator_Range; subtype Bare_Base_Aggregate is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Aggregate) or else Kind (Bare_Base_Aggregate) in Ada_Base_Aggregate; subtype Bare_Aggregate is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Aggregate) or else Kind (Bare_Aggregate) in Ada_Aggregate_Range; subtype Bare_Bracket_Aggregate is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Bracket_Aggregate) or else Kind (Bare_Bracket_Aggregate) in Ada_Bracket_Aggregate_Range; subtype Bare_Delta_Aggregate is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Delta_Aggregate) or else Kind (Bare_Delta_Aggregate) in Ada_Delta_Aggregate_Range; subtype Bare_Bracket_Delta_Aggregate is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Bracket_Delta_Aggregate) or else Kind (Bare_Bracket_Delta_Aggregate) in Ada_Bracket_Delta_Aggregate_Range; subtype Bare_Null_Record_Aggregate is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Null_Record_Aggregate) or else Kind (Bare_Null_Record_Aggregate) in Ada_Null_Record_Aggregate_Range; subtype Bare_Bin_Op is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Bin_Op) or else Kind (Bare_Bin_Op) in Ada_Bin_Op_Range; subtype Bare_Relation_Op is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Relation_Op) or else Kind (Bare_Relation_Op) in Ada_Relation_Op_Range; subtype Bare_Box_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Box_Expr) or else Kind (Bare_Box_Expr) in Ada_Box_Expr_Range; subtype Bare_Case_Expr_Alternative is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Case_Expr_Alternative) or else Kind (Bare_Case_Expr_Alternative) in Ada_Case_Expr_Alternative_Range; subtype Bare_Cond_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Cond_Expr) or else Kind (Bare_Cond_Expr) in Ada_Cond_Expr; subtype Bare_Case_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Case_Expr) or else Kind (Bare_Case_Expr) in Ada_Case_Expr_Range; subtype Bare_If_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_If_Expr) or else Kind (Bare_If_Expr) in Ada_If_Expr_Range; subtype Bare_Contract_Cases is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Contract_Cases) or else Kind (Bare_Contract_Cases) in Ada_Contract_Cases_Range; subtype Bare_Decl_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Decl_Expr) or else Kind (Bare_Decl_Expr) in Ada_Decl_Expr_Range; subtype Bare_Membership_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Membership_Expr) or else Kind (Bare_Membership_Expr) in Ada_Membership_Expr_Range; subtype Bare_Name is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Name) or else Kind (Bare_Name) in Ada_Name; subtype Bare_Attribute_Ref is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Attribute_Ref) or else Kind (Bare_Attribute_Ref) in Ada_Attribute_Ref_Range; subtype Bare_Update_Attribute_Ref is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Update_Attribute_Ref) or else Kind (Bare_Update_Attribute_Ref) in Ada_Update_Attribute_Ref_Range; subtype Bare_Call_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Call_Expr) or else Kind (Bare_Call_Expr) in Ada_Call_Expr_Range; subtype Bare_Defining_Name is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Defining_Name) or else Kind (Bare_Defining_Name) in Ada_Defining_Name_Range; subtype Bare_Discrete_Subtype_Name is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Discrete_Subtype_Name) or else Kind (Bare_Discrete_Subtype_Name) in Ada_Discrete_Subtype_Name_Range; subtype Bare_Dotted_Name is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Dotted_Name) or else Kind (Bare_Dotted_Name) in Ada_Dotted_Name_Range; subtype Bare_End_Name is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_End_Name) or else Kind (Bare_End_Name) in Ada_End_Name_Range; subtype Bare_Explicit_Deref is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Explicit_Deref) or else Kind (Bare_Explicit_Deref) in Ada_Explicit_Deref_Range; subtype Bare_Qual_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Qual_Expr) or else Kind (Bare_Qual_Expr) in Ada_Qual_Expr_Range; subtype Bare_Single_Tok_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Single_Tok_Node) or else Kind (Bare_Single_Tok_Node) in Ada_Single_Tok_Node; subtype Bare_Base_Id is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Id) or else Kind (Bare_Base_Id) in Ada_Base_Id; subtype Bare_Char_Literal is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Char_Literal) or else Kind (Bare_Char_Literal) in Ada_Char_Literal_Range; subtype Bare_Identifier is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Identifier) or else Kind (Bare_Identifier) in Ada_Identifier_Range; subtype Bare_Op is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op) or else Kind (Bare_Op) in Ada_Op; subtype Bare_Op_Abs is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Abs) or else Kind (Bare_Op_Abs) in Ada_Op_Abs_Range; subtype Bare_Op_And is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_And) or else Kind (Bare_Op_And) in Ada_Op_And_Range; subtype Bare_Op_And_Then is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_And_Then) or else Kind (Bare_Op_And_Then) in Ada_Op_And_Then_Range; subtype Bare_Op_Concat is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Concat) or else Kind (Bare_Op_Concat) in Ada_Op_Concat_Range; subtype Bare_Op_Div is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Div) or else Kind (Bare_Op_Div) in Ada_Op_Div_Range; subtype Bare_Op_Double_Dot is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Double_Dot) or else Kind (Bare_Op_Double_Dot) in Ada_Op_Double_Dot_Range; subtype Bare_Op_Eq is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Eq) or else Kind (Bare_Op_Eq) in Ada_Op_Eq_Range; subtype Bare_Op_Gt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Gt) or else Kind (Bare_Op_Gt) in Ada_Op_Gt_Range; subtype Bare_Op_Gte is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Gte) or else Kind (Bare_Op_Gte) in Ada_Op_Gte_Range; subtype Bare_Op_In is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_In) or else Kind (Bare_Op_In) in Ada_Op_In_Range; subtype Bare_Op_Lt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Lt) or else Kind (Bare_Op_Lt) in Ada_Op_Lt_Range; subtype Bare_Op_Lte is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Lte) or else Kind (Bare_Op_Lte) in Ada_Op_Lte_Range; subtype Bare_Op_Minus is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Minus) or else Kind (Bare_Op_Minus) in Ada_Op_Minus_Range; subtype Bare_Op_Mod is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Mod) or else Kind (Bare_Op_Mod) in Ada_Op_Mod_Range; subtype Bare_Op_Mult is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Mult) or else Kind (Bare_Op_Mult) in Ada_Op_Mult_Range; subtype Bare_Op_Neq is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Neq) or else Kind (Bare_Op_Neq) in Ada_Op_Neq_Range; subtype Bare_Op_Not is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Not) or else Kind (Bare_Op_Not) in Ada_Op_Not_Range; subtype Bare_Op_Not_In is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Not_In) or else Kind (Bare_Op_Not_In) in Ada_Op_Not_In_Range; subtype Bare_Op_Or is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Or) or else Kind (Bare_Op_Or) in Ada_Op_Or_Range; subtype Bare_Op_Or_Else is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Or_Else) or else Kind (Bare_Op_Or_Else) in Ada_Op_Or_Else_Range; subtype Bare_Op_Plus is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Plus) or else Kind (Bare_Op_Plus) in Ada_Op_Plus_Range; subtype Bare_Op_Pow is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Pow) or else Kind (Bare_Op_Pow) in Ada_Op_Pow_Range; subtype Bare_Op_Rem is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Rem) or else Kind (Bare_Op_Rem) in Ada_Op_Rem_Range; subtype Bare_Op_Xor is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Op_Xor) or else Kind (Bare_Op_Xor) in Ada_Op_Xor_Range; subtype Bare_String_Literal is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_String_Literal) or else Kind (Bare_String_Literal) in Ada_String_Literal_Range; subtype Bare_Null_Literal is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Null_Literal) or else Kind (Bare_Null_Literal) in Ada_Null_Literal_Range; subtype Bare_Num_Literal is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Num_Literal) or else Kind (Bare_Num_Literal) in Ada_Num_Literal; subtype Bare_Int_Literal is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Int_Literal) or else Kind (Bare_Int_Literal) in Ada_Int_Literal_Range; subtype Bare_Real_Literal is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Real_Literal) or else Kind (Bare_Real_Literal) in Ada_Real_Literal_Range; subtype Bare_Target_Name is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Target_Name) or else Kind (Bare_Target_Name) in Ada_Target_Name_Range; subtype Bare_Paren_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Paren_Expr) or else Kind (Bare_Paren_Expr) in Ada_Paren_Expr_Range; subtype Bare_Quantified_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Quantified_Expr) or else Kind (Bare_Quantified_Expr) in Ada_Quantified_Expr_Range; subtype Bare_Raise_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Raise_Expr) or else Kind (Bare_Raise_Expr) in Ada_Raise_Expr_Range; subtype Bare_Un_Op is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Un_Op) or else Kind (Bare_Un_Op) in Ada_Un_Op_Range; subtype Bare_Handled_Stmts is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Handled_Stmts) or else Kind (Bare_Handled_Stmts) in Ada_Handled_Stmts_Range; subtype Bare_Interface_Kind is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Interface_Kind) or else Kind (Bare_Interface_Kind) in Ada_Interface_Kind; subtype Bare_Interface_Kind_Limited is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Interface_Kind_Limited) or else Kind (Bare_Interface_Kind_Limited) in Ada_Interface_Kind_Limited_Range; subtype Bare_Interface_Kind_Protected is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Interface_Kind_Protected) or else Kind (Bare_Interface_Kind_Protected) in Ada_Interface_Kind_Protected_Range; subtype Bare_Interface_Kind_Synchronized is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Interface_Kind_Synchronized) or else Kind (Bare_Interface_Kind_Synchronized) in Ada_Interface_Kind_Synchronized_Range; subtype Bare_Interface_Kind_Task is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Interface_Kind_Task) or else Kind (Bare_Interface_Kind_Task) in Ada_Interface_Kind_Task_Range; subtype Bare_Iter_Type is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Iter_Type) or else Kind (Bare_Iter_Type) in Ada_Iter_Type; subtype Bare_Iter_Type_In is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Iter_Type_In) or else Kind (Bare_Iter_Type_In) in Ada_Iter_Type_In_Range; subtype Bare_Iter_Type_Of is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Iter_Type_Of) or else Kind (Bare_Iter_Type_Of) in Ada_Iter_Type_Of_Range; subtype Bare_Library_Item is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Library_Item) or else Kind (Bare_Library_Item) in Ada_Library_Item_Range; subtype Bare_Limited_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Limited_Node) or else Kind (Bare_Limited_Node) in Ada_Limited_Node; subtype Bare_Limited_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Limited_Absent) or else Kind (Bare_Limited_Absent) in Ada_Limited_Absent_Range; subtype Bare_Limited_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Limited_Present) or else Kind (Bare_Limited_Present) in Ada_Limited_Present_Range; subtype Bare_Loop_Spec is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Loop_Spec) or else Kind (Bare_Loop_Spec) in Ada_Loop_Spec; subtype Bare_For_Loop_Spec is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_For_Loop_Spec) or else Kind (Bare_For_Loop_Spec) in Ada_For_Loop_Spec_Range; subtype Bare_While_Loop_Spec is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_While_Loop_Spec) or else Kind (Bare_While_Loop_Spec) in Ada_While_Loop_Spec_Range; subtype Bare_Mode is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Mode) or else Kind (Bare_Mode) in Ada_Mode; subtype Bare_Mode_Default is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Mode_Default) or else Kind (Bare_Mode_Default) in Ada_Mode_Default_Range; subtype Bare_Mode_In is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Mode_In) or else Kind (Bare_Mode_In) in Ada_Mode_In_Range; subtype Bare_Mode_In_Out is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Mode_In_Out) or else Kind (Bare_Mode_In_Out) in Ada_Mode_In_Out_Range; subtype Bare_Mode_Out is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Mode_Out) or else Kind (Bare_Mode_Out) in Ada_Mode_Out_Range; subtype Bare_Multi_Abstract_State_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Multi_Abstract_State_Decl) or else Kind (Bare_Multi_Abstract_State_Decl) in Ada_Multi_Abstract_State_Decl_Range; subtype Bare_Not_Null is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Not_Null) or else Kind (Bare_Not_Null) in Ada_Not_Null; subtype Bare_Not_Null_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Not_Null_Absent) or else Kind (Bare_Not_Null_Absent) in Ada_Not_Null_Absent_Range; subtype Bare_Not_Null_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Not_Null_Present) or else Kind (Bare_Not_Null_Present) in Ada_Not_Null_Present_Range; subtype Bare_Null_Component_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Null_Component_Decl) or else Kind (Bare_Null_Component_Decl) in Ada_Null_Component_Decl_Range; subtype Bare_Others_Designator is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Others_Designator) or else Kind (Bare_Others_Designator) in Ada_Others_Designator_Range; subtype Bare_Overriding_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Overriding_Node) or else Kind (Bare_Overriding_Node) in Ada_Overriding_Node; subtype Bare_Overriding_Not_Overriding is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Overriding_Not_Overriding) or else Kind (Bare_Overriding_Not_Overriding) in Ada_Overriding_Not_Overriding_Range; subtype Bare_Overriding_Overriding is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Overriding_Overriding) or else Kind (Bare_Overriding_Overriding) in Ada_Overriding_Overriding_Range; subtype Bare_Overriding_Unspecified is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Overriding_Unspecified) or else Kind (Bare_Overriding_Unspecified) in Ada_Overriding_Unspecified_Range; subtype Bare_Params is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Params) or else Kind (Bare_Params) in Ada_Params_Range; subtype Bare_Paren_Abstract_State_Decl is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Paren_Abstract_State_Decl) or else Kind (Bare_Paren_Abstract_State_Decl) in Ada_Paren_Abstract_State_Decl_Range; subtype Bare_Pragma_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Pragma_Node) or else Kind (Bare_Pragma_Node) in Ada_Pragma_Node_Range; subtype Bare_Private_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Private_Node) or else Kind (Bare_Private_Node) in Ada_Private_Node; subtype Bare_Private_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Private_Absent) or else Kind (Bare_Private_Absent) in Ada_Private_Absent_Range; subtype Bare_Private_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Private_Present) or else Kind (Bare_Private_Present) in Ada_Private_Present_Range; subtype Bare_Protected_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Protected_Def) or else Kind (Bare_Protected_Def) in Ada_Protected_Def_Range; subtype Bare_Protected_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Protected_Node) or else Kind (Bare_Protected_Node) in Ada_Protected_Node; subtype Bare_Protected_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Protected_Absent) or else Kind (Bare_Protected_Absent) in Ada_Protected_Absent_Range; subtype Bare_Protected_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Protected_Present) or else Kind (Bare_Protected_Present) in Ada_Protected_Present_Range; subtype Bare_Quantifier is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Quantifier) or else Kind (Bare_Quantifier) in Ada_Quantifier; subtype Bare_Quantifier_All is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Quantifier_All) or else Kind (Bare_Quantifier_All) in Ada_Quantifier_All_Range; subtype Bare_Quantifier_Some is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Quantifier_Some) or else Kind (Bare_Quantifier_Some) in Ada_Quantifier_Some_Range; subtype Bare_Range_Spec is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Range_Spec) or else Kind (Bare_Range_Spec) in Ada_Range_Spec_Range; subtype Bare_Renaming_Clause is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Renaming_Clause) or else Kind (Bare_Renaming_Clause) in Ada_Renaming_Clause_Range; subtype Bare_Synthetic_Renaming_Clause is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Synthetic_Renaming_Clause) or else Kind (Bare_Synthetic_Renaming_Clause) in Ada_Synthetic_Renaming_Clause_Range; subtype Bare_Reverse_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Reverse_Node) or else Kind (Bare_Reverse_Node) in Ada_Reverse_Node; subtype Bare_Reverse_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Reverse_Absent) or else Kind (Bare_Reverse_Absent) in Ada_Reverse_Absent_Range; subtype Bare_Reverse_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Reverse_Present) or else Kind (Bare_Reverse_Present) in Ada_Reverse_Present_Range; subtype Bare_Select_When_Part is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Select_When_Part) or else Kind (Bare_Select_When_Part) in Ada_Select_When_Part_Range; subtype Bare_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Stmt) or else Kind (Bare_Stmt) in Ada_Stmt; subtype Bare_Composite_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Composite_Stmt) or else Kind (Bare_Composite_Stmt) in Ada_Composite_Stmt; subtype Bare_Accept_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Accept_Stmt) or else Kind (Bare_Accept_Stmt) in Ada_Accept_Stmt_Range; subtype Bare_Accept_Stmt_With_Stmts is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Accept_Stmt_With_Stmts) or else Kind (Bare_Accept_Stmt_With_Stmts) in Ada_Accept_Stmt_With_Stmts_Range; subtype Bare_Base_Loop_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Loop_Stmt) or else Kind (Bare_Base_Loop_Stmt) in Ada_Base_Loop_Stmt; subtype Bare_For_Loop_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_For_Loop_Stmt) or else Kind (Bare_For_Loop_Stmt) in Ada_For_Loop_Stmt_Range; subtype Bare_Loop_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Loop_Stmt) or else Kind (Bare_Loop_Stmt) in Ada_Loop_Stmt_Range; subtype Bare_While_Loop_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_While_Loop_Stmt) or else Kind (Bare_While_Loop_Stmt) in Ada_While_Loop_Stmt_Range; subtype Bare_Block_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Block_Stmt) or else Kind (Bare_Block_Stmt) in Ada_Block_Stmt; subtype Bare_Begin_Block is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Begin_Block) or else Kind (Bare_Begin_Block) in Ada_Begin_Block_Range; subtype Bare_Decl_Block is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Decl_Block) or else Kind (Bare_Decl_Block) in Ada_Decl_Block_Range; subtype Bare_Case_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Case_Stmt) or else Kind (Bare_Case_Stmt) in Ada_Case_Stmt_Range; subtype Bare_Extended_Return_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Extended_Return_Stmt) or else Kind (Bare_Extended_Return_Stmt) in Ada_Extended_Return_Stmt_Range; subtype Bare_If_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_If_Stmt) or else Kind (Bare_If_Stmt) in Ada_If_Stmt_Range; subtype Bare_Named_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Named_Stmt) or else Kind (Bare_Named_Stmt) in Ada_Named_Stmt_Range; subtype Bare_Select_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Select_Stmt) or else Kind (Bare_Select_Stmt) in Ada_Select_Stmt_Range; subtype Bare_Error_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Error_Stmt) or else Kind (Bare_Error_Stmt) in Ada_Error_Stmt_Range; subtype Bare_Simple_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Simple_Stmt) or else Kind (Bare_Simple_Stmt) in Ada_Simple_Stmt; subtype Bare_Abort_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Abort_Stmt) or else Kind (Bare_Abort_Stmt) in Ada_Abort_Stmt_Range; subtype Bare_Assign_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Assign_Stmt) or else Kind (Bare_Assign_Stmt) in Ada_Assign_Stmt_Range; subtype Bare_Call_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Call_Stmt) or else Kind (Bare_Call_Stmt) in Ada_Call_Stmt_Range; subtype Bare_Delay_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Delay_Stmt) or else Kind (Bare_Delay_Stmt) in Ada_Delay_Stmt_Range; subtype Bare_Exit_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Exit_Stmt) or else Kind (Bare_Exit_Stmt) in Ada_Exit_Stmt_Range; subtype Bare_Goto_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Goto_Stmt) or else Kind (Bare_Goto_Stmt) in Ada_Goto_Stmt_Range; subtype Bare_Label is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Label) or else Kind (Bare_Label) in Ada_Label_Range; subtype Bare_Null_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Null_Stmt) or else Kind (Bare_Null_Stmt) in Ada_Null_Stmt_Range; subtype Bare_Raise_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Raise_Stmt) or else Kind (Bare_Raise_Stmt) in Ada_Raise_Stmt_Range; subtype Bare_Requeue_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Requeue_Stmt) or else Kind (Bare_Requeue_Stmt) in Ada_Requeue_Stmt_Range; subtype Bare_Return_Stmt is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Return_Stmt) or else Kind (Bare_Return_Stmt) in Ada_Return_Stmt_Range; subtype Bare_Terminate_Alternative is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Terminate_Alternative) or else Kind (Bare_Terminate_Alternative) in Ada_Terminate_Alternative_Range; subtype Bare_Subp_Kind is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Subp_Kind) or else Kind (Bare_Subp_Kind) in Ada_Subp_Kind; subtype Bare_Subp_Kind_Function is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Subp_Kind_Function) or else Kind (Bare_Subp_Kind_Function) in Ada_Subp_Kind_Function_Range; subtype Bare_Subp_Kind_Procedure is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Subp_Kind_Procedure) or else Kind (Bare_Subp_Kind_Procedure) in Ada_Subp_Kind_Procedure_Range; subtype Bare_Subunit is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Subunit) or else Kind (Bare_Subunit) in Ada_Subunit_Range; subtype Bare_Synchronized_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Synchronized_Node) or else Kind (Bare_Synchronized_Node) in Ada_Synchronized_Node; subtype Bare_Synchronized_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Synchronized_Absent) or else Kind (Bare_Synchronized_Absent) in Ada_Synchronized_Absent_Range; subtype Bare_Synchronized_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Synchronized_Present) or else Kind (Bare_Synchronized_Present) in Ada_Synchronized_Present_Range; subtype Bare_Tagged_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Tagged_Node) or else Kind (Bare_Tagged_Node) in Ada_Tagged_Node; subtype Bare_Tagged_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Tagged_Absent) or else Kind (Bare_Tagged_Absent) in Ada_Tagged_Absent_Range; subtype Bare_Tagged_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Tagged_Present) or else Kind (Bare_Tagged_Present) in Ada_Tagged_Present_Range; subtype Bare_Task_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Task_Def) or else Kind (Bare_Task_Def) in Ada_Task_Def_Range; subtype Bare_Type_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Type_Def) or else Kind (Bare_Type_Def) in Ada_Type_Def; subtype Bare_Access_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Access_Def) or else Kind (Bare_Access_Def) in Ada_Access_Def; subtype Bare_Access_To_Subp_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Access_To_Subp_Def) or else Kind (Bare_Access_To_Subp_Def) in Ada_Access_To_Subp_Def_Range; subtype Bare_Base_Type_Access_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Base_Type_Access_Def) or else Kind (Bare_Base_Type_Access_Def) in Ada_Base_Type_Access_Def; subtype Bare_Anonymous_Type_Access_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Anonymous_Type_Access_Def) or else Kind (Bare_Anonymous_Type_Access_Def) in Ada_Anonymous_Type_Access_Def_Range; subtype Bare_Type_Access_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Type_Access_Def) or else Kind (Bare_Type_Access_Def) in Ada_Type_Access_Def_Range; subtype Bare_Array_Type_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Array_Type_Def) or else Kind (Bare_Array_Type_Def) in Ada_Array_Type_Def_Range; subtype Bare_Derived_Type_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Derived_Type_Def) or else Kind (Bare_Derived_Type_Def) in Ada_Derived_Type_Def_Range; subtype Bare_Enum_Type_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Enum_Type_Def) or else Kind (Bare_Enum_Type_Def) in Ada_Enum_Type_Def_Range; subtype Bare_Formal_Discrete_Type_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Formal_Discrete_Type_Def) or else Kind (Bare_Formal_Discrete_Type_Def) in Ada_Formal_Discrete_Type_Def_Range; subtype Bare_Interface_Type_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Interface_Type_Def) or else Kind (Bare_Interface_Type_Def) in Ada_Interface_Type_Def_Range; subtype Bare_Mod_Int_Type_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Mod_Int_Type_Def) or else Kind (Bare_Mod_Int_Type_Def) in Ada_Mod_Int_Type_Def_Range; subtype Bare_Private_Type_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Private_Type_Def) or else Kind (Bare_Private_Type_Def) in Ada_Private_Type_Def_Range; subtype Bare_Real_Type_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Real_Type_Def) or else Kind (Bare_Real_Type_Def) in Ada_Real_Type_Def; subtype Bare_Decimal_Fixed_Point_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Decimal_Fixed_Point_Def) or else Kind (Bare_Decimal_Fixed_Point_Def) in Ada_Decimal_Fixed_Point_Def_Range; subtype Bare_Floating_Point_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Floating_Point_Def) or else Kind (Bare_Floating_Point_Def) in Ada_Floating_Point_Def_Range; subtype Bare_Ordinary_Fixed_Point_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Ordinary_Fixed_Point_Def) or else Kind (Bare_Ordinary_Fixed_Point_Def) in Ada_Ordinary_Fixed_Point_Def_Range; subtype Bare_Record_Type_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Record_Type_Def) or else Kind (Bare_Record_Type_Def) in Ada_Record_Type_Def_Range; subtype Bare_Signed_Int_Type_Def is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Signed_Int_Type_Def) or else Kind (Bare_Signed_Int_Type_Def) in Ada_Signed_Int_Type_Def_Range; subtype Bare_Type_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Type_Expr) or else Kind (Bare_Type_Expr) in Ada_Type_Expr; subtype Bare_Anonymous_Type is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Anonymous_Type) or else Kind (Bare_Anonymous_Type) in Ada_Anonymous_Type_Range; subtype Bare_Enum_Lit_Synth_Type_Expr is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Enum_Lit_Synth_Type_Expr) or else Kind (Bare_Enum_Lit_Synth_Type_Expr) in Ada_Enum_Lit_Synth_Type_Expr_Range; subtype Bare_Subtype_Indication is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Subtype_Indication) or else Kind (Bare_Subtype_Indication) in Ada_Subtype_Indication_Range; subtype Bare_Constrained_Subtype_Indication is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Constrained_Subtype_Indication) or else Kind (Bare_Constrained_Subtype_Indication) in Ada_Constrained_Subtype_Indication_Range; subtype Bare_Discrete_Subtype_Indication is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Discrete_Subtype_Indication) or else Kind (Bare_Discrete_Subtype_Indication) in Ada_Discrete_Subtype_Indication_Range; subtype Bare_Unconstrained_Array_Index is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Unconstrained_Array_Index) or else Kind (Bare_Unconstrained_Array_Index) in Ada_Unconstrained_Array_Index_Range; subtype Bare_Until_Node is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Until_Node) or else Kind (Bare_Until_Node) in Ada_Until_Node; subtype Bare_Until_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Until_Absent) or else Kind (Bare_Until_Absent) in Ada_Until_Absent_Range; subtype Bare_Until_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Until_Present) or else Kind (Bare_Until_Present) in Ada_Until_Present_Range; subtype Bare_Use_Clause is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Use_Clause) or else Kind (Bare_Use_Clause) in Ada_Use_Clause; subtype Bare_Use_Package_Clause is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Use_Package_Clause) or else Kind (Bare_Use_Package_Clause) in Ada_Use_Package_Clause_Range; subtype Bare_Use_Type_Clause is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Use_Type_Clause) or else Kind (Bare_Use_Type_Clause) in Ada_Use_Type_Clause_Range; subtype Bare_Variant is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Variant) or else Kind (Bare_Variant) in Ada_Variant_Range; subtype Bare_Variant_Part is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_Variant_Part) or else Kind (Bare_Variant_Part) in Ada_Variant_Part_Range; subtype Bare_With_Clause is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_With_Clause) or else Kind (Bare_With_Clause) in Ada_With_Clause_Range; subtype Bare_With_Private is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_With_Private) or else Kind (Bare_With_Private) in Ada_With_Private; subtype Bare_With_Private_Absent is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_With_Private_Absent) or else Kind (Bare_With_Private_Absent) in Ada_With_Private_Absent_Range; subtype Bare_With_Private_Present is Bare_Ada_Node with Dynamic_Predicate => Is_Null (Bare_With_Private_Present) or else Kind (Bare_With_Private_Present) in Ada_With_Private_Present_Range; package Alloc_AST_List_Array is new Langkit_Support.Bump_Ptr.Array_Alloc (Element_T => Bare_Ada_Node, Index_Type => Positive); -- Allocator for array of nodes, used in list nodes type Rewriting_Handle_Pointer is new System.Address; No_Rewriting_Handle_Pointer : constant Rewriting_Handle_Pointer := Rewriting_Handle_Pointer (System.Null_Address); Properties_Traces : constant GNATCOLL.Traces.Trace_Handle := GNATCOLL.Traces.Create ("LANGKIT.PROPERTIES", GNATCOLL.Traces.On ); function Short_Text_Image (Self : Bare_Ada_Node) return Text_Type; -- Return a short representation of the node, containing just the kind -- name and the sloc, or "None" if Self is null. function Is_Token_Node (Node : Bare_Ada_Node) return Boolean; -- Return whether this node is a node that contains only a single token. function Is_Synthetic (Node : Bare_Ada_Node) return Boolean; -- Return whether this node is synthetic. --------------------------- -- Iterators safety nets -- --------------------------- type Iterator_Safety_Net is record Context : Internal_Context; Context_Serial : Version_Number; Context_Version : Version_Number; -- Analysis context, its serial number and version number at the time -- this safety net was produced. end record; No_Iterator_Safety_Net : constant Iterator_Safety_Net := (null, 0, 0); function Create_Safety_Net (Context : Internal_Context) return Iterator_Safety_Net; -- Create an iterator safety net from the given Context procedure Check_Safety_Net (Self : Iterator_Safety_Net); -- Check that the given iterator safety net is still valid, raising a -- Stale_Reference_Error if it is not. --------------------------- -- Environments handling -- --------------------------- type Internal_Metadata; type Internal_Metadata is record Dottable_Subp : aliased Boolean; -- Whether the stored element is a subprogram accessed through the -- dot notation Access_Entity : aliased Boolean; -- Whether the accessed entity is an anonymous access to it or -- not. Primitive : aliased Bare_Ada_Node; -- The type for which this subprogram is a primitive, if any Primitive_Real_Type : aliased Bare_Ada_Node; -- The type for which this subprogram is a primitive, if any end record with Convention => C; function Hash (R : Internal_Metadata) return Hash_Type; function Trace_Image (R : Internal_Metadata) return String; No_Metadata : constant Internal_Metadata := ( Dottable_Subp => False, Access_Entity => False, Primitive => No_Bare_Ada_Node, Primitive_Real_Type => No_Bare_Ada_Node ); type Internal_Inner_Env_Assoc; type Internal_Inner_Env_Assoc is record Key : aliased Symbol_Type; Val : aliased Bare_Ada_Node; Metadata : aliased Internal_Metadata; end record with Convention => C; function Trace_Image (R : Internal_Inner_Env_Assoc) return String; No_Inner_Env_Assoc : constant Internal_Inner_Env_Assoc := ( Key => null, Val => No_Bare_Ada_Node, Metadata => No_Metadata ); function Get_Key (Self : Internal_Inner_Env_Assoc) return Symbol_Type is (Self.Key); function Get_Node (Self : Internal_Inner_Env_Assoc) return Bare_Ada_Node is (Self.Val); function Get_Metadata (Self : Internal_Inner_Env_Assoc) return Internal_Metadata is (Self.Metadata); type Internal_Inner_Env_Assoc_Array_Record; type Internal_Inner_Env_Assoc_Array_Access is access all Internal_Inner_Env_Assoc_Array_Record; type Internal_Internal_Inner_Env_Assoc_Iterator; type Internal_Inner_Env_Assoc_Iterator_Access is access all Internal_Internal_Inner_Env_Assoc_Iterator; type Internal_Internal_Inner_Env_Assoc_Array is array (Positive range <>) of Internal_Inner_Env_Assoc; type Internal_Inner_Env_Assoc_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Inner_Env_Assoc_Array (1 .. N); end record; Empty_Inner_Env_Assoc_Array_Record : aliased Internal_Inner_Env_Assoc_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Inner_Env_Assoc_Array_Type : constant Internal_Inner_Env_Assoc_Array_Access := Empty_Inner_Env_Assoc_Array_Record'Access; function Create_Internal_Inner_Env_Assoc_Array (Items_Count : Natural) return Internal_Inner_Env_Assoc_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Inner_Env_Assoc_Array (Items : Internal_Internal_Inner_Env_Assoc_Array) return Internal_Inner_Env_Assoc_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Inner_Env_Assoc_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Inner_Env_Assoc; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Inner_Env_Assoc_Array_Access) return Internal_Inner_Env_Assoc_Array_Access; function Length (T : Internal_Inner_Env_Assoc_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Inner_Env_Assoc_Array_Access); procedure Dec_Ref (T : in out Internal_Inner_Env_Assoc_Array_Access); function Equivalent (L, R : Internal_Inner_Env_Assoc_Array_Access) return Boolean; function Trace_Image (A : Internal_Inner_Env_Assoc_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Inner_Env_Assoc_Array_Record, Internal_Inner_Env_Assoc_Array_Access); type Internal_Internal_Inner_Env_Assoc_Iterator is record Ref_Count : Integer; -- Reference count. The iterator is freed when this drops to zero. -- Negative values are interpreted as "always living singleton". Safety_Net : Iterator_Safety_Net; -- Safety net for the iterator. Used to check that values produced by -- the iterator are still valid. Unlike for other types, we put the -- safety net in the internal type so that it can be used in all other -- APIs (Python, ...). -- -- While other types (except nodes) are "deeply" converted to native -- APIs (for instance: internal arrays are turned into native Python -- lists, likewise for array items, etc.), iterators are lazy, so the -- deep conversion is not possible. Elements : Internal_Inner_Env_Assoc_Array_Access; Index : Positive; end record; Empty_Internal_Internal_Inner_Env_Assoc_Iterator : aliased Internal_Internal_Inner_Env_Assoc_Iterator := (Ref_Count => -1, Safety_Net => No_Iterator_Safety_Net, Elements => No_Internal_Inner_Env_Assoc_Array_Type, Index => 1); No_Internal_Inner_Env_Assoc_Iterator_Type : constant Internal_Inner_Env_Assoc_Iterator_Access := Empty_Internal_Internal_Inner_Env_Assoc_Iterator'Access; function Next (T : Internal_Inner_Env_Assoc_Iterator_Access; Element : out Internal_Inner_Env_Assoc) return Boolean; procedure Inc_Ref (T : Internal_Inner_Env_Assoc_Iterator_Access); procedure Dec_Ref (T : in out Internal_Inner_Env_Assoc_Iterator_Access); function Trace_Image (A : Internal_Inner_Env_Assoc_Iterator_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Internal_Inner_Env_Assoc_Iterator, Internal_Inner_Env_Assoc_Iterator_Access); function Inner_Env_Assoc_Get (Self : Internal_Inner_Env_Assoc_Array_Access; Index : Positive) return Internal_Inner_Env_Assoc is (Self.Items (Index)); function Combine (L, R : Internal_Metadata) return Internal_Metadata; -- The combine function on environments metadata does a boolean Or on every -- boolean component of the env metadata. function Can_Reach (El, From : Bare_Ada_Node) return Boolean; -- Return whether El can reach From, from a sequential viewpoint. If -- elements are declared in different units, it will always return True, -- eg this does not handle general visibility issues, just sequentiality of -- declarations. function AST_Envs_Node_Text_Image (Node : Bare_Ada_Node; Short : Boolean := True) return Text_Type; -- Return a "sourcefile:lineno:columnno" corresponding to the starting sloc -- of Node. Used to create a human-readable representation for env. -- rebindings. function Is_Rebindable (Node : Bare_Ada_Node) return Boolean; function Acquire_Rebinding (Node : Bare_Ada_Node; Parent : Env_Rebindings; Old_Env, New_Env : Lexical_Env) return Env_Rebindings; -- Initialize and return a fresh rebinding procedure Release_Rebinding (Self : in out Env_Rebindings); -- Mark the rebinding as unused, so that a future call to Acquire_Rebinding -- can return it. procedure Register_Rebinding (Node : Bare_Ada_Node; Rebinding : Env_Rebindings); -- Register a rebinding to be destroyed when Node's analysis unit is -- destroyed or reparsed. function Element_Parent (Node : Bare_Ada_Node) return Bare_Ada_Node; function Hash (Node : Bare_Ada_Node) return Hash_Type; function Node_Unit (Node : Bare_Ada_Node) return Generic_Unit_Ptr; function Named_Hash (Node : Bare_Ada_Node) return Hash_Type is (Hash (Node)); No_Analysis_Unit : constant Internal_Unit := null; function Convert_Unit is new Ada.Unchecked_Conversion (Generic_Unit_Ptr, Internal_Unit); function Convert_Unit is new Ada.Unchecked_Conversion (Internal_Unit, Generic_Unit_Ptr); function Unit_Version (Unit : Generic_Unit_Ptr) return Version_Number; -- Return the version for Unit. Version is a number that is incremented -- every time Unit changes. function Get_Context_Version (Node : Bare_Ada_Node) return Version_Number; -- Assuming that Node is not null, return the version number for Node's -- context, which is incremented every time a unit in this context is -- parsed. type Ref_Category is (Inherited_Primitives, Nocat); type Ref_Categories is array (Ref_Category) of Boolean; pragma Pack (Ref_Categories); package AST_Envs is new Langkit_Support.Lexical_Envs_Impl (Get_Unit_Version => Unit_Version, Node_Type => Bare_Ada_Node, Node_Metadata => Internal_Metadata, No_Node => null, Empty_Metadata => No_Metadata, Node_Unit => Node_Unit, Node_Hash => Named_Hash, Metadata_Hash => Hash, Combine => Combine, Node_Text_Image => AST_Envs_Node_Text_Image, Acquire_Rebinding => Acquire_Rebinding, Register_Rebinding => Register_Rebinding, Ref_Category => Ref_Category, Ref_Categories => Ref_Categories, Inner_Env_Assoc => Internal_Inner_Env_Assoc, Inner_Env_Assoc_Array => Internal_Inner_Env_Assoc_Array_Access, Get => Inner_Env_Assoc_Get); use AST_Envs; subtype Internal_Entity is AST_Envs.Entity; subtype Internal_Entity_Info is AST_Envs.Entity_Info; No_Entity_Info : constant Internal_Entity_Info := (No_Metadata, null, False); No_Entity : constant Internal_Entity := (null, No_Entity_Info); function Hash_Entity (Self : Internal_Entity) return Hash_Type; -- Hash function to use in the public API. It's like the regular one, but -- disregards metadata. function Compare_Entity (Left, Right : Internal_Entity) return Boolean; -- Equality function to use in the public API. It's like the regular one, -- but disregards metadata. function Create_Dynamic_Lexical_Env (Self : Bare_Ada_Node; Assocs_Getter : Inner_Env_Assocs_Resolver; Assoc_Resolver : Entity_Resolver; Transitive_Parent : Boolean) return Lexical_Env; -- Helper for properties code generation: wrapper around -- AST_Envs.Create_Dynamic_Lexical_Env. function Hash (B : Boolean) return Hash_Type; function Hash (I : Integer) return Hash_Type; -------------------------- -- Big integers wrapper -- -------------------------- type Big_Integer_Record is limited record Value : GNATCOLL.GMP.Integers.Big_Integer; Ref_Count : Integer; -- Number of owners. When it drops to 0, this record can be destroyed. -- If -1, this is a static big integer: Inc_Ref and Dec_Ref are no-ops. end record; type Big_Integer_Type is access all Big_Integer_Record; function Create_Big_Integer (Image : String; Base : Integer := 10) return Big_Integer_Type; function Create_Big_Integer (Big_Int : GNATCOLL.GMP.Integers.Big_Integer) return Big_Integer_Type; function Create_Big_Integer (Int : Integer) return Big_Integer_Type; function Create_Public_Big_Integer (Big_Int : Big_Integer_Type) return GNATCOLL.GMP.Integers.Big_Integer; No_Big_Integer_Record : aliased Big_Integer_Record := (Value => <>, Ref_Count => -1); No_Big_Integer : constant Big_Integer_Type := No_Big_Integer_Record'Access; function To_Integer (Big_Int : Big_Integer_Type) return Integer; -- Convert Big_Int into a regular integer, raising a Property_Error if it -- is out of range. procedure Inc_Ref (Big_Int : Big_Integer_Type); procedure Dec_Ref (Big_Int : in out Big_Integer_Type); function Equivalent (Left, Right : Big_Integer_Type) return Boolean; function "<" (Left, Right : Big_Integer_Type) return Boolean; function "<=" (Left, Right : Big_Integer_Type) return Boolean; function ">" (Left, Right : Big_Integer_Type) return Boolean; function ">=" (Left, Right : Big_Integer_Type) return Boolean; function "+" (Left, Right : Big_Integer_Type) return Big_Integer_Type; function "-" (Left, Right : Big_Integer_Type) return Big_Integer_Type; function Trace_Image (I : Big_Integer_Type) return String; function Trace_Image (Node : Bare_Ada_Node; Decoration : Boolean := True) return String; function Is_Incomplete (Node : Bare_Ada_Node) return Boolean; -- Return whether this node is incomplete or not. Incomplete nodes are a -- result of the parsing of a node failing as a result of a NoBacktrack -- parser annotation. function Kind_Name (Node : Bare_Ada_Node) return String; -- Return the concrete kind for Node --------------------------- -- Adalog instantiations -- --------------------------- function Text_Image (Ent : Internal_Entity) return Text_Type; function Image (Ent : Internal_Entity) return String; -- Return a representation of this entity as a string. package Eq_Node is new Langkit_Support.Adalog.Eq_Same (LR_Type => Internal_Entity, Element_Image => Image); subtype Logic_Var is Eq_Node.Refs.Raw_Var; subtype Logic_Var_Record is Eq_Node.Refs.Var; Null_Var : constant Logic_Var := null; Null_Var_Record : constant Logic_Var_Record := (Reset => True, others => <>); subtype Logic_Equation is Relation; Null_Logic_Equation : constant Logic_Equation := null; function Trace_Image (K : Analysis_Unit_Kind) return String; function Trace_Image (B : Boolean) return String; function Trace_Image (I : Integer) return String; function Trace_Image (S : Symbol_Type) return String; function Trace_Image (Env : Lexical_Env) return String; function Trace_Image (R : Env_Rebindings) return String; function Trace_Image (Unit : Internal_Unit) return String; function Trace_Image (Eq : Logic_Equation) return String; function Trace_Image (Var : Logic_Var) return String; type Resolution_Val is record Cache_Version : Version_Number; Rebindings : Env_Rebindings; Return_Value : Boolean; Raised_Exc : Boolean; end record; package Nameres_Maps is new Ada.Containers.Hashed_Maps (Key_Type => Bare_Ada_Node, Element_Type => Resolution_Val, Hash => Hash, Equivalent_Keys => "=", "=" => "="); ----------------------------------------------- -- Structure types (incomplete declarations) -- ----------------------------------------------- type Internal_Entity_Expr; type Internal_Aspect; -- Composite field representing the aspect of an entity (RM 13). type Internal_Entity_Basic_Decl; type Internal_Completion_Item; type Internal_DesignatedEnv; -- Designate an environment for an env spec action. -- -- The designated environment can be either, depending on the ``Kind`` -- field: -- -- * If ``Kind`` is ``None``, no environment is designated. -- -- * If ``Kind`` is ``Current_Env``, designate the current environment at -- this point during PLE. -- -- * If ``Kind`` is ``Named_Env``, designate the environment which has -- precedence for the ``Env_Name`` environment name. If ``Env_Name`` is -- null, this designates to environment. -- -- * If ``Kind`` is ``Direct_Env``, the direct value for the designated -- environment. That environment must be a primary one and cannot be -- foreign to the node currently processed by PLE. If it is the empty -- environment, do nothing. type Internal_Discrete_Range; -- Represent the range of a discrete type or subtype. The bounds are not -- evaluated, you need to call ``eval_as_int`` on them, if they're static, -- to get their value. type Internal_Entity_Ada_List; type Internal_Entity_Ada_Node_List; type Internal_Entity_Alternatives_List; type Internal_Entity_Name; type Internal_Entity_Single_Tok_Node; type Internal_Entity_Base_Id; type Internal_Entity_Identifier; type Internal_Discriminant_Values; -- Represent a set of values (as a list of choices) on a discriminant. type Internal_Doc_Annotation; -- Documentation annotation. type Internal_Entity_Abort_Node; type Internal_Entity_Abort_Absent; type Internal_Entity_Abort_Present; type Internal_Entity_Stmt; type Internal_Entity_Simple_Stmt; type Internal_Entity_Abort_Stmt; type Internal_Entity_Abstract_Node; type Internal_Entity_Abstract_Absent; type Internal_Entity_Basic_Subp_Decl; type Internal_Entity_Classic_Subp_Decl; type Internal_Entity_Formal_Subp_Decl; type Internal_Entity_Abstract_Formal_Subp_Decl; type Internal_Entity_Abstract_Present; type Internal_Entity_Abstract_State_Decl; type Internal_Entity_Abstract_State_Decl_Expr; type Internal_Entity_Abstract_State_Decl_List; type Internal_Entity_Abstract_Subp_Decl; type Internal_Entity_Composite_Stmt; type Internal_Entity_Accept_Stmt; type Internal_Entity_Accept_Stmt_With_Stmts; type Internal_Entity_Type_Def; type Internal_Entity_Access_Def; type Internal_Entity_Access_To_Subp_Def; type Internal_Entity_Base_Aggregate; type Internal_Entity_Aggregate; type Internal_Entity_Basic_Assoc; type Internal_Entity_Aggregate_Assoc; type Internal_Entity_Aliased_Node; type Internal_Entity_Aliased_Absent; type Internal_Entity_Aliased_Present; type Internal_Entity_All_Node; type Internal_Entity_All_Absent; type Internal_Entity_All_Present; type Internal_Entity_Allocator; type Internal_Entity_Anonymous_Expr_Decl; type Internal_Entity_Type_Expr; type Internal_Entity_Anonymous_Type; type Internal_Entity_Base_Type_Access_Def; type Internal_Entity_Anonymous_Type_Access_Def; type Internal_Entity_Base_Type_Decl; type Internal_Entity_Type_Decl; type Internal_Entity_Anonymous_Type_Decl; type Internal_Entity_Array_Indices; type Internal_Entity_Array_Type_Def; type Internal_Entity_Aspect_Assoc; type Internal_Entity_Aspect_Assoc_List; type Internal_Entity_Aspect_Clause; type Internal_Entity_Aspect_Spec; type Internal_Entity_Assign_Stmt; type Internal_Entity_Basic_Assoc_List; type Internal_Entity_Assoc_List; type Internal_Entity_At_Clause; type Internal_Entity_Attribute_Def_Clause; type Internal_Entity_Attribute_Ref; type Internal_Entity_Base_Assoc; type Internal_Entity_Base_Assoc_List; type Internal_Entity_Base_Formal_Param_Decl; type Internal_Entity_Base_Formal_Param_Holder; type Internal_Entity_Base_Loop_Stmt; type Internal_Entity_Base_Package_Decl; type Internal_Entity_Base_Record_Def; type Internal_Entity_Body_Node; type Internal_Entity_Base_Subp_Body; type Internal_Entity_Base_Subp_Spec; type Internal_Entity_Base_Subtype_Decl; type Internal_Entity_Basic_Decl_List; type Internal_Entity_Block_Stmt; type Internal_Entity_Begin_Block; type Internal_Entity_Bin_Op; type Internal_Entity_Body_Stub; type Internal_Entity_Box_Expr; type Internal_Entity_Bracket_Aggregate; type Internal_Entity_Delta_Aggregate; type Internal_Entity_Bracket_Delta_Aggregate; type Internal_Entity_Call_Expr; type Internal_Entity_Call_Stmt; type Internal_Entity_Cond_Expr; type Internal_Entity_Case_Expr; type Internal_Entity_Case_Expr_Alternative; type Internal_Entity_Case_Expr_Alternative_List; type Internal_Entity_Case_Stmt; type Internal_Entity_Case_Stmt_Alternative; type Internal_Entity_Case_Stmt_Alternative_List; type Internal_Entity_Char_Literal; type Internal_Entity_Classwide_Type_Decl; type Internal_Entity_Compilation_Unit; type Internal_Entity_Compilation_Unit_List; type Internal_Entity_Component_Clause; type Internal_Entity_Component_Decl; type Internal_Entity_Component_Def; type Internal_Entity_Component_List; type Internal_Entity_Concrete_Formal_Subp_Decl; type Internal_Entity_Constant_Node; type Internal_Entity_Constant_Absent; type Internal_Entity_Constant_Present; type Internal_Entity_Constrained_Array_Indices; type Internal_Entity_Subtype_Indication; type Internal_Entity_Constrained_Subtype_Indication; type Internal_Entity_Constraint; type Internal_Entity_Constraint_List; type Internal_Entity_Contract_Case_Assoc; type Internal_Entity_Contract_Case_Assoc_List; type Internal_Entity_Contract_Cases; type Internal_Entity_Real_Type_Def; type Internal_Entity_Decimal_Fixed_Point_Def; type Internal_Entity_Decl_Block; type Internal_Entity_Decl_Expr; type Internal_Entity_Decl_List; type Internal_Entity_Declarative_Part; type Internal_Entity_Defining_Name; type Internal_Entity_Defining_Name_List; type Internal_Entity_Delay_Stmt; type Internal_Entity_Delta_Constraint; type Internal_Entity_Derived_Type_Def; type Internal_Entity_Digits_Constraint; type Internal_Entity_Discrete_Base_Subtype_Decl; type Internal_Entity_Discrete_Subtype_Indication; type Internal_Entity_Discrete_Subtype_Name; type Internal_Entity_Discriminant_Assoc; type Internal_Entity_Identifier_List; type Internal_Entity_Discriminant_Choice_List; type Internal_Entity_Discriminant_Constraint; type Internal_Entity_Discriminant_Part; type Internal_Entity_Discriminant_Spec; type Internal_Entity_Discriminant_Spec_List; type Internal_Entity_Dotted_Name; type Internal_Entity_Elsif_Expr_Part; type Internal_Entity_Elsif_Expr_Part_List; type Internal_Entity_Elsif_Stmt_Part; type Internal_Entity_Elsif_Stmt_Part_List; type Internal_Entity_End_Name; type Internal_Entity_Entry_Body; type Internal_Entity_Entry_Completion_Formal_Params; type Internal_Entity_Entry_Decl; type Internal_Entity_Entry_Index_Spec; type Internal_Entity_Entry_Spec; type Internal_Entity_Enum_Lit_Synth_Type_Expr; type Internal_Entity_Enum_Literal_Decl; type Internal_Entity_Enum_Literal_Decl_List; type Internal_Entity_Enum_Rep_Clause; type Internal_Entity_Enum_Subp_Spec; type Internal_Entity_Enum_Type_Def; type Internal_Entity_Error_Decl; type Internal_Entity_Error_Stmt; type Internal_Entity_Exception_Decl; type Internal_Entity_Exception_Handler; type Internal_Entity_Exit_Stmt; type Internal_Entity_Explicit_Deref; type Internal_Entity_Expr_List; type Internal_Entity_Expr_Alternatives_List; type Internal_Entity_Expr_Function; type Internal_Entity_Extended_Return_Stmt; type Internal_Entity_Object_Decl; type Internal_Entity_Extended_Return_Stmt_Object_Decl; type Internal_Entity_Floating_Point_Def; type Internal_Entity_Loop_Spec; type Internal_Entity_For_Loop_Spec; type Internal_Entity_For_Loop_Stmt; type Internal_Entity_For_Loop_Var_Decl; type Internal_Entity_Formal_Discrete_Type_Def; type Internal_Entity_Generic_Decl; type Internal_Entity_Generic_Formal; type Internal_Entity_Generic_Formal_Obj_Decl; type Internal_Entity_Generic_Formal_Package; type Internal_Entity_Generic_Formal_Part; type Internal_Entity_Generic_Formal_Subp_Decl; type Internal_Entity_Generic_Formal_Type_Decl; type Internal_Entity_Generic_Instantiation; type Internal_Entity_Generic_Package_Decl; type Internal_Entity_Generic_Package_Instantiation; type Internal_Entity_Generic_Package_Internal; type Internal_Entity_Generic_Renaming_Decl; type Internal_Entity_Generic_Package_Renaming_Decl; type Internal_Entity_Generic_Subp_Decl; type Internal_Entity_Generic_Subp_Instantiation; type Internal_Entity_Generic_Subp_Internal; type Internal_Entity_Generic_Subp_Renaming_Decl; type Internal_Entity_Goto_Stmt; type Internal_Entity_Handled_Stmts; type Internal_Entity_If_Expr; type Internal_Entity_If_Stmt; type Internal_Entity_Incomplete_Type_Decl; type Internal_Entity_Incomplete_Tagged_Type_Decl; type Internal_Entity_Index_Constraint; type Internal_Entity_Num_Literal; type Internal_Entity_Int_Literal; type Internal_Entity_Interface_Kind; type Internal_Entity_Interface_Kind_Limited; type Internal_Entity_Interface_Kind_Protected; type Internal_Entity_Interface_Kind_Synchronized; type Internal_Entity_Interface_Kind_Task; type Internal_Entity_Interface_Type_Def; type Internal_Entity_Iter_Type; type Internal_Entity_Iter_Type_In; type Internal_Entity_Iter_Type_Of; type Internal_Entity_Iterated_Assoc; type Internal_Entity_Known_Discriminant_Part; type Internal_Entity_Label; type Internal_Entity_Label_Decl; type Internal_Entity_Library_Item; type Internal_Entity_Limited_Node; type Internal_Entity_Limited_Absent; type Internal_Entity_Limited_Present; type Internal_Entity_Loop_Stmt; type Internal_Entity_Membership_Expr; type Internal_Entity_Mod_Int_Type_Def; type Internal_Entity_Mode; type Internal_Entity_Mode_Default; type Internal_Entity_Mode_In; type Internal_Entity_Mode_In_Out; type Internal_Entity_Mode_Out; type Internal_Entity_Multi_Abstract_State_Decl; type Internal_Entity_Multi_Dim_Array_Assoc; type Internal_Entity_Name_List; type Internal_Entity_Named_Stmt; type Internal_Entity_Named_Stmt_Decl; type Internal_Entity_Not_Null; type Internal_Entity_Not_Null_Absent; type Internal_Entity_Not_Null_Present; type Internal_Entity_Null_Component_Decl; type Internal_Entity_Null_Literal; type Internal_Entity_Null_Record_Aggregate; type Internal_Entity_Null_Record_Def; type Internal_Entity_Null_Stmt; type Internal_Entity_Null_Subp_Decl; type Internal_Entity_Number_Decl; type Internal_Entity_Op; type Internal_Entity_Op_Abs; type Internal_Entity_Op_And; type Internal_Entity_Op_And_Then; type Internal_Entity_Op_Concat; type Internal_Entity_Op_Div; type Internal_Entity_Op_Double_Dot; type Internal_Entity_Op_Eq; type Internal_Entity_Op_Gt; type Internal_Entity_Op_Gte; type Internal_Entity_Op_In; type Internal_Entity_Op_Lt; type Internal_Entity_Op_Lte; type Internal_Entity_Op_Minus; type Internal_Entity_Op_Mod; type Internal_Entity_Op_Mult; type Internal_Entity_Op_Neq; type Internal_Entity_Op_Not; type Internal_Entity_Op_Not_In; type Internal_Entity_Op_Or; type Internal_Entity_Op_Or_Else; type Internal_Entity_Op_Plus; type Internal_Entity_Op_Pow; type Internal_Entity_Op_Rem; type Internal_Entity_Op_Xor; type Internal_Entity_Ordinary_Fixed_Point_Def; type Internal_Entity_Others_Designator; type Internal_Entity_Overriding_Node; type Internal_Entity_Overriding_Not_Overriding; type Internal_Entity_Overriding_Overriding; type Internal_Entity_Overriding_Unspecified; type Internal_Entity_Package_Body; type Internal_Entity_Package_Body_Stub; type Internal_Entity_Package_Decl; type Internal_Entity_Package_Renaming_Decl; type Internal_Entity_Param_Assoc; type Internal_Entity_Param_Spec; type Internal_Entity_Param_Spec_List; type Internal_Entity_Params; type Internal_Entity_Paren_Abstract_State_Decl; type Internal_Entity_Paren_Expr; type Internal_Entity_Parent_List; type Internal_Entity_Pragma_Argument_Assoc; type Internal_Entity_Pragma_Node; type Internal_Entity_Pragma_Node_List; type Internal_Entity_Private_Node; type Internal_Entity_Private_Absent; type Internal_Entity_Private_Part; type Internal_Entity_Private_Present; type Internal_Entity_Private_Type_Def; type Internal_Entity_Protected_Node; type Internal_Entity_Protected_Absent; type Internal_Entity_Protected_Body; type Internal_Entity_Protected_Body_Stub; type Internal_Entity_Protected_Def; type Internal_Entity_Protected_Present; type Internal_Entity_Protected_Type_Decl; type Internal_Entity_Public_Part; type Internal_Entity_Qual_Expr; type Internal_Entity_Quantified_Expr; type Internal_Entity_Quantifier; type Internal_Entity_Quantifier_All; type Internal_Entity_Quantifier_Some; type Internal_Entity_Raise_Expr; type Internal_Entity_Raise_Stmt; type Internal_Entity_Range_Constraint; type Internal_Entity_Range_Spec; type Internal_Entity_Real_Literal; type Internal_Entity_Record_Def; type Internal_Entity_Record_Rep_Clause; type Internal_Entity_Record_Type_Def; type Internal_Entity_Relation_Op; type Internal_Entity_Renaming_Clause; type Internal_Entity_Requeue_Stmt; type Internal_Entity_Return_Stmt; type Internal_Entity_Reverse_Node; type Internal_Entity_Reverse_Absent; type Internal_Entity_Reverse_Present; type Internal_Entity_Select_Stmt; type Internal_Entity_Select_When_Part; type Internal_Entity_Select_When_Part_List; type Internal_Entity_Signed_Int_Type_Def; type Internal_Entity_Single_Protected_Decl; type Internal_Entity_Single_Task_Decl; type Internal_Entity_Task_Type_Decl; type Internal_Entity_Single_Task_Type_Decl; type Internal_Entity_Stmt_List; type Internal_Entity_String_Literal; type Internal_Entity_Subp_Body; type Internal_Entity_Subp_Body_Stub; type Internal_Entity_Subp_Decl; type Internal_Entity_Subp_Kind; type Internal_Entity_Subp_Kind_Function; type Internal_Entity_Subp_Kind_Procedure; type Internal_Entity_Subp_Renaming_Decl; type Internal_Entity_Subp_Spec; type Internal_Entity_Subtype_Decl; type Internal_Entity_Subunit; type Internal_Entity_Synchronized_Node; type Internal_Entity_Synchronized_Absent; type Internal_Entity_Synchronized_Present; type Internal_Entity_Synth_Anonymous_Type_Decl; type Internal_Entity_Synthetic_Renaming_Clause; type Internal_Entity_Tagged_Node; type Internal_Entity_Tagged_Absent; type Internal_Entity_Tagged_Present; type Internal_Entity_Target_Name; type Internal_Entity_Task_Body; type Internal_Entity_Task_Body_Stub; type Internal_Entity_Task_Def; type Internal_Entity_Terminate_Alternative; type Internal_Entity_Type_Access_Def; type Internal_Entity_Un_Op; type Internal_Entity_Unconstrained_Array_Index; type Internal_Entity_Unconstrained_Array_Index_List; type Internal_Entity_Unconstrained_Array_Indices; type Internal_Entity_Unknown_Discriminant_Part; type Internal_Entity_Until_Node; type Internal_Entity_Until_Absent; type Internal_Entity_Until_Present; type Internal_Entity_Update_Attribute_Ref; type Internal_Entity_Use_Clause; type Internal_Entity_Use_Package_Clause; type Internal_Entity_Use_Type_Clause; type Internal_Entity_Variant; type Internal_Entity_Variant_List; type Internal_Entity_Variant_Part; type Internal_Entity_While_Loop_Spec; type Internal_Entity_While_Loop_Stmt; type Internal_Entity_With_Clause; type Internal_Entity_With_Private; type Internal_Entity_With_Private_Absent; type Internal_Entity_With_Private_Present; type Internal_Env_Assoc; type Internal_Eval_Discrete_Range; -- Represent the range of a discrete type or subtype. The bounds are -- already evaluated, so the type of the fields is BigInt. type Internal_Expected_Type_For_Expr; -- Struct used by ``potential_actuals_for_dispatch`` to store an expression -- together with the type that is expected for it. type Internal_Logic_Val_Result; -- Represent the result of a call to logic_val. ``success`` is True iff -- solving the logic equation was successful, and ``value`` holds the value -- of the logic variable. type Internal_Multidim_Aggregate_Info; -- Struct enclosing information about aggregates for multidimensional array -- types. type Internal_Param_Actual; -- Data structure used by zip_with_params property. Associates an -- expression (the actual) to a formal param declaration (the parameter). type Internal_Single_Actual; type Internal_Single_Formal; type Internal_Param_Match; -- Helper data structure to implement SubpSpec/ParamAssocList matching. -- -- Each value relates to one ParamAssoc. type Internal_Ref_Result; -- Result for a cross reference query returning a reference. type Internal_Refd_Decl; -- Result for a cross reference query returning a referenced decl. type Internal_Refd_Def; -- Result for a cross reference query returning a referenced defining name. type Internal_Shape; -- Represent one of the shapes that a variant record can have, as a list of -- the available components. type Internal_Substitution; -- Represent a substitution of a BasicDecl by a given value. This can then -- be used as part of an environment in the eval_as_*_in_env property. See -- the declaration of those properties for more details. ------------------------------------------- -- Array types (incomplete declarations) -- ------------------------------------------- type Bare_Ada_Node_Array_Record; type Bare_Ada_Node_Array_Access is access all Bare_Ada_Node_Array_Record; type Bare_Anonymous_Expr_Decl_Array_Record; type Bare_Anonymous_Expr_Decl_Array_Access is access all Bare_Anonymous_Expr_Decl_Array_Record; type Bare_Compilation_Unit_Array_Record; type Bare_Compilation_Unit_Array_Access is access all Bare_Compilation_Unit_Array_Record; type Bare_Name_Array_Record; type Bare_Name_Array_Access is access all Bare_Name_Array_Record; type Bare_Single_Tok_Node_Array_Record; type Bare_Single_Tok_Node_Array_Access is access all Bare_Single_Tok_Node_Array_Record; type Bare_Use_Clause_Array_Record; type Bare_Use_Clause_Array_Access is access all Bare_Use_Clause_Array_Record; type Character_Type_Array_Record; type Character_Type_Array_Access is access all Character_Type_Array_Record; type Character_Type_Array_Access_Array_Record; type Character_Type_Array_Access_Array_Access is access all Character_Type_Array_Access_Array_Record; type Internal_Aspect_Array_Record; type Internal_Aspect_Array_Access is access all Internal_Aspect_Array_Record; type Internal_Completion_Item_Array_Record; type Internal_Completion_Item_Array_Access is access all Internal_Completion_Item_Array_Record; type Internal_Discriminant_Values_Array_Record; type Internal_Discriminant_Values_Array_Access is access all Internal_Discriminant_Values_Array_Record; type Internal_Doc_Annotation_Array_Record; type Internal_Doc_Annotation_Array_Access is access all Internal_Doc_Annotation_Array_Record; type Internal_Entity_Array_Record; type Internal_Entity_Array_Access is access all Internal_Entity_Array_Record; type Internal_Entity_Aspect_Assoc_Array_Record; type Internal_Entity_Aspect_Assoc_Array_Access is access all Internal_Entity_Aspect_Assoc_Array_Record; type Internal_Entity_Base_Assoc_Array_Record; type Internal_Entity_Base_Assoc_Array_Access is access all Internal_Entity_Base_Assoc_Array_Record; type Internal_Entity_Base_Formal_Param_Decl_Array_Record; type Internal_Entity_Base_Formal_Param_Decl_Array_Access is access all Internal_Entity_Base_Formal_Param_Decl_Array_Record; type Internal_Entity_Base_Type_Decl_Array_Record; type Internal_Entity_Base_Type_Decl_Array_Access is access all Internal_Entity_Base_Type_Decl_Array_Record; type Internal_Entity_Basic_Assoc_Array_Record; type Internal_Entity_Basic_Assoc_Array_Access is access all Internal_Entity_Basic_Assoc_Array_Record; type Internal_Entity_Basic_Decl_Array_Record; type Internal_Entity_Basic_Decl_Array_Access is access all Internal_Entity_Basic_Decl_Array_Record; type Internal_Entity_Compilation_Unit_Array_Record; type Internal_Entity_Compilation_Unit_Array_Access is access all Internal_Entity_Compilation_Unit_Array_Record; type Internal_Entity_Declarative_Part_Array_Record; type Internal_Entity_Declarative_Part_Array_Access is access all Internal_Entity_Declarative_Part_Array_Record; type Internal_Entity_Defining_Name_Array_Record; type Internal_Entity_Defining_Name_Array_Access is access all Internal_Entity_Defining_Name_Array_Record; type Internal_Entity_Expr_Array_Record; type Internal_Entity_Expr_Array_Access is access all Internal_Entity_Expr_Array_Record; type Internal_Entity_Generic_Instantiation_Array_Record; type Internal_Entity_Generic_Instantiation_Array_Access is access all Internal_Entity_Generic_Instantiation_Array_Record; type Internal_Entity_Name_Array_Record; type Internal_Entity_Name_Array_Access is access all Internal_Entity_Name_Array_Record; type Internal_Entity_Param_Spec_Array_Record; type Internal_Entity_Param_Spec_Array_Access is access all Internal_Entity_Param_Spec_Array_Record; type Internal_Entity_Pragma_Node_Array_Record; type Internal_Entity_Pragma_Node_Array_Access is access all Internal_Entity_Pragma_Node_Array_Record; type Internal_Entity_Type_Decl_Array_Record; type Internal_Entity_Type_Decl_Array_Access is access all Internal_Entity_Type_Decl_Array_Record; type Internal_Entity_Type_Expr_Array_Record; type Internal_Entity_Type_Expr_Array_Access is access all Internal_Entity_Type_Expr_Array_Record; type Internal_Entity_Variant_Array_Record; type Internal_Entity_Variant_Array_Access is access all Internal_Entity_Variant_Array_Record; type Internal_Env_Assoc_Array_Record; type Internal_Env_Assoc_Array_Access is access all Internal_Env_Assoc_Array_Record; type Internal_Expected_Type_For_Expr_Array_Record; type Internal_Expected_Type_For_Expr_Array_Access is access all Internal_Expected_Type_For_Expr_Array_Record; type Internal_Param_Actual_Array_Record; type Internal_Param_Actual_Array_Access is access all Internal_Param_Actual_Array_Record; type Internal_Param_Match_Array_Record; type Internal_Param_Match_Array_Access is access all Internal_Param_Match_Array_Record; type Internal_Ref_Result_Array_Record; type Internal_Ref_Result_Array_Access is access all Internal_Ref_Result_Array_Record; type Internal_Shape_Array_Record; type Internal_Shape_Array_Access is access all Internal_Shape_Array_Record; type Internal_Single_Actual_Array_Record; type Internal_Single_Actual_Array_Access is access all Internal_Single_Actual_Array_Record; type Internal_Single_Formal_Array_Record; type Internal_Single_Formal_Array_Access is access all Internal_Single_Formal_Array_Record; type Internal_Substitution_Array_Record; type Internal_Substitution_Array_Access is access all Internal_Substitution_Array_Record; type Internal_Unit_Array_Record; type Internal_Unit_Array_Access is access all Internal_Unit_Array_Record; type Lexical_Env_Array_Record; type Lexical_Env_Array_Access is access all Lexical_Env_Array_Record; type Logic_Equation_Array_Record; type Logic_Equation_Array_Access is access all Logic_Equation_Array_Record; type Symbol_Type_Array_Record; type Symbol_Type_Array_Access is access all Symbol_Type_Array_Record; ---------------------------------------------- -- Iterator types (incomplete declarations) -- ---------------------------------------------- type Internal_Bare_Ada_Node_Iterator; type Bare_Ada_Node_Iterator_Access is access all Internal_Bare_Ada_Node_Iterator; type Internal_Internal_Completion_Item_Iterator; type Internal_Completion_Item_Iterator_Access is access all Internal_Internal_Completion_Item_Iterator; type Internal_Internal_Entity_Iterator; type Internal_Entity_Iterator_Access is access all Internal_Internal_Entity_Iterator; ----------------------------------------- -- Structure types (full declarations) -- ----------------------------------------- function Hash (R : Internal_Entity_Info) return Hash_Type; function Trace_Image (R : Internal_Entity_Info) return String; function Create_Internal_Entity (Node : Bare_Ada_Node; Info : Internal_Entity_Info) return Internal_Entity; function Hash (R : Internal_Entity) return Hash_Type; function Trace_Image (R : Internal_Entity) return String; type Internal_Entity_Expr is record Node : aliased Bare_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Expr : constant Internal_Entity_Expr; function Create_Internal_Entity_Expr (Node : Bare_Expr; Info : Internal_Entity_Info) return Internal_Entity_Expr; function Trace_Image (R : Internal_Entity_Expr) return String; type Internal_Aspect is record Exists : aliased Boolean; -- Whether the aspect is defined or not Node : aliased Internal_Entity; -- Syntactic node that defines the aspect Value : aliased Internal_Entity_Expr; -- Expr node defining the value of the aspect end record with Convention => C; No_Aspect : constant Internal_Aspect; function Trace_Image (R : Internal_Aspect) return String; type Internal_Entity_Basic_Decl is record Node : aliased Bare_Basic_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Basic_Decl : constant Internal_Entity_Basic_Decl; function Create_Internal_Entity_Basic_Decl (Node : Bare_Basic_Decl; Info : Internal_Entity_Info) return Internal_Entity_Basic_Decl; function Hash (R : Internal_Entity_Basic_Decl) return Hash_Type; function Trace_Image (R : Internal_Entity_Basic_Decl) return String; type Internal_Completion_Item is record Decl : aliased Internal_Entity_Basic_Decl; Is_Dot_Call : aliased Boolean; Is_Visible : aliased Boolean; end record with Convention => C; No_Completion_Item : constant Internal_Completion_Item; function Trace_Image (R : Internal_Completion_Item) return String; type Internal_DesignatedEnv is record Kind : aliased Designated_Env_Kind; Env_Name : aliased Symbol_Type; Direct_Env : aliased Lexical_Env; end record with Convention => C; No_DesignatedEnv : constant Internal_DesignatedEnv; procedure Inc_Ref (R : Internal_DesignatedEnv); procedure Dec_Ref (R : in out Internal_DesignatedEnv); function Equivalent (L, R : Internal_DesignatedEnv) return Boolean; function Trace_Image (R : Internal_DesignatedEnv) return String; type Internal_Discrete_Range is record Low_Bound : aliased Internal_Entity_Expr; High_Bound : aliased Internal_Entity_Expr; end record with Convention => C; No_Discrete_Range : constant Internal_Discrete_Range; function Trace_Image (R : Internal_Discrete_Range) return String; type Internal_Entity_Ada_List is record Node : aliased Bare_Ada_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Ada_List : constant Internal_Entity_Ada_List; function Create_Internal_Entity_Ada_List (Node : Bare_Ada_List; Info : Internal_Entity_Info) return Internal_Entity_Ada_List; function Trace_Image (R : Internal_Entity_Ada_List) return String; type Internal_Entity_Ada_Node_List is record Node : aliased Bare_Ada_Node_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Ada_Node_List : constant Internal_Entity_Ada_Node_List; function Create_Internal_Entity_Ada_Node_List (Node : Bare_Ada_Node_List; Info : Internal_Entity_Info) return Internal_Entity_Ada_Node_List; function Trace_Image (R : Internal_Entity_Ada_Node_List) return String; type Internal_Entity_Alternatives_List is record Node : aliased Bare_Alternatives_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Alternatives_List : constant Internal_Entity_Alternatives_List; function Create_Internal_Entity_Alternatives_List (Node : Bare_Alternatives_List; Info : Internal_Entity_Info) return Internal_Entity_Alternatives_List; function Trace_Image (R : Internal_Entity_Alternatives_List) return String; type Internal_Entity_Name is record Node : aliased Bare_Name; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Name : constant Internal_Entity_Name; function Create_Internal_Entity_Name (Node : Bare_Name; Info : Internal_Entity_Info) return Internal_Entity_Name; function Trace_Image (R : Internal_Entity_Name) return String; type Internal_Entity_Single_Tok_Node is record Node : aliased Bare_Single_Tok_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Single_Tok_Node : constant Internal_Entity_Single_Tok_Node; function Create_Internal_Entity_Single_Tok_Node (Node : Bare_Single_Tok_Node; Info : Internal_Entity_Info) return Internal_Entity_Single_Tok_Node; function Trace_Image (R : Internal_Entity_Single_Tok_Node) return String; type Internal_Entity_Base_Id is record Node : aliased Bare_Base_Id; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Id : constant Internal_Entity_Base_Id; function Create_Internal_Entity_Base_Id (Node : Bare_Base_Id; Info : Internal_Entity_Info) return Internal_Entity_Base_Id; function Trace_Image (R : Internal_Entity_Base_Id) return String; type Internal_Entity_Identifier is record Node : aliased Bare_Identifier; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Identifier : constant Internal_Entity_Identifier; function Create_Internal_Entity_Identifier (Node : Bare_Identifier; Info : Internal_Entity_Info) return Internal_Entity_Identifier; function Trace_Image (R : Internal_Entity_Identifier) return String; type Internal_Discriminant_Values is record Discriminant : aliased Internal_Entity_Identifier; Values : aliased Internal_Entity_Alternatives_List; end record with Convention => C; No_Discriminant_Values : constant Internal_Discriminant_Values; function Trace_Image (R : Internal_Discriminant_Values) return String; type Internal_Doc_Annotation is record Key : aliased Character_Type_Array_Access; -- Annotation key Value : aliased Character_Type_Array_Access; -- Annotation value end record with Convention => C; No_Doc_Annotation : constant Internal_Doc_Annotation; procedure Inc_Ref (R : Internal_Doc_Annotation); procedure Dec_Ref (R : in out Internal_Doc_Annotation); function Equivalent (L, R : Internal_Doc_Annotation) return Boolean; function Trace_Image (R : Internal_Doc_Annotation) return String; type Internal_Entity_Abort_Node is record Node : aliased Bare_Abort_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Abort_Node : constant Internal_Entity_Abort_Node; function Create_Internal_Entity_Abort_Node (Node : Bare_Abort_Node; Info : Internal_Entity_Info) return Internal_Entity_Abort_Node; function Trace_Image (R : Internal_Entity_Abort_Node) return String; type Internal_Entity_Abort_Absent is record Node : aliased Bare_Abort_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Abort_Absent : constant Internal_Entity_Abort_Absent; function Create_Internal_Entity_Abort_Absent (Node : Bare_Abort_Absent; Info : Internal_Entity_Info) return Internal_Entity_Abort_Absent; function Trace_Image (R : Internal_Entity_Abort_Absent) return String; type Internal_Entity_Abort_Present is record Node : aliased Bare_Abort_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Abort_Present : constant Internal_Entity_Abort_Present; function Create_Internal_Entity_Abort_Present (Node : Bare_Abort_Present; Info : Internal_Entity_Info) return Internal_Entity_Abort_Present; function Trace_Image (R : Internal_Entity_Abort_Present) return String; type Internal_Entity_Stmt is record Node : aliased Bare_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Stmt : constant Internal_Entity_Stmt; function Create_Internal_Entity_Stmt (Node : Bare_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Stmt; function Trace_Image (R : Internal_Entity_Stmt) return String; type Internal_Entity_Simple_Stmt is record Node : aliased Bare_Simple_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Simple_Stmt : constant Internal_Entity_Simple_Stmt; function Create_Internal_Entity_Simple_Stmt (Node : Bare_Simple_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Simple_Stmt; function Trace_Image (R : Internal_Entity_Simple_Stmt) return String; type Internal_Entity_Abort_Stmt is record Node : aliased Bare_Abort_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Abort_Stmt : constant Internal_Entity_Abort_Stmt; function Create_Internal_Entity_Abort_Stmt (Node : Bare_Abort_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Abort_Stmt; function Trace_Image (R : Internal_Entity_Abort_Stmt) return String; type Internal_Entity_Abstract_Node is record Node : aliased Bare_Abstract_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Abstract_Node : constant Internal_Entity_Abstract_Node; function Create_Internal_Entity_Abstract_Node (Node : Bare_Abstract_Node; Info : Internal_Entity_Info) return Internal_Entity_Abstract_Node; function Trace_Image (R : Internal_Entity_Abstract_Node) return String; type Internal_Entity_Abstract_Absent is record Node : aliased Bare_Abstract_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Abstract_Absent : constant Internal_Entity_Abstract_Absent; function Create_Internal_Entity_Abstract_Absent (Node : Bare_Abstract_Absent; Info : Internal_Entity_Info) return Internal_Entity_Abstract_Absent; function Trace_Image (R : Internal_Entity_Abstract_Absent) return String; type Internal_Entity_Basic_Subp_Decl is record Node : aliased Bare_Basic_Subp_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Basic_Subp_Decl : constant Internal_Entity_Basic_Subp_Decl; function Create_Internal_Entity_Basic_Subp_Decl (Node : Bare_Basic_Subp_Decl; Info : Internal_Entity_Info) return Internal_Entity_Basic_Subp_Decl; function Trace_Image (R : Internal_Entity_Basic_Subp_Decl) return String; type Internal_Entity_Classic_Subp_Decl is record Node : aliased Bare_Classic_Subp_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Classic_Subp_Decl : constant Internal_Entity_Classic_Subp_Decl; function Create_Internal_Entity_Classic_Subp_Decl (Node : Bare_Classic_Subp_Decl; Info : Internal_Entity_Info) return Internal_Entity_Classic_Subp_Decl; function Trace_Image (R : Internal_Entity_Classic_Subp_Decl) return String; type Internal_Entity_Formal_Subp_Decl is record Node : aliased Bare_Formal_Subp_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Formal_Subp_Decl : constant Internal_Entity_Formal_Subp_Decl; function Create_Internal_Entity_Formal_Subp_Decl (Node : Bare_Formal_Subp_Decl; Info : Internal_Entity_Info) return Internal_Entity_Formal_Subp_Decl; function Trace_Image (R : Internal_Entity_Formal_Subp_Decl) return String; type Internal_Entity_Abstract_Formal_Subp_Decl is record Node : aliased Bare_Abstract_Formal_Subp_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Abstract_Formal_Subp_Decl : constant Internal_Entity_Abstract_Formal_Subp_Decl; function Create_Internal_Entity_Abstract_Formal_Subp_Decl (Node : Bare_Abstract_Formal_Subp_Decl; Info : Internal_Entity_Info) return Internal_Entity_Abstract_Formal_Subp_Decl; function Trace_Image (R : Internal_Entity_Abstract_Formal_Subp_Decl) return String; type Internal_Entity_Abstract_Present is record Node : aliased Bare_Abstract_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Abstract_Present : constant Internal_Entity_Abstract_Present; function Create_Internal_Entity_Abstract_Present (Node : Bare_Abstract_Present; Info : Internal_Entity_Info) return Internal_Entity_Abstract_Present; function Trace_Image (R : Internal_Entity_Abstract_Present) return String; type Internal_Entity_Abstract_State_Decl is record Node : aliased Bare_Abstract_State_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Abstract_State_Decl : constant Internal_Entity_Abstract_State_Decl; function Create_Internal_Entity_Abstract_State_Decl (Node : Bare_Abstract_State_Decl; Info : Internal_Entity_Info) return Internal_Entity_Abstract_State_Decl; function Trace_Image (R : Internal_Entity_Abstract_State_Decl) return String; type Internal_Entity_Abstract_State_Decl_Expr is record Node : aliased Bare_Abstract_State_Decl_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Abstract_State_Decl_Expr : constant Internal_Entity_Abstract_State_Decl_Expr; function Create_Internal_Entity_Abstract_State_Decl_Expr (Node : Bare_Abstract_State_Decl_Expr; Info : Internal_Entity_Info) return Internal_Entity_Abstract_State_Decl_Expr; function Trace_Image (R : Internal_Entity_Abstract_State_Decl_Expr) return String; type Internal_Entity_Abstract_State_Decl_List is record Node : aliased Bare_Abstract_State_Decl_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Abstract_State_Decl_List : constant Internal_Entity_Abstract_State_Decl_List; function Create_Internal_Entity_Abstract_State_Decl_List (Node : Bare_Abstract_State_Decl_List; Info : Internal_Entity_Info) return Internal_Entity_Abstract_State_Decl_List; function Trace_Image (R : Internal_Entity_Abstract_State_Decl_List) return String; type Internal_Entity_Abstract_Subp_Decl is record Node : aliased Bare_Abstract_Subp_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Abstract_Subp_Decl : constant Internal_Entity_Abstract_Subp_Decl; function Create_Internal_Entity_Abstract_Subp_Decl (Node : Bare_Abstract_Subp_Decl; Info : Internal_Entity_Info) return Internal_Entity_Abstract_Subp_Decl; function Trace_Image (R : Internal_Entity_Abstract_Subp_Decl) return String; type Internal_Entity_Composite_Stmt is record Node : aliased Bare_Composite_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Composite_Stmt : constant Internal_Entity_Composite_Stmt; function Create_Internal_Entity_Composite_Stmt (Node : Bare_Composite_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Composite_Stmt; function Trace_Image (R : Internal_Entity_Composite_Stmt) return String; type Internal_Entity_Accept_Stmt is record Node : aliased Bare_Accept_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Accept_Stmt : constant Internal_Entity_Accept_Stmt; function Create_Internal_Entity_Accept_Stmt (Node : Bare_Accept_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Accept_Stmt; function Trace_Image (R : Internal_Entity_Accept_Stmt) return String; type Internal_Entity_Accept_Stmt_With_Stmts is record Node : aliased Bare_Accept_Stmt_With_Stmts; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Accept_Stmt_With_Stmts : constant Internal_Entity_Accept_Stmt_With_Stmts; function Create_Internal_Entity_Accept_Stmt_With_Stmts (Node : Bare_Accept_Stmt_With_Stmts; Info : Internal_Entity_Info) return Internal_Entity_Accept_Stmt_With_Stmts; function Trace_Image (R : Internal_Entity_Accept_Stmt_With_Stmts) return String; type Internal_Entity_Type_Def is record Node : aliased Bare_Type_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Type_Def : constant Internal_Entity_Type_Def; function Create_Internal_Entity_Type_Def (Node : Bare_Type_Def; Info : Internal_Entity_Info) return Internal_Entity_Type_Def; function Trace_Image (R : Internal_Entity_Type_Def) return String; type Internal_Entity_Access_Def is record Node : aliased Bare_Access_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Access_Def : constant Internal_Entity_Access_Def; function Create_Internal_Entity_Access_Def (Node : Bare_Access_Def; Info : Internal_Entity_Info) return Internal_Entity_Access_Def; function Trace_Image (R : Internal_Entity_Access_Def) return String; type Internal_Entity_Access_To_Subp_Def is record Node : aliased Bare_Access_To_Subp_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Access_To_Subp_Def : constant Internal_Entity_Access_To_Subp_Def; function Create_Internal_Entity_Access_To_Subp_Def (Node : Bare_Access_To_Subp_Def; Info : Internal_Entity_Info) return Internal_Entity_Access_To_Subp_Def; function Trace_Image (R : Internal_Entity_Access_To_Subp_Def) return String; type Internal_Entity_Base_Aggregate is record Node : aliased Bare_Base_Aggregate; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Aggregate : constant Internal_Entity_Base_Aggregate; function Create_Internal_Entity_Base_Aggregate (Node : Bare_Base_Aggregate; Info : Internal_Entity_Info) return Internal_Entity_Base_Aggregate; function Trace_Image (R : Internal_Entity_Base_Aggregate) return String; type Internal_Entity_Aggregate is record Node : aliased Bare_Aggregate; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Aggregate : constant Internal_Entity_Aggregate; function Create_Internal_Entity_Aggregate (Node : Bare_Aggregate; Info : Internal_Entity_Info) return Internal_Entity_Aggregate; function Trace_Image (R : Internal_Entity_Aggregate) return String; type Internal_Entity_Basic_Assoc is record Node : aliased Bare_Basic_Assoc; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Basic_Assoc : constant Internal_Entity_Basic_Assoc; function Create_Internal_Entity_Basic_Assoc (Node : Bare_Basic_Assoc; Info : Internal_Entity_Info) return Internal_Entity_Basic_Assoc; function Trace_Image (R : Internal_Entity_Basic_Assoc) return String; type Internal_Entity_Aggregate_Assoc is record Node : aliased Bare_Aggregate_Assoc; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Aggregate_Assoc : constant Internal_Entity_Aggregate_Assoc; function Create_Internal_Entity_Aggregate_Assoc (Node : Bare_Aggregate_Assoc; Info : Internal_Entity_Info) return Internal_Entity_Aggregate_Assoc; function Trace_Image (R : Internal_Entity_Aggregate_Assoc) return String; type Internal_Entity_Aliased_Node is record Node : aliased Bare_Aliased_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Aliased_Node : constant Internal_Entity_Aliased_Node; function Create_Internal_Entity_Aliased_Node (Node : Bare_Aliased_Node; Info : Internal_Entity_Info) return Internal_Entity_Aliased_Node; function Trace_Image (R : Internal_Entity_Aliased_Node) return String; type Internal_Entity_Aliased_Absent is record Node : aliased Bare_Aliased_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Aliased_Absent : constant Internal_Entity_Aliased_Absent; function Create_Internal_Entity_Aliased_Absent (Node : Bare_Aliased_Absent; Info : Internal_Entity_Info) return Internal_Entity_Aliased_Absent; function Trace_Image (R : Internal_Entity_Aliased_Absent) return String; type Internal_Entity_Aliased_Present is record Node : aliased Bare_Aliased_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Aliased_Present : constant Internal_Entity_Aliased_Present; function Create_Internal_Entity_Aliased_Present (Node : Bare_Aliased_Present; Info : Internal_Entity_Info) return Internal_Entity_Aliased_Present; function Trace_Image (R : Internal_Entity_Aliased_Present) return String; type Internal_Entity_All_Node is record Node : aliased Bare_All_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_All_Node : constant Internal_Entity_All_Node; function Create_Internal_Entity_All_Node (Node : Bare_All_Node; Info : Internal_Entity_Info) return Internal_Entity_All_Node; function Trace_Image (R : Internal_Entity_All_Node) return String; type Internal_Entity_All_Absent is record Node : aliased Bare_All_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_All_Absent : constant Internal_Entity_All_Absent; function Create_Internal_Entity_All_Absent (Node : Bare_All_Absent; Info : Internal_Entity_Info) return Internal_Entity_All_Absent; function Trace_Image (R : Internal_Entity_All_Absent) return String; type Internal_Entity_All_Present is record Node : aliased Bare_All_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_All_Present : constant Internal_Entity_All_Present; function Create_Internal_Entity_All_Present (Node : Bare_All_Present; Info : Internal_Entity_Info) return Internal_Entity_All_Present; function Trace_Image (R : Internal_Entity_All_Present) return String; type Internal_Entity_Allocator is record Node : aliased Bare_Allocator; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Allocator : constant Internal_Entity_Allocator; function Create_Internal_Entity_Allocator (Node : Bare_Allocator; Info : Internal_Entity_Info) return Internal_Entity_Allocator; function Trace_Image (R : Internal_Entity_Allocator) return String; type Internal_Entity_Anonymous_Expr_Decl is record Node : aliased Bare_Anonymous_Expr_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Anonymous_Expr_Decl : constant Internal_Entity_Anonymous_Expr_Decl; function Create_Internal_Entity_Anonymous_Expr_Decl (Node : Bare_Anonymous_Expr_Decl; Info : Internal_Entity_Info) return Internal_Entity_Anonymous_Expr_Decl; function Trace_Image (R : Internal_Entity_Anonymous_Expr_Decl) return String; type Internal_Entity_Type_Expr is record Node : aliased Bare_Type_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Type_Expr : constant Internal_Entity_Type_Expr; function Create_Internal_Entity_Type_Expr (Node : Bare_Type_Expr; Info : Internal_Entity_Info) return Internal_Entity_Type_Expr; function Trace_Image (R : Internal_Entity_Type_Expr) return String; type Internal_Entity_Anonymous_Type is record Node : aliased Bare_Anonymous_Type; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Anonymous_Type : constant Internal_Entity_Anonymous_Type; function Create_Internal_Entity_Anonymous_Type (Node : Bare_Anonymous_Type; Info : Internal_Entity_Info) return Internal_Entity_Anonymous_Type; function Trace_Image (R : Internal_Entity_Anonymous_Type) return String; type Internal_Entity_Base_Type_Access_Def is record Node : aliased Bare_Base_Type_Access_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Type_Access_Def : constant Internal_Entity_Base_Type_Access_Def; function Create_Internal_Entity_Base_Type_Access_Def (Node : Bare_Base_Type_Access_Def; Info : Internal_Entity_Info) return Internal_Entity_Base_Type_Access_Def; function Trace_Image (R : Internal_Entity_Base_Type_Access_Def) return String; type Internal_Entity_Anonymous_Type_Access_Def is record Node : aliased Bare_Anonymous_Type_Access_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Anonymous_Type_Access_Def : constant Internal_Entity_Anonymous_Type_Access_Def; function Create_Internal_Entity_Anonymous_Type_Access_Def (Node : Bare_Anonymous_Type_Access_Def; Info : Internal_Entity_Info) return Internal_Entity_Anonymous_Type_Access_Def; function Trace_Image (R : Internal_Entity_Anonymous_Type_Access_Def) return String; type Internal_Entity_Base_Type_Decl is record Node : aliased Bare_Base_Type_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Type_Decl : constant Internal_Entity_Base_Type_Decl; function Create_Internal_Entity_Base_Type_Decl (Node : Bare_Base_Type_Decl; Info : Internal_Entity_Info) return Internal_Entity_Base_Type_Decl; function Hash (R : Internal_Entity_Base_Type_Decl) return Hash_Type; function Trace_Image (R : Internal_Entity_Base_Type_Decl) return String; type Internal_Entity_Type_Decl is record Node : aliased Bare_Type_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Type_Decl : constant Internal_Entity_Type_Decl; function Create_Internal_Entity_Type_Decl (Node : Bare_Type_Decl; Info : Internal_Entity_Info) return Internal_Entity_Type_Decl; function Trace_Image (R : Internal_Entity_Type_Decl) return String; type Internal_Entity_Anonymous_Type_Decl is record Node : aliased Bare_Anonymous_Type_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Anonymous_Type_Decl : constant Internal_Entity_Anonymous_Type_Decl; function Create_Internal_Entity_Anonymous_Type_Decl (Node : Bare_Anonymous_Type_Decl; Info : Internal_Entity_Info) return Internal_Entity_Anonymous_Type_Decl; function Trace_Image (R : Internal_Entity_Anonymous_Type_Decl) return String; type Internal_Entity_Array_Indices is record Node : aliased Bare_Array_Indices; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Array_Indices : constant Internal_Entity_Array_Indices; function Create_Internal_Entity_Array_Indices (Node : Bare_Array_Indices; Info : Internal_Entity_Info) return Internal_Entity_Array_Indices; function Trace_Image (R : Internal_Entity_Array_Indices) return String; type Internal_Entity_Array_Type_Def is record Node : aliased Bare_Array_Type_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Array_Type_Def : constant Internal_Entity_Array_Type_Def; function Create_Internal_Entity_Array_Type_Def (Node : Bare_Array_Type_Def; Info : Internal_Entity_Info) return Internal_Entity_Array_Type_Def; function Trace_Image (R : Internal_Entity_Array_Type_Def) return String; type Internal_Entity_Aspect_Assoc is record Node : aliased Bare_Aspect_Assoc; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Aspect_Assoc : constant Internal_Entity_Aspect_Assoc; function Create_Internal_Entity_Aspect_Assoc (Node : Bare_Aspect_Assoc; Info : Internal_Entity_Info) return Internal_Entity_Aspect_Assoc; function Trace_Image (R : Internal_Entity_Aspect_Assoc) return String; type Internal_Entity_Aspect_Assoc_List is record Node : aliased Bare_Aspect_Assoc_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Aspect_Assoc_List : constant Internal_Entity_Aspect_Assoc_List; function Create_Internal_Entity_Aspect_Assoc_List (Node : Bare_Aspect_Assoc_List; Info : Internal_Entity_Info) return Internal_Entity_Aspect_Assoc_List; function Trace_Image (R : Internal_Entity_Aspect_Assoc_List) return String; type Internal_Entity_Aspect_Clause is record Node : aliased Bare_Aspect_Clause; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Aspect_Clause : constant Internal_Entity_Aspect_Clause; function Create_Internal_Entity_Aspect_Clause (Node : Bare_Aspect_Clause; Info : Internal_Entity_Info) return Internal_Entity_Aspect_Clause; function Trace_Image (R : Internal_Entity_Aspect_Clause) return String; type Internal_Entity_Aspect_Spec is record Node : aliased Bare_Aspect_Spec; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Aspect_Spec : constant Internal_Entity_Aspect_Spec; function Create_Internal_Entity_Aspect_Spec (Node : Bare_Aspect_Spec; Info : Internal_Entity_Info) return Internal_Entity_Aspect_Spec; function Trace_Image (R : Internal_Entity_Aspect_Spec) return String; type Internal_Entity_Assign_Stmt is record Node : aliased Bare_Assign_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Assign_Stmt : constant Internal_Entity_Assign_Stmt; function Create_Internal_Entity_Assign_Stmt (Node : Bare_Assign_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Assign_Stmt; function Trace_Image (R : Internal_Entity_Assign_Stmt) return String; type Internal_Entity_Basic_Assoc_List is record Node : aliased Bare_Basic_Assoc_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Basic_Assoc_List : constant Internal_Entity_Basic_Assoc_List; function Create_Internal_Entity_Basic_Assoc_List (Node : Bare_Basic_Assoc_List; Info : Internal_Entity_Info) return Internal_Entity_Basic_Assoc_List; function Trace_Image (R : Internal_Entity_Basic_Assoc_List) return String; type Internal_Entity_Assoc_List is record Node : aliased Bare_Assoc_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Assoc_List : constant Internal_Entity_Assoc_List; function Create_Internal_Entity_Assoc_List (Node : Bare_Assoc_List; Info : Internal_Entity_Info) return Internal_Entity_Assoc_List; function Trace_Image (R : Internal_Entity_Assoc_List) return String; type Internal_Entity_At_Clause is record Node : aliased Bare_At_Clause; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_At_Clause : constant Internal_Entity_At_Clause; function Create_Internal_Entity_At_Clause (Node : Bare_At_Clause; Info : Internal_Entity_Info) return Internal_Entity_At_Clause; function Trace_Image (R : Internal_Entity_At_Clause) return String; type Internal_Entity_Attribute_Def_Clause is record Node : aliased Bare_Attribute_Def_Clause; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Attribute_Def_Clause : constant Internal_Entity_Attribute_Def_Clause; function Create_Internal_Entity_Attribute_Def_Clause (Node : Bare_Attribute_Def_Clause; Info : Internal_Entity_Info) return Internal_Entity_Attribute_Def_Clause; function Trace_Image (R : Internal_Entity_Attribute_Def_Clause) return String; type Internal_Entity_Attribute_Ref is record Node : aliased Bare_Attribute_Ref; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Attribute_Ref : constant Internal_Entity_Attribute_Ref; function Create_Internal_Entity_Attribute_Ref (Node : Bare_Attribute_Ref; Info : Internal_Entity_Info) return Internal_Entity_Attribute_Ref; function Trace_Image (R : Internal_Entity_Attribute_Ref) return String; type Internal_Entity_Base_Assoc is record Node : aliased Bare_Base_Assoc; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Assoc : constant Internal_Entity_Base_Assoc; function Create_Internal_Entity_Base_Assoc (Node : Bare_Base_Assoc; Info : Internal_Entity_Info) return Internal_Entity_Base_Assoc; function Trace_Image (R : Internal_Entity_Base_Assoc) return String; type Internal_Entity_Base_Assoc_List is record Node : aliased Bare_Base_Assoc_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Assoc_List : constant Internal_Entity_Base_Assoc_List; function Create_Internal_Entity_Base_Assoc_List (Node : Bare_Base_Assoc_List; Info : Internal_Entity_Info) return Internal_Entity_Base_Assoc_List; function Trace_Image (R : Internal_Entity_Base_Assoc_List) return String; type Internal_Entity_Base_Formal_Param_Decl is record Node : aliased Bare_Base_Formal_Param_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Formal_Param_Decl : constant Internal_Entity_Base_Formal_Param_Decl; function Create_Internal_Entity_Base_Formal_Param_Decl (Node : Bare_Base_Formal_Param_Decl; Info : Internal_Entity_Info) return Internal_Entity_Base_Formal_Param_Decl; function Trace_Image (R : Internal_Entity_Base_Formal_Param_Decl) return String; type Internal_Entity_Base_Formal_Param_Holder is record Node : aliased Bare_Base_Formal_Param_Holder; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Formal_Param_Holder : constant Internal_Entity_Base_Formal_Param_Holder; function Create_Internal_Entity_Base_Formal_Param_Holder (Node : Bare_Base_Formal_Param_Holder; Info : Internal_Entity_Info) return Internal_Entity_Base_Formal_Param_Holder; function Trace_Image (R : Internal_Entity_Base_Formal_Param_Holder) return String; type Internal_Entity_Base_Loop_Stmt is record Node : aliased Bare_Base_Loop_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Loop_Stmt : constant Internal_Entity_Base_Loop_Stmt; function Create_Internal_Entity_Base_Loop_Stmt (Node : Bare_Base_Loop_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Base_Loop_Stmt; function Trace_Image (R : Internal_Entity_Base_Loop_Stmt) return String; type Internal_Entity_Base_Package_Decl is record Node : aliased Bare_Base_Package_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Package_Decl : constant Internal_Entity_Base_Package_Decl; function Create_Internal_Entity_Base_Package_Decl (Node : Bare_Base_Package_Decl; Info : Internal_Entity_Info) return Internal_Entity_Base_Package_Decl; function Trace_Image (R : Internal_Entity_Base_Package_Decl) return String; type Internal_Entity_Base_Record_Def is record Node : aliased Bare_Base_Record_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Record_Def : constant Internal_Entity_Base_Record_Def; function Create_Internal_Entity_Base_Record_Def (Node : Bare_Base_Record_Def; Info : Internal_Entity_Info) return Internal_Entity_Base_Record_Def; function Trace_Image (R : Internal_Entity_Base_Record_Def) return String; type Internal_Entity_Body_Node is record Node : aliased Bare_Body_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Body_Node : constant Internal_Entity_Body_Node; function Create_Internal_Entity_Body_Node (Node : Bare_Body_Node; Info : Internal_Entity_Info) return Internal_Entity_Body_Node; function Trace_Image (R : Internal_Entity_Body_Node) return String; type Internal_Entity_Base_Subp_Body is record Node : aliased Bare_Base_Subp_Body; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Subp_Body : constant Internal_Entity_Base_Subp_Body; function Create_Internal_Entity_Base_Subp_Body (Node : Bare_Base_Subp_Body; Info : Internal_Entity_Info) return Internal_Entity_Base_Subp_Body; function Trace_Image (R : Internal_Entity_Base_Subp_Body) return String; type Internal_Entity_Base_Subp_Spec is record Node : aliased Bare_Base_Subp_Spec; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Subp_Spec : constant Internal_Entity_Base_Subp_Spec; function Create_Internal_Entity_Base_Subp_Spec (Node : Bare_Base_Subp_Spec; Info : Internal_Entity_Info) return Internal_Entity_Base_Subp_Spec; function Trace_Image (R : Internal_Entity_Base_Subp_Spec) return String; type Internal_Entity_Base_Subtype_Decl is record Node : aliased Bare_Base_Subtype_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Base_Subtype_Decl : constant Internal_Entity_Base_Subtype_Decl; function Create_Internal_Entity_Base_Subtype_Decl (Node : Bare_Base_Subtype_Decl; Info : Internal_Entity_Info) return Internal_Entity_Base_Subtype_Decl; function Trace_Image (R : Internal_Entity_Base_Subtype_Decl) return String; type Internal_Entity_Basic_Decl_List is record Node : aliased Bare_Basic_Decl_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Basic_Decl_List : constant Internal_Entity_Basic_Decl_List; function Create_Internal_Entity_Basic_Decl_List (Node : Bare_Basic_Decl_List; Info : Internal_Entity_Info) return Internal_Entity_Basic_Decl_List; function Trace_Image (R : Internal_Entity_Basic_Decl_List) return String; type Internal_Entity_Block_Stmt is record Node : aliased Bare_Block_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Block_Stmt : constant Internal_Entity_Block_Stmt; function Create_Internal_Entity_Block_Stmt (Node : Bare_Block_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Block_Stmt; function Trace_Image (R : Internal_Entity_Block_Stmt) return String; type Internal_Entity_Begin_Block is record Node : aliased Bare_Begin_Block; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Begin_Block : constant Internal_Entity_Begin_Block; function Create_Internal_Entity_Begin_Block (Node : Bare_Begin_Block; Info : Internal_Entity_Info) return Internal_Entity_Begin_Block; function Trace_Image (R : Internal_Entity_Begin_Block) return String; type Internal_Entity_Bin_Op is record Node : aliased Bare_Bin_Op; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Bin_Op : constant Internal_Entity_Bin_Op; function Create_Internal_Entity_Bin_Op (Node : Bare_Bin_Op; Info : Internal_Entity_Info) return Internal_Entity_Bin_Op; function Trace_Image (R : Internal_Entity_Bin_Op) return String; type Internal_Entity_Body_Stub is record Node : aliased Bare_Body_Stub; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Body_Stub : constant Internal_Entity_Body_Stub; function Create_Internal_Entity_Body_Stub (Node : Bare_Body_Stub; Info : Internal_Entity_Info) return Internal_Entity_Body_Stub; function Trace_Image (R : Internal_Entity_Body_Stub) return String; type Internal_Entity_Box_Expr is record Node : aliased Bare_Box_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Box_Expr : constant Internal_Entity_Box_Expr; function Create_Internal_Entity_Box_Expr (Node : Bare_Box_Expr; Info : Internal_Entity_Info) return Internal_Entity_Box_Expr; function Trace_Image (R : Internal_Entity_Box_Expr) return String; type Internal_Entity_Bracket_Aggregate is record Node : aliased Bare_Bracket_Aggregate; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Bracket_Aggregate : constant Internal_Entity_Bracket_Aggregate; function Create_Internal_Entity_Bracket_Aggregate (Node : Bare_Bracket_Aggregate; Info : Internal_Entity_Info) return Internal_Entity_Bracket_Aggregate; function Trace_Image (R : Internal_Entity_Bracket_Aggregate) return String; type Internal_Entity_Delta_Aggregate is record Node : aliased Bare_Delta_Aggregate; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Delta_Aggregate : constant Internal_Entity_Delta_Aggregate; function Create_Internal_Entity_Delta_Aggregate (Node : Bare_Delta_Aggregate; Info : Internal_Entity_Info) return Internal_Entity_Delta_Aggregate; function Trace_Image (R : Internal_Entity_Delta_Aggregate) return String; type Internal_Entity_Bracket_Delta_Aggregate is record Node : aliased Bare_Bracket_Delta_Aggregate; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Bracket_Delta_Aggregate : constant Internal_Entity_Bracket_Delta_Aggregate; function Create_Internal_Entity_Bracket_Delta_Aggregate (Node : Bare_Bracket_Delta_Aggregate; Info : Internal_Entity_Info) return Internal_Entity_Bracket_Delta_Aggregate; function Trace_Image (R : Internal_Entity_Bracket_Delta_Aggregate) return String; type Internal_Entity_Call_Expr is record Node : aliased Bare_Call_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Call_Expr : constant Internal_Entity_Call_Expr; function Create_Internal_Entity_Call_Expr (Node : Bare_Call_Expr; Info : Internal_Entity_Info) return Internal_Entity_Call_Expr; function Trace_Image (R : Internal_Entity_Call_Expr) return String; type Internal_Entity_Call_Stmt is record Node : aliased Bare_Call_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Call_Stmt : constant Internal_Entity_Call_Stmt; function Create_Internal_Entity_Call_Stmt (Node : Bare_Call_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Call_Stmt; function Trace_Image (R : Internal_Entity_Call_Stmt) return String; type Internal_Entity_Cond_Expr is record Node : aliased Bare_Cond_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Cond_Expr : constant Internal_Entity_Cond_Expr; function Create_Internal_Entity_Cond_Expr (Node : Bare_Cond_Expr; Info : Internal_Entity_Info) return Internal_Entity_Cond_Expr; function Trace_Image (R : Internal_Entity_Cond_Expr) return String; type Internal_Entity_Case_Expr is record Node : aliased Bare_Case_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Case_Expr : constant Internal_Entity_Case_Expr; function Create_Internal_Entity_Case_Expr (Node : Bare_Case_Expr; Info : Internal_Entity_Info) return Internal_Entity_Case_Expr; function Trace_Image (R : Internal_Entity_Case_Expr) return String; type Internal_Entity_Case_Expr_Alternative is record Node : aliased Bare_Case_Expr_Alternative; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Case_Expr_Alternative : constant Internal_Entity_Case_Expr_Alternative; function Create_Internal_Entity_Case_Expr_Alternative (Node : Bare_Case_Expr_Alternative; Info : Internal_Entity_Info) return Internal_Entity_Case_Expr_Alternative; function Trace_Image (R : Internal_Entity_Case_Expr_Alternative) return String; type Internal_Entity_Case_Expr_Alternative_List is record Node : aliased Bare_Case_Expr_Alternative_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Case_Expr_Alternative_List : constant Internal_Entity_Case_Expr_Alternative_List; function Create_Internal_Entity_Case_Expr_Alternative_List (Node : Bare_Case_Expr_Alternative_List; Info : Internal_Entity_Info) return Internal_Entity_Case_Expr_Alternative_List; function Trace_Image (R : Internal_Entity_Case_Expr_Alternative_List) return String; type Internal_Entity_Case_Stmt is record Node : aliased Bare_Case_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Case_Stmt : constant Internal_Entity_Case_Stmt; function Create_Internal_Entity_Case_Stmt (Node : Bare_Case_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Case_Stmt; function Trace_Image (R : Internal_Entity_Case_Stmt) return String; type Internal_Entity_Case_Stmt_Alternative is record Node : aliased Bare_Case_Stmt_Alternative; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Case_Stmt_Alternative : constant Internal_Entity_Case_Stmt_Alternative; function Create_Internal_Entity_Case_Stmt_Alternative (Node : Bare_Case_Stmt_Alternative; Info : Internal_Entity_Info) return Internal_Entity_Case_Stmt_Alternative; function Trace_Image (R : Internal_Entity_Case_Stmt_Alternative) return String; type Internal_Entity_Case_Stmt_Alternative_List is record Node : aliased Bare_Case_Stmt_Alternative_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Case_Stmt_Alternative_List : constant Internal_Entity_Case_Stmt_Alternative_List; function Create_Internal_Entity_Case_Stmt_Alternative_List (Node : Bare_Case_Stmt_Alternative_List; Info : Internal_Entity_Info) return Internal_Entity_Case_Stmt_Alternative_List; function Trace_Image (R : Internal_Entity_Case_Stmt_Alternative_List) return String; type Internal_Entity_Char_Literal is record Node : aliased Bare_Char_Literal; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Char_Literal : constant Internal_Entity_Char_Literal; function Create_Internal_Entity_Char_Literal (Node : Bare_Char_Literal; Info : Internal_Entity_Info) return Internal_Entity_Char_Literal; function Trace_Image (R : Internal_Entity_Char_Literal) return String; type Internal_Entity_Classwide_Type_Decl is record Node : aliased Bare_Classwide_Type_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Classwide_Type_Decl : constant Internal_Entity_Classwide_Type_Decl; function Create_Internal_Entity_Classwide_Type_Decl (Node : Bare_Classwide_Type_Decl; Info : Internal_Entity_Info) return Internal_Entity_Classwide_Type_Decl; function Trace_Image (R : Internal_Entity_Classwide_Type_Decl) return String; type Internal_Entity_Compilation_Unit is record Node : aliased Bare_Compilation_Unit; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Compilation_Unit : constant Internal_Entity_Compilation_Unit; function Create_Internal_Entity_Compilation_Unit (Node : Bare_Compilation_Unit; Info : Internal_Entity_Info) return Internal_Entity_Compilation_Unit; function Hash (R : Internal_Entity_Compilation_Unit) return Hash_Type; function Trace_Image (R : Internal_Entity_Compilation_Unit) return String; type Internal_Entity_Compilation_Unit_List is record Node : aliased Bare_Compilation_Unit_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Compilation_Unit_List : constant Internal_Entity_Compilation_Unit_List; function Create_Internal_Entity_Compilation_Unit_List (Node : Bare_Compilation_Unit_List; Info : Internal_Entity_Info) return Internal_Entity_Compilation_Unit_List; function Trace_Image (R : Internal_Entity_Compilation_Unit_List) return String; type Internal_Entity_Component_Clause is record Node : aliased Bare_Component_Clause; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Component_Clause : constant Internal_Entity_Component_Clause; function Create_Internal_Entity_Component_Clause (Node : Bare_Component_Clause; Info : Internal_Entity_Info) return Internal_Entity_Component_Clause; function Trace_Image (R : Internal_Entity_Component_Clause) return String; type Internal_Entity_Component_Decl is record Node : aliased Bare_Component_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Component_Decl : constant Internal_Entity_Component_Decl; function Create_Internal_Entity_Component_Decl (Node : Bare_Component_Decl; Info : Internal_Entity_Info) return Internal_Entity_Component_Decl; function Trace_Image (R : Internal_Entity_Component_Decl) return String; type Internal_Entity_Component_Def is record Node : aliased Bare_Component_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Component_Def : constant Internal_Entity_Component_Def; function Create_Internal_Entity_Component_Def (Node : Bare_Component_Def; Info : Internal_Entity_Info) return Internal_Entity_Component_Def; function Trace_Image (R : Internal_Entity_Component_Def) return String; type Internal_Entity_Component_List is record Node : aliased Bare_Component_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Component_List : constant Internal_Entity_Component_List; function Create_Internal_Entity_Component_List (Node : Bare_Component_List; Info : Internal_Entity_Info) return Internal_Entity_Component_List; function Trace_Image (R : Internal_Entity_Component_List) return String; type Internal_Entity_Concrete_Formal_Subp_Decl is record Node : aliased Bare_Concrete_Formal_Subp_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Concrete_Formal_Subp_Decl : constant Internal_Entity_Concrete_Formal_Subp_Decl; function Create_Internal_Entity_Concrete_Formal_Subp_Decl (Node : Bare_Concrete_Formal_Subp_Decl; Info : Internal_Entity_Info) return Internal_Entity_Concrete_Formal_Subp_Decl; function Trace_Image (R : Internal_Entity_Concrete_Formal_Subp_Decl) return String; type Internal_Entity_Constant_Node is record Node : aliased Bare_Constant_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Constant_Node : constant Internal_Entity_Constant_Node; function Create_Internal_Entity_Constant_Node (Node : Bare_Constant_Node; Info : Internal_Entity_Info) return Internal_Entity_Constant_Node; function Trace_Image (R : Internal_Entity_Constant_Node) return String; type Internal_Entity_Constant_Absent is record Node : aliased Bare_Constant_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Constant_Absent : constant Internal_Entity_Constant_Absent; function Create_Internal_Entity_Constant_Absent (Node : Bare_Constant_Absent; Info : Internal_Entity_Info) return Internal_Entity_Constant_Absent; function Trace_Image (R : Internal_Entity_Constant_Absent) return String; type Internal_Entity_Constant_Present is record Node : aliased Bare_Constant_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Constant_Present : constant Internal_Entity_Constant_Present; function Create_Internal_Entity_Constant_Present (Node : Bare_Constant_Present; Info : Internal_Entity_Info) return Internal_Entity_Constant_Present; function Trace_Image (R : Internal_Entity_Constant_Present) return String; type Internal_Entity_Constrained_Array_Indices is record Node : aliased Bare_Constrained_Array_Indices; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Constrained_Array_Indices : constant Internal_Entity_Constrained_Array_Indices; function Create_Internal_Entity_Constrained_Array_Indices (Node : Bare_Constrained_Array_Indices; Info : Internal_Entity_Info) return Internal_Entity_Constrained_Array_Indices; function Trace_Image (R : Internal_Entity_Constrained_Array_Indices) return String; type Internal_Entity_Subtype_Indication is record Node : aliased Bare_Subtype_Indication; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Subtype_Indication : constant Internal_Entity_Subtype_Indication; function Create_Internal_Entity_Subtype_Indication (Node : Bare_Subtype_Indication; Info : Internal_Entity_Info) return Internal_Entity_Subtype_Indication; function Trace_Image (R : Internal_Entity_Subtype_Indication) return String; type Internal_Entity_Constrained_Subtype_Indication is record Node : aliased Bare_Constrained_Subtype_Indication; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Constrained_Subtype_Indication : constant Internal_Entity_Constrained_Subtype_Indication; function Create_Internal_Entity_Constrained_Subtype_Indication (Node : Bare_Constrained_Subtype_Indication; Info : Internal_Entity_Info) return Internal_Entity_Constrained_Subtype_Indication; function Trace_Image (R : Internal_Entity_Constrained_Subtype_Indication) return String; type Internal_Entity_Constraint is record Node : aliased Bare_Constraint; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Constraint : constant Internal_Entity_Constraint; function Create_Internal_Entity_Constraint (Node : Bare_Constraint; Info : Internal_Entity_Info) return Internal_Entity_Constraint; function Trace_Image (R : Internal_Entity_Constraint) return String; type Internal_Entity_Constraint_List is record Node : aliased Bare_Constraint_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Constraint_List : constant Internal_Entity_Constraint_List; function Create_Internal_Entity_Constraint_List (Node : Bare_Constraint_List; Info : Internal_Entity_Info) return Internal_Entity_Constraint_List; function Trace_Image (R : Internal_Entity_Constraint_List) return String; type Internal_Entity_Contract_Case_Assoc is record Node : aliased Bare_Contract_Case_Assoc; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Contract_Case_Assoc : constant Internal_Entity_Contract_Case_Assoc; function Create_Internal_Entity_Contract_Case_Assoc (Node : Bare_Contract_Case_Assoc; Info : Internal_Entity_Info) return Internal_Entity_Contract_Case_Assoc; function Trace_Image (R : Internal_Entity_Contract_Case_Assoc) return String; type Internal_Entity_Contract_Case_Assoc_List is record Node : aliased Bare_Contract_Case_Assoc_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Contract_Case_Assoc_List : constant Internal_Entity_Contract_Case_Assoc_List; function Create_Internal_Entity_Contract_Case_Assoc_List (Node : Bare_Contract_Case_Assoc_List; Info : Internal_Entity_Info) return Internal_Entity_Contract_Case_Assoc_List; function Trace_Image (R : Internal_Entity_Contract_Case_Assoc_List) return String; type Internal_Entity_Contract_Cases is record Node : aliased Bare_Contract_Cases; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Contract_Cases : constant Internal_Entity_Contract_Cases; function Create_Internal_Entity_Contract_Cases (Node : Bare_Contract_Cases; Info : Internal_Entity_Info) return Internal_Entity_Contract_Cases; function Trace_Image (R : Internal_Entity_Contract_Cases) return String; type Internal_Entity_Real_Type_Def is record Node : aliased Bare_Real_Type_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Real_Type_Def : constant Internal_Entity_Real_Type_Def; function Create_Internal_Entity_Real_Type_Def (Node : Bare_Real_Type_Def; Info : Internal_Entity_Info) return Internal_Entity_Real_Type_Def; function Trace_Image (R : Internal_Entity_Real_Type_Def) return String; type Internal_Entity_Decimal_Fixed_Point_Def is record Node : aliased Bare_Decimal_Fixed_Point_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Decimal_Fixed_Point_Def : constant Internal_Entity_Decimal_Fixed_Point_Def; function Create_Internal_Entity_Decimal_Fixed_Point_Def (Node : Bare_Decimal_Fixed_Point_Def; Info : Internal_Entity_Info) return Internal_Entity_Decimal_Fixed_Point_Def; function Trace_Image (R : Internal_Entity_Decimal_Fixed_Point_Def) return String; type Internal_Entity_Decl_Block is record Node : aliased Bare_Decl_Block; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Decl_Block : constant Internal_Entity_Decl_Block; function Create_Internal_Entity_Decl_Block (Node : Bare_Decl_Block; Info : Internal_Entity_Info) return Internal_Entity_Decl_Block; function Trace_Image (R : Internal_Entity_Decl_Block) return String; type Internal_Entity_Decl_Expr is record Node : aliased Bare_Decl_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Decl_Expr : constant Internal_Entity_Decl_Expr; function Create_Internal_Entity_Decl_Expr (Node : Bare_Decl_Expr; Info : Internal_Entity_Info) return Internal_Entity_Decl_Expr; function Trace_Image (R : Internal_Entity_Decl_Expr) return String; type Internal_Entity_Decl_List is record Node : aliased Bare_Decl_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Decl_List : constant Internal_Entity_Decl_List; function Create_Internal_Entity_Decl_List (Node : Bare_Decl_List; Info : Internal_Entity_Info) return Internal_Entity_Decl_List; function Trace_Image (R : Internal_Entity_Decl_List) return String; type Internal_Entity_Declarative_Part is record Node : aliased Bare_Declarative_Part; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Declarative_Part : constant Internal_Entity_Declarative_Part; function Create_Internal_Entity_Declarative_Part (Node : Bare_Declarative_Part; Info : Internal_Entity_Info) return Internal_Entity_Declarative_Part; function Trace_Image (R : Internal_Entity_Declarative_Part) return String; type Internal_Entity_Defining_Name is record Node : aliased Bare_Defining_Name; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Defining_Name : constant Internal_Entity_Defining_Name; function Create_Internal_Entity_Defining_Name (Node : Bare_Defining_Name; Info : Internal_Entity_Info) return Internal_Entity_Defining_Name; function Trace_Image (R : Internal_Entity_Defining_Name) return String; type Internal_Entity_Defining_Name_List is record Node : aliased Bare_Defining_Name_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Defining_Name_List : constant Internal_Entity_Defining_Name_List; function Create_Internal_Entity_Defining_Name_List (Node : Bare_Defining_Name_List; Info : Internal_Entity_Info) return Internal_Entity_Defining_Name_List; function Trace_Image (R : Internal_Entity_Defining_Name_List) return String; type Internal_Entity_Delay_Stmt is record Node : aliased Bare_Delay_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Delay_Stmt : constant Internal_Entity_Delay_Stmt; function Create_Internal_Entity_Delay_Stmt (Node : Bare_Delay_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Delay_Stmt; function Trace_Image (R : Internal_Entity_Delay_Stmt) return String; type Internal_Entity_Delta_Constraint is record Node : aliased Bare_Delta_Constraint; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Delta_Constraint : constant Internal_Entity_Delta_Constraint; function Create_Internal_Entity_Delta_Constraint (Node : Bare_Delta_Constraint; Info : Internal_Entity_Info) return Internal_Entity_Delta_Constraint; function Trace_Image (R : Internal_Entity_Delta_Constraint) return String; type Internal_Entity_Derived_Type_Def is record Node : aliased Bare_Derived_Type_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Derived_Type_Def : constant Internal_Entity_Derived_Type_Def; function Create_Internal_Entity_Derived_Type_Def (Node : Bare_Derived_Type_Def; Info : Internal_Entity_Info) return Internal_Entity_Derived_Type_Def; function Trace_Image (R : Internal_Entity_Derived_Type_Def) return String; type Internal_Entity_Digits_Constraint is record Node : aliased Bare_Digits_Constraint; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Digits_Constraint : constant Internal_Entity_Digits_Constraint; function Create_Internal_Entity_Digits_Constraint (Node : Bare_Digits_Constraint; Info : Internal_Entity_Info) return Internal_Entity_Digits_Constraint; function Trace_Image (R : Internal_Entity_Digits_Constraint) return String; type Internal_Entity_Discrete_Base_Subtype_Decl is record Node : aliased Bare_Discrete_Base_Subtype_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Discrete_Base_Subtype_Decl : constant Internal_Entity_Discrete_Base_Subtype_Decl; function Create_Internal_Entity_Discrete_Base_Subtype_Decl (Node : Bare_Discrete_Base_Subtype_Decl; Info : Internal_Entity_Info) return Internal_Entity_Discrete_Base_Subtype_Decl; function Trace_Image (R : Internal_Entity_Discrete_Base_Subtype_Decl) return String; type Internal_Entity_Discrete_Subtype_Indication is record Node : aliased Bare_Discrete_Subtype_Indication; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Discrete_Subtype_Indication : constant Internal_Entity_Discrete_Subtype_Indication; function Create_Internal_Entity_Discrete_Subtype_Indication (Node : Bare_Discrete_Subtype_Indication; Info : Internal_Entity_Info) return Internal_Entity_Discrete_Subtype_Indication; function Trace_Image (R : Internal_Entity_Discrete_Subtype_Indication) return String; type Internal_Entity_Discrete_Subtype_Name is record Node : aliased Bare_Discrete_Subtype_Name; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Discrete_Subtype_Name : constant Internal_Entity_Discrete_Subtype_Name; function Create_Internal_Entity_Discrete_Subtype_Name (Node : Bare_Discrete_Subtype_Name; Info : Internal_Entity_Info) return Internal_Entity_Discrete_Subtype_Name; function Trace_Image (R : Internal_Entity_Discrete_Subtype_Name) return String; type Internal_Entity_Discriminant_Assoc is record Node : aliased Bare_Discriminant_Assoc; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Discriminant_Assoc : constant Internal_Entity_Discriminant_Assoc; function Create_Internal_Entity_Discriminant_Assoc (Node : Bare_Discriminant_Assoc; Info : Internal_Entity_Info) return Internal_Entity_Discriminant_Assoc; function Trace_Image (R : Internal_Entity_Discriminant_Assoc) return String; type Internal_Entity_Identifier_List is record Node : aliased Bare_Identifier_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Identifier_List : constant Internal_Entity_Identifier_List; function Create_Internal_Entity_Identifier_List (Node : Bare_Identifier_List; Info : Internal_Entity_Info) return Internal_Entity_Identifier_List; function Trace_Image (R : Internal_Entity_Identifier_List) return String; type Internal_Entity_Discriminant_Choice_List is record Node : aliased Bare_Discriminant_Choice_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Discriminant_Choice_List : constant Internal_Entity_Discriminant_Choice_List; function Create_Internal_Entity_Discriminant_Choice_List (Node : Bare_Discriminant_Choice_List; Info : Internal_Entity_Info) return Internal_Entity_Discriminant_Choice_List; function Trace_Image (R : Internal_Entity_Discriminant_Choice_List) return String; type Internal_Entity_Discriminant_Constraint is record Node : aliased Bare_Discriminant_Constraint; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Discriminant_Constraint : constant Internal_Entity_Discriminant_Constraint; function Create_Internal_Entity_Discriminant_Constraint (Node : Bare_Discriminant_Constraint; Info : Internal_Entity_Info) return Internal_Entity_Discriminant_Constraint; function Trace_Image (R : Internal_Entity_Discriminant_Constraint) return String; type Internal_Entity_Discriminant_Part is record Node : aliased Bare_Discriminant_Part; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Discriminant_Part : constant Internal_Entity_Discriminant_Part; function Create_Internal_Entity_Discriminant_Part (Node : Bare_Discriminant_Part; Info : Internal_Entity_Info) return Internal_Entity_Discriminant_Part; function Trace_Image (R : Internal_Entity_Discriminant_Part) return String; type Internal_Entity_Discriminant_Spec is record Node : aliased Bare_Discriminant_Spec; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Discriminant_Spec : constant Internal_Entity_Discriminant_Spec; function Create_Internal_Entity_Discriminant_Spec (Node : Bare_Discriminant_Spec; Info : Internal_Entity_Info) return Internal_Entity_Discriminant_Spec; function Trace_Image (R : Internal_Entity_Discriminant_Spec) return String; type Internal_Entity_Discriminant_Spec_List is record Node : aliased Bare_Discriminant_Spec_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Discriminant_Spec_List : constant Internal_Entity_Discriminant_Spec_List; function Create_Internal_Entity_Discriminant_Spec_List (Node : Bare_Discriminant_Spec_List; Info : Internal_Entity_Info) return Internal_Entity_Discriminant_Spec_List; function Trace_Image (R : Internal_Entity_Discriminant_Spec_List) return String; type Internal_Entity_Dotted_Name is record Node : aliased Bare_Dotted_Name; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Dotted_Name : constant Internal_Entity_Dotted_Name; function Create_Internal_Entity_Dotted_Name (Node : Bare_Dotted_Name; Info : Internal_Entity_Info) return Internal_Entity_Dotted_Name; function Trace_Image (R : Internal_Entity_Dotted_Name) return String; type Internal_Entity_Elsif_Expr_Part is record Node : aliased Bare_Elsif_Expr_Part; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Elsif_Expr_Part : constant Internal_Entity_Elsif_Expr_Part; function Create_Internal_Entity_Elsif_Expr_Part (Node : Bare_Elsif_Expr_Part; Info : Internal_Entity_Info) return Internal_Entity_Elsif_Expr_Part; function Trace_Image (R : Internal_Entity_Elsif_Expr_Part) return String; type Internal_Entity_Elsif_Expr_Part_List is record Node : aliased Bare_Elsif_Expr_Part_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Elsif_Expr_Part_List : constant Internal_Entity_Elsif_Expr_Part_List; function Create_Internal_Entity_Elsif_Expr_Part_List (Node : Bare_Elsif_Expr_Part_List; Info : Internal_Entity_Info) return Internal_Entity_Elsif_Expr_Part_List; function Trace_Image (R : Internal_Entity_Elsif_Expr_Part_List) return String; type Internal_Entity_Elsif_Stmt_Part is record Node : aliased Bare_Elsif_Stmt_Part; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Elsif_Stmt_Part : constant Internal_Entity_Elsif_Stmt_Part; function Create_Internal_Entity_Elsif_Stmt_Part (Node : Bare_Elsif_Stmt_Part; Info : Internal_Entity_Info) return Internal_Entity_Elsif_Stmt_Part; function Trace_Image (R : Internal_Entity_Elsif_Stmt_Part) return String; type Internal_Entity_Elsif_Stmt_Part_List is record Node : aliased Bare_Elsif_Stmt_Part_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Elsif_Stmt_Part_List : constant Internal_Entity_Elsif_Stmt_Part_List; function Create_Internal_Entity_Elsif_Stmt_Part_List (Node : Bare_Elsif_Stmt_Part_List; Info : Internal_Entity_Info) return Internal_Entity_Elsif_Stmt_Part_List; function Trace_Image (R : Internal_Entity_Elsif_Stmt_Part_List) return String; type Internal_Entity_End_Name is record Node : aliased Bare_End_Name; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_End_Name : constant Internal_Entity_End_Name; function Create_Internal_Entity_End_Name (Node : Bare_End_Name; Info : Internal_Entity_Info) return Internal_Entity_End_Name; function Trace_Image (R : Internal_Entity_End_Name) return String; type Internal_Entity_Entry_Body is record Node : aliased Bare_Entry_Body; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Entry_Body : constant Internal_Entity_Entry_Body; function Create_Internal_Entity_Entry_Body (Node : Bare_Entry_Body; Info : Internal_Entity_Info) return Internal_Entity_Entry_Body; function Trace_Image (R : Internal_Entity_Entry_Body) return String; type Internal_Entity_Entry_Completion_Formal_Params is record Node : aliased Bare_Entry_Completion_Formal_Params; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Entry_Completion_Formal_Params : constant Internal_Entity_Entry_Completion_Formal_Params; function Create_Internal_Entity_Entry_Completion_Formal_Params (Node : Bare_Entry_Completion_Formal_Params; Info : Internal_Entity_Info) return Internal_Entity_Entry_Completion_Formal_Params; function Trace_Image (R : Internal_Entity_Entry_Completion_Formal_Params) return String; type Internal_Entity_Entry_Decl is record Node : aliased Bare_Entry_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Entry_Decl : constant Internal_Entity_Entry_Decl; function Create_Internal_Entity_Entry_Decl (Node : Bare_Entry_Decl; Info : Internal_Entity_Info) return Internal_Entity_Entry_Decl; function Trace_Image (R : Internal_Entity_Entry_Decl) return String; type Internal_Entity_Entry_Index_Spec is record Node : aliased Bare_Entry_Index_Spec; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Entry_Index_Spec : constant Internal_Entity_Entry_Index_Spec; function Create_Internal_Entity_Entry_Index_Spec (Node : Bare_Entry_Index_Spec; Info : Internal_Entity_Info) return Internal_Entity_Entry_Index_Spec; function Trace_Image (R : Internal_Entity_Entry_Index_Spec) return String; type Internal_Entity_Entry_Spec is record Node : aliased Bare_Entry_Spec; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Entry_Spec : constant Internal_Entity_Entry_Spec; function Create_Internal_Entity_Entry_Spec (Node : Bare_Entry_Spec; Info : Internal_Entity_Info) return Internal_Entity_Entry_Spec; function Trace_Image (R : Internal_Entity_Entry_Spec) return String; type Internal_Entity_Enum_Lit_Synth_Type_Expr is record Node : aliased Bare_Enum_Lit_Synth_Type_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Enum_Lit_Synth_Type_Expr : constant Internal_Entity_Enum_Lit_Synth_Type_Expr; function Create_Internal_Entity_Enum_Lit_Synth_Type_Expr (Node : Bare_Enum_Lit_Synth_Type_Expr; Info : Internal_Entity_Info) return Internal_Entity_Enum_Lit_Synth_Type_Expr; function Trace_Image (R : Internal_Entity_Enum_Lit_Synth_Type_Expr) return String; type Internal_Entity_Enum_Literal_Decl is record Node : aliased Bare_Enum_Literal_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Enum_Literal_Decl : constant Internal_Entity_Enum_Literal_Decl; function Create_Internal_Entity_Enum_Literal_Decl (Node : Bare_Enum_Literal_Decl; Info : Internal_Entity_Info) return Internal_Entity_Enum_Literal_Decl; function Trace_Image (R : Internal_Entity_Enum_Literal_Decl) return String; type Internal_Entity_Enum_Literal_Decl_List is record Node : aliased Bare_Enum_Literal_Decl_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Enum_Literal_Decl_List : constant Internal_Entity_Enum_Literal_Decl_List; function Create_Internal_Entity_Enum_Literal_Decl_List (Node : Bare_Enum_Literal_Decl_List; Info : Internal_Entity_Info) return Internal_Entity_Enum_Literal_Decl_List; function Trace_Image (R : Internal_Entity_Enum_Literal_Decl_List) return String; type Internal_Entity_Enum_Rep_Clause is record Node : aliased Bare_Enum_Rep_Clause; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Enum_Rep_Clause : constant Internal_Entity_Enum_Rep_Clause; function Create_Internal_Entity_Enum_Rep_Clause (Node : Bare_Enum_Rep_Clause; Info : Internal_Entity_Info) return Internal_Entity_Enum_Rep_Clause; function Trace_Image (R : Internal_Entity_Enum_Rep_Clause) return String; type Internal_Entity_Enum_Subp_Spec is record Node : aliased Bare_Enum_Subp_Spec; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Enum_Subp_Spec : constant Internal_Entity_Enum_Subp_Spec; function Create_Internal_Entity_Enum_Subp_Spec (Node : Bare_Enum_Subp_Spec; Info : Internal_Entity_Info) return Internal_Entity_Enum_Subp_Spec; function Trace_Image (R : Internal_Entity_Enum_Subp_Spec) return String; type Internal_Entity_Enum_Type_Def is record Node : aliased Bare_Enum_Type_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Enum_Type_Def : constant Internal_Entity_Enum_Type_Def; function Create_Internal_Entity_Enum_Type_Def (Node : Bare_Enum_Type_Def; Info : Internal_Entity_Info) return Internal_Entity_Enum_Type_Def; function Trace_Image (R : Internal_Entity_Enum_Type_Def) return String; type Internal_Entity_Error_Decl is record Node : aliased Bare_Error_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Error_Decl : constant Internal_Entity_Error_Decl; function Create_Internal_Entity_Error_Decl (Node : Bare_Error_Decl; Info : Internal_Entity_Info) return Internal_Entity_Error_Decl; function Trace_Image (R : Internal_Entity_Error_Decl) return String; type Internal_Entity_Error_Stmt is record Node : aliased Bare_Error_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Error_Stmt : constant Internal_Entity_Error_Stmt; function Create_Internal_Entity_Error_Stmt (Node : Bare_Error_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Error_Stmt; function Trace_Image (R : Internal_Entity_Error_Stmt) return String; type Internal_Entity_Exception_Decl is record Node : aliased Bare_Exception_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Exception_Decl : constant Internal_Entity_Exception_Decl; function Create_Internal_Entity_Exception_Decl (Node : Bare_Exception_Decl; Info : Internal_Entity_Info) return Internal_Entity_Exception_Decl; function Trace_Image (R : Internal_Entity_Exception_Decl) return String; type Internal_Entity_Exception_Handler is record Node : aliased Bare_Exception_Handler; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Exception_Handler : constant Internal_Entity_Exception_Handler; function Create_Internal_Entity_Exception_Handler (Node : Bare_Exception_Handler; Info : Internal_Entity_Info) return Internal_Entity_Exception_Handler; function Trace_Image (R : Internal_Entity_Exception_Handler) return String; type Internal_Entity_Exit_Stmt is record Node : aliased Bare_Exit_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Exit_Stmt : constant Internal_Entity_Exit_Stmt; function Create_Internal_Entity_Exit_Stmt (Node : Bare_Exit_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Exit_Stmt; function Trace_Image (R : Internal_Entity_Exit_Stmt) return String; type Internal_Entity_Explicit_Deref is record Node : aliased Bare_Explicit_Deref; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Explicit_Deref : constant Internal_Entity_Explicit_Deref; function Create_Internal_Entity_Explicit_Deref (Node : Bare_Explicit_Deref; Info : Internal_Entity_Info) return Internal_Entity_Explicit_Deref; function Trace_Image (R : Internal_Entity_Explicit_Deref) return String; type Internal_Entity_Expr_List is record Node : aliased Bare_Expr_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Expr_List : constant Internal_Entity_Expr_List; function Create_Internal_Entity_Expr_List (Node : Bare_Expr_List; Info : Internal_Entity_Info) return Internal_Entity_Expr_List; function Trace_Image (R : Internal_Entity_Expr_List) return String; type Internal_Entity_Expr_Alternatives_List is record Node : aliased Bare_Expr_Alternatives_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Expr_Alternatives_List : constant Internal_Entity_Expr_Alternatives_List; function Create_Internal_Entity_Expr_Alternatives_List (Node : Bare_Expr_Alternatives_List; Info : Internal_Entity_Info) return Internal_Entity_Expr_Alternatives_List; function Trace_Image (R : Internal_Entity_Expr_Alternatives_List) return String; type Internal_Entity_Expr_Function is record Node : aliased Bare_Expr_Function; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Expr_Function : constant Internal_Entity_Expr_Function; function Create_Internal_Entity_Expr_Function (Node : Bare_Expr_Function; Info : Internal_Entity_Info) return Internal_Entity_Expr_Function; function Trace_Image (R : Internal_Entity_Expr_Function) return String; type Internal_Entity_Extended_Return_Stmt is record Node : aliased Bare_Extended_Return_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Extended_Return_Stmt : constant Internal_Entity_Extended_Return_Stmt; function Create_Internal_Entity_Extended_Return_Stmt (Node : Bare_Extended_Return_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Extended_Return_Stmt; function Trace_Image (R : Internal_Entity_Extended_Return_Stmt) return String; type Internal_Entity_Object_Decl is record Node : aliased Bare_Object_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Object_Decl : constant Internal_Entity_Object_Decl; function Create_Internal_Entity_Object_Decl (Node : Bare_Object_Decl; Info : Internal_Entity_Info) return Internal_Entity_Object_Decl; function Trace_Image (R : Internal_Entity_Object_Decl) return String; type Internal_Entity_Extended_Return_Stmt_Object_Decl is record Node : aliased Bare_Extended_Return_Stmt_Object_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Extended_Return_Stmt_Object_Decl : constant Internal_Entity_Extended_Return_Stmt_Object_Decl; function Create_Internal_Entity_Extended_Return_Stmt_Object_Decl (Node : Bare_Extended_Return_Stmt_Object_Decl; Info : Internal_Entity_Info) return Internal_Entity_Extended_Return_Stmt_Object_Decl; function Trace_Image (R : Internal_Entity_Extended_Return_Stmt_Object_Decl) return String; type Internal_Entity_Floating_Point_Def is record Node : aliased Bare_Floating_Point_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Floating_Point_Def : constant Internal_Entity_Floating_Point_Def; function Create_Internal_Entity_Floating_Point_Def (Node : Bare_Floating_Point_Def; Info : Internal_Entity_Info) return Internal_Entity_Floating_Point_Def; function Trace_Image (R : Internal_Entity_Floating_Point_Def) return String; type Internal_Entity_Loop_Spec is record Node : aliased Bare_Loop_Spec; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Loop_Spec : constant Internal_Entity_Loop_Spec; function Create_Internal_Entity_Loop_Spec (Node : Bare_Loop_Spec; Info : Internal_Entity_Info) return Internal_Entity_Loop_Spec; function Trace_Image (R : Internal_Entity_Loop_Spec) return String; type Internal_Entity_For_Loop_Spec is record Node : aliased Bare_For_Loop_Spec; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_For_Loop_Spec : constant Internal_Entity_For_Loop_Spec; function Create_Internal_Entity_For_Loop_Spec (Node : Bare_For_Loop_Spec; Info : Internal_Entity_Info) return Internal_Entity_For_Loop_Spec; function Trace_Image (R : Internal_Entity_For_Loop_Spec) return String; type Internal_Entity_For_Loop_Stmt is record Node : aliased Bare_For_Loop_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_For_Loop_Stmt : constant Internal_Entity_For_Loop_Stmt; function Create_Internal_Entity_For_Loop_Stmt (Node : Bare_For_Loop_Stmt; Info : Internal_Entity_Info) return Internal_Entity_For_Loop_Stmt; function Trace_Image (R : Internal_Entity_For_Loop_Stmt) return String; type Internal_Entity_For_Loop_Var_Decl is record Node : aliased Bare_For_Loop_Var_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_For_Loop_Var_Decl : constant Internal_Entity_For_Loop_Var_Decl; function Create_Internal_Entity_For_Loop_Var_Decl (Node : Bare_For_Loop_Var_Decl; Info : Internal_Entity_Info) return Internal_Entity_For_Loop_Var_Decl; function Trace_Image (R : Internal_Entity_For_Loop_Var_Decl) return String; type Internal_Entity_Formal_Discrete_Type_Def is record Node : aliased Bare_Formal_Discrete_Type_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Formal_Discrete_Type_Def : constant Internal_Entity_Formal_Discrete_Type_Def; function Create_Internal_Entity_Formal_Discrete_Type_Def (Node : Bare_Formal_Discrete_Type_Def; Info : Internal_Entity_Info) return Internal_Entity_Formal_Discrete_Type_Def; function Trace_Image (R : Internal_Entity_Formal_Discrete_Type_Def) return String; type Internal_Entity_Generic_Decl is record Node : aliased Bare_Generic_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Decl : constant Internal_Entity_Generic_Decl; function Create_Internal_Entity_Generic_Decl (Node : Bare_Generic_Decl; Info : Internal_Entity_Info) return Internal_Entity_Generic_Decl; function Trace_Image (R : Internal_Entity_Generic_Decl) return String; type Internal_Entity_Generic_Formal is record Node : aliased Bare_Generic_Formal; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Formal : constant Internal_Entity_Generic_Formal; function Create_Internal_Entity_Generic_Formal (Node : Bare_Generic_Formal; Info : Internal_Entity_Info) return Internal_Entity_Generic_Formal; function Trace_Image (R : Internal_Entity_Generic_Formal) return String; type Internal_Entity_Generic_Formal_Obj_Decl is record Node : aliased Bare_Generic_Formal_Obj_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Formal_Obj_Decl : constant Internal_Entity_Generic_Formal_Obj_Decl; function Create_Internal_Entity_Generic_Formal_Obj_Decl (Node : Bare_Generic_Formal_Obj_Decl; Info : Internal_Entity_Info) return Internal_Entity_Generic_Formal_Obj_Decl; function Trace_Image (R : Internal_Entity_Generic_Formal_Obj_Decl) return String; type Internal_Entity_Generic_Formal_Package is record Node : aliased Bare_Generic_Formal_Package; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Formal_Package : constant Internal_Entity_Generic_Formal_Package; function Create_Internal_Entity_Generic_Formal_Package (Node : Bare_Generic_Formal_Package; Info : Internal_Entity_Info) return Internal_Entity_Generic_Formal_Package; function Trace_Image (R : Internal_Entity_Generic_Formal_Package) return String; type Internal_Entity_Generic_Formal_Part is record Node : aliased Bare_Generic_Formal_Part; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Formal_Part : constant Internal_Entity_Generic_Formal_Part; function Create_Internal_Entity_Generic_Formal_Part (Node : Bare_Generic_Formal_Part; Info : Internal_Entity_Info) return Internal_Entity_Generic_Formal_Part; function Trace_Image (R : Internal_Entity_Generic_Formal_Part) return String; type Internal_Entity_Generic_Formal_Subp_Decl is record Node : aliased Bare_Generic_Formal_Subp_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Formal_Subp_Decl : constant Internal_Entity_Generic_Formal_Subp_Decl; function Create_Internal_Entity_Generic_Formal_Subp_Decl (Node : Bare_Generic_Formal_Subp_Decl; Info : Internal_Entity_Info) return Internal_Entity_Generic_Formal_Subp_Decl; function Trace_Image (R : Internal_Entity_Generic_Formal_Subp_Decl) return String; type Internal_Entity_Generic_Formal_Type_Decl is record Node : aliased Bare_Generic_Formal_Type_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Formal_Type_Decl : constant Internal_Entity_Generic_Formal_Type_Decl; function Create_Internal_Entity_Generic_Formal_Type_Decl (Node : Bare_Generic_Formal_Type_Decl; Info : Internal_Entity_Info) return Internal_Entity_Generic_Formal_Type_Decl; function Trace_Image (R : Internal_Entity_Generic_Formal_Type_Decl) return String; type Internal_Entity_Generic_Instantiation is record Node : aliased Bare_Generic_Instantiation; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Instantiation : constant Internal_Entity_Generic_Instantiation; function Create_Internal_Entity_Generic_Instantiation (Node : Bare_Generic_Instantiation; Info : Internal_Entity_Info) return Internal_Entity_Generic_Instantiation; function Trace_Image (R : Internal_Entity_Generic_Instantiation) return String; type Internal_Entity_Generic_Package_Decl is record Node : aliased Bare_Generic_Package_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Package_Decl : constant Internal_Entity_Generic_Package_Decl; function Create_Internal_Entity_Generic_Package_Decl (Node : Bare_Generic_Package_Decl; Info : Internal_Entity_Info) return Internal_Entity_Generic_Package_Decl; function Trace_Image (R : Internal_Entity_Generic_Package_Decl) return String; type Internal_Entity_Generic_Package_Instantiation is record Node : aliased Bare_Generic_Package_Instantiation; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Package_Instantiation : constant Internal_Entity_Generic_Package_Instantiation; function Create_Internal_Entity_Generic_Package_Instantiation (Node : Bare_Generic_Package_Instantiation; Info : Internal_Entity_Info) return Internal_Entity_Generic_Package_Instantiation; function Trace_Image (R : Internal_Entity_Generic_Package_Instantiation) return String; type Internal_Entity_Generic_Package_Internal is record Node : aliased Bare_Generic_Package_Internal; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Package_Internal : constant Internal_Entity_Generic_Package_Internal; function Create_Internal_Entity_Generic_Package_Internal (Node : Bare_Generic_Package_Internal; Info : Internal_Entity_Info) return Internal_Entity_Generic_Package_Internal; function Trace_Image (R : Internal_Entity_Generic_Package_Internal) return String; type Internal_Entity_Generic_Renaming_Decl is record Node : aliased Bare_Generic_Renaming_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Renaming_Decl : constant Internal_Entity_Generic_Renaming_Decl; function Create_Internal_Entity_Generic_Renaming_Decl (Node : Bare_Generic_Renaming_Decl; Info : Internal_Entity_Info) return Internal_Entity_Generic_Renaming_Decl; function Trace_Image (R : Internal_Entity_Generic_Renaming_Decl) return String; type Internal_Entity_Generic_Package_Renaming_Decl is record Node : aliased Bare_Generic_Package_Renaming_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Package_Renaming_Decl : constant Internal_Entity_Generic_Package_Renaming_Decl; function Create_Internal_Entity_Generic_Package_Renaming_Decl (Node : Bare_Generic_Package_Renaming_Decl; Info : Internal_Entity_Info) return Internal_Entity_Generic_Package_Renaming_Decl; function Trace_Image (R : Internal_Entity_Generic_Package_Renaming_Decl) return String; type Internal_Entity_Generic_Subp_Decl is record Node : aliased Bare_Generic_Subp_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Subp_Decl : constant Internal_Entity_Generic_Subp_Decl; function Create_Internal_Entity_Generic_Subp_Decl (Node : Bare_Generic_Subp_Decl; Info : Internal_Entity_Info) return Internal_Entity_Generic_Subp_Decl; function Trace_Image (R : Internal_Entity_Generic_Subp_Decl) return String; type Internal_Entity_Generic_Subp_Instantiation is record Node : aliased Bare_Generic_Subp_Instantiation; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Subp_Instantiation : constant Internal_Entity_Generic_Subp_Instantiation; function Create_Internal_Entity_Generic_Subp_Instantiation (Node : Bare_Generic_Subp_Instantiation; Info : Internal_Entity_Info) return Internal_Entity_Generic_Subp_Instantiation; function Trace_Image (R : Internal_Entity_Generic_Subp_Instantiation) return String; type Internal_Entity_Generic_Subp_Internal is record Node : aliased Bare_Generic_Subp_Internal; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Subp_Internal : constant Internal_Entity_Generic_Subp_Internal; function Create_Internal_Entity_Generic_Subp_Internal (Node : Bare_Generic_Subp_Internal; Info : Internal_Entity_Info) return Internal_Entity_Generic_Subp_Internal; function Trace_Image (R : Internal_Entity_Generic_Subp_Internal) return String; type Internal_Entity_Generic_Subp_Renaming_Decl is record Node : aliased Bare_Generic_Subp_Renaming_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Generic_Subp_Renaming_Decl : constant Internal_Entity_Generic_Subp_Renaming_Decl; function Create_Internal_Entity_Generic_Subp_Renaming_Decl (Node : Bare_Generic_Subp_Renaming_Decl; Info : Internal_Entity_Info) return Internal_Entity_Generic_Subp_Renaming_Decl; function Trace_Image (R : Internal_Entity_Generic_Subp_Renaming_Decl) return String; type Internal_Entity_Goto_Stmt is record Node : aliased Bare_Goto_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Goto_Stmt : constant Internal_Entity_Goto_Stmt; function Create_Internal_Entity_Goto_Stmt (Node : Bare_Goto_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Goto_Stmt; function Trace_Image (R : Internal_Entity_Goto_Stmt) return String; type Internal_Entity_Handled_Stmts is record Node : aliased Bare_Handled_Stmts; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Handled_Stmts : constant Internal_Entity_Handled_Stmts; function Create_Internal_Entity_Handled_Stmts (Node : Bare_Handled_Stmts; Info : Internal_Entity_Info) return Internal_Entity_Handled_Stmts; function Trace_Image (R : Internal_Entity_Handled_Stmts) return String; type Internal_Entity_If_Expr is record Node : aliased Bare_If_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_If_Expr : constant Internal_Entity_If_Expr; function Create_Internal_Entity_If_Expr (Node : Bare_If_Expr; Info : Internal_Entity_Info) return Internal_Entity_If_Expr; function Trace_Image (R : Internal_Entity_If_Expr) return String; type Internal_Entity_If_Stmt is record Node : aliased Bare_If_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_If_Stmt : constant Internal_Entity_If_Stmt; function Create_Internal_Entity_If_Stmt (Node : Bare_If_Stmt; Info : Internal_Entity_Info) return Internal_Entity_If_Stmt; function Trace_Image (R : Internal_Entity_If_Stmt) return String; type Internal_Entity_Incomplete_Type_Decl is record Node : aliased Bare_Incomplete_Type_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Incomplete_Type_Decl : constant Internal_Entity_Incomplete_Type_Decl; function Create_Internal_Entity_Incomplete_Type_Decl (Node : Bare_Incomplete_Type_Decl; Info : Internal_Entity_Info) return Internal_Entity_Incomplete_Type_Decl; function Trace_Image (R : Internal_Entity_Incomplete_Type_Decl) return String; type Internal_Entity_Incomplete_Tagged_Type_Decl is record Node : aliased Bare_Incomplete_Tagged_Type_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Incomplete_Tagged_Type_Decl : constant Internal_Entity_Incomplete_Tagged_Type_Decl; function Create_Internal_Entity_Incomplete_Tagged_Type_Decl (Node : Bare_Incomplete_Tagged_Type_Decl; Info : Internal_Entity_Info) return Internal_Entity_Incomplete_Tagged_Type_Decl; function Trace_Image (R : Internal_Entity_Incomplete_Tagged_Type_Decl) return String; type Internal_Entity_Index_Constraint is record Node : aliased Bare_Index_Constraint; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Index_Constraint : constant Internal_Entity_Index_Constraint; function Create_Internal_Entity_Index_Constraint (Node : Bare_Index_Constraint; Info : Internal_Entity_Info) return Internal_Entity_Index_Constraint; function Trace_Image (R : Internal_Entity_Index_Constraint) return String; type Internal_Entity_Num_Literal is record Node : aliased Bare_Num_Literal; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Num_Literal : constant Internal_Entity_Num_Literal; function Create_Internal_Entity_Num_Literal (Node : Bare_Num_Literal; Info : Internal_Entity_Info) return Internal_Entity_Num_Literal; function Trace_Image (R : Internal_Entity_Num_Literal) return String; type Internal_Entity_Int_Literal is record Node : aliased Bare_Int_Literal; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Int_Literal : constant Internal_Entity_Int_Literal; function Create_Internal_Entity_Int_Literal (Node : Bare_Int_Literal; Info : Internal_Entity_Info) return Internal_Entity_Int_Literal; function Trace_Image (R : Internal_Entity_Int_Literal) return String; type Internal_Entity_Interface_Kind is record Node : aliased Bare_Interface_Kind; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Interface_Kind : constant Internal_Entity_Interface_Kind; function Create_Internal_Entity_Interface_Kind (Node : Bare_Interface_Kind; Info : Internal_Entity_Info) return Internal_Entity_Interface_Kind; function Trace_Image (R : Internal_Entity_Interface_Kind) return String; type Internal_Entity_Interface_Kind_Limited is record Node : aliased Bare_Interface_Kind_Limited; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Interface_Kind_Limited : constant Internal_Entity_Interface_Kind_Limited; function Create_Internal_Entity_Interface_Kind_Limited (Node : Bare_Interface_Kind_Limited; Info : Internal_Entity_Info) return Internal_Entity_Interface_Kind_Limited; function Trace_Image (R : Internal_Entity_Interface_Kind_Limited) return String; type Internal_Entity_Interface_Kind_Protected is record Node : aliased Bare_Interface_Kind_Protected; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Interface_Kind_Protected : constant Internal_Entity_Interface_Kind_Protected; function Create_Internal_Entity_Interface_Kind_Protected (Node : Bare_Interface_Kind_Protected; Info : Internal_Entity_Info) return Internal_Entity_Interface_Kind_Protected; function Trace_Image (R : Internal_Entity_Interface_Kind_Protected) return String; type Internal_Entity_Interface_Kind_Synchronized is record Node : aliased Bare_Interface_Kind_Synchronized; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Interface_Kind_Synchronized : constant Internal_Entity_Interface_Kind_Synchronized; function Create_Internal_Entity_Interface_Kind_Synchronized (Node : Bare_Interface_Kind_Synchronized; Info : Internal_Entity_Info) return Internal_Entity_Interface_Kind_Synchronized; function Trace_Image (R : Internal_Entity_Interface_Kind_Synchronized) return String; type Internal_Entity_Interface_Kind_Task is record Node : aliased Bare_Interface_Kind_Task; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Interface_Kind_Task : constant Internal_Entity_Interface_Kind_Task; function Create_Internal_Entity_Interface_Kind_Task (Node : Bare_Interface_Kind_Task; Info : Internal_Entity_Info) return Internal_Entity_Interface_Kind_Task; function Trace_Image (R : Internal_Entity_Interface_Kind_Task) return String; type Internal_Entity_Interface_Type_Def is record Node : aliased Bare_Interface_Type_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Interface_Type_Def : constant Internal_Entity_Interface_Type_Def; function Create_Internal_Entity_Interface_Type_Def (Node : Bare_Interface_Type_Def; Info : Internal_Entity_Info) return Internal_Entity_Interface_Type_Def; function Trace_Image (R : Internal_Entity_Interface_Type_Def) return String; type Internal_Entity_Iter_Type is record Node : aliased Bare_Iter_Type; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Iter_Type : constant Internal_Entity_Iter_Type; function Create_Internal_Entity_Iter_Type (Node : Bare_Iter_Type; Info : Internal_Entity_Info) return Internal_Entity_Iter_Type; function Trace_Image (R : Internal_Entity_Iter_Type) return String; type Internal_Entity_Iter_Type_In is record Node : aliased Bare_Iter_Type_In; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Iter_Type_In : constant Internal_Entity_Iter_Type_In; function Create_Internal_Entity_Iter_Type_In (Node : Bare_Iter_Type_In; Info : Internal_Entity_Info) return Internal_Entity_Iter_Type_In; function Trace_Image (R : Internal_Entity_Iter_Type_In) return String; type Internal_Entity_Iter_Type_Of is record Node : aliased Bare_Iter_Type_Of; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Iter_Type_Of : constant Internal_Entity_Iter_Type_Of; function Create_Internal_Entity_Iter_Type_Of (Node : Bare_Iter_Type_Of; Info : Internal_Entity_Info) return Internal_Entity_Iter_Type_Of; function Trace_Image (R : Internal_Entity_Iter_Type_Of) return String; type Internal_Entity_Iterated_Assoc is record Node : aliased Bare_Iterated_Assoc; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Iterated_Assoc : constant Internal_Entity_Iterated_Assoc; function Create_Internal_Entity_Iterated_Assoc (Node : Bare_Iterated_Assoc; Info : Internal_Entity_Info) return Internal_Entity_Iterated_Assoc; function Trace_Image (R : Internal_Entity_Iterated_Assoc) return String; type Internal_Entity_Known_Discriminant_Part is record Node : aliased Bare_Known_Discriminant_Part; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Known_Discriminant_Part : constant Internal_Entity_Known_Discriminant_Part; function Create_Internal_Entity_Known_Discriminant_Part (Node : Bare_Known_Discriminant_Part; Info : Internal_Entity_Info) return Internal_Entity_Known_Discriminant_Part; function Trace_Image (R : Internal_Entity_Known_Discriminant_Part) return String; type Internal_Entity_Label is record Node : aliased Bare_Label; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Label : constant Internal_Entity_Label; function Create_Internal_Entity_Label (Node : Bare_Label; Info : Internal_Entity_Info) return Internal_Entity_Label; function Trace_Image (R : Internal_Entity_Label) return String; type Internal_Entity_Label_Decl is record Node : aliased Bare_Label_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Label_Decl : constant Internal_Entity_Label_Decl; function Create_Internal_Entity_Label_Decl (Node : Bare_Label_Decl; Info : Internal_Entity_Info) return Internal_Entity_Label_Decl; function Trace_Image (R : Internal_Entity_Label_Decl) return String; type Internal_Entity_Library_Item is record Node : aliased Bare_Library_Item; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Library_Item : constant Internal_Entity_Library_Item; function Create_Internal_Entity_Library_Item (Node : Bare_Library_Item; Info : Internal_Entity_Info) return Internal_Entity_Library_Item; function Trace_Image (R : Internal_Entity_Library_Item) return String; type Internal_Entity_Limited_Node is record Node : aliased Bare_Limited_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Limited_Node : constant Internal_Entity_Limited_Node; function Create_Internal_Entity_Limited_Node (Node : Bare_Limited_Node; Info : Internal_Entity_Info) return Internal_Entity_Limited_Node; function Trace_Image (R : Internal_Entity_Limited_Node) return String; type Internal_Entity_Limited_Absent is record Node : aliased Bare_Limited_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Limited_Absent : constant Internal_Entity_Limited_Absent; function Create_Internal_Entity_Limited_Absent (Node : Bare_Limited_Absent; Info : Internal_Entity_Info) return Internal_Entity_Limited_Absent; function Trace_Image (R : Internal_Entity_Limited_Absent) return String; type Internal_Entity_Limited_Present is record Node : aliased Bare_Limited_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Limited_Present : constant Internal_Entity_Limited_Present; function Create_Internal_Entity_Limited_Present (Node : Bare_Limited_Present; Info : Internal_Entity_Info) return Internal_Entity_Limited_Present; function Trace_Image (R : Internal_Entity_Limited_Present) return String; type Internal_Entity_Loop_Stmt is record Node : aliased Bare_Loop_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Loop_Stmt : constant Internal_Entity_Loop_Stmt; function Create_Internal_Entity_Loop_Stmt (Node : Bare_Loop_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Loop_Stmt; function Trace_Image (R : Internal_Entity_Loop_Stmt) return String; type Internal_Entity_Membership_Expr is record Node : aliased Bare_Membership_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Membership_Expr : constant Internal_Entity_Membership_Expr; function Create_Internal_Entity_Membership_Expr (Node : Bare_Membership_Expr; Info : Internal_Entity_Info) return Internal_Entity_Membership_Expr; function Trace_Image (R : Internal_Entity_Membership_Expr) return String; type Internal_Entity_Mod_Int_Type_Def is record Node : aliased Bare_Mod_Int_Type_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Mod_Int_Type_Def : constant Internal_Entity_Mod_Int_Type_Def; function Create_Internal_Entity_Mod_Int_Type_Def (Node : Bare_Mod_Int_Type_Def; Info : Internal_Entity_Info) return Internal_Entity_Mod_Int_Type_Def; function Trace_Image (R : Internal_Entity_Mod_Int_Type_Def) return String; type Internal_Entity_Mode is record Node : aliased Bare_Mode; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Mode : constant Internal_Entity_Mode; function Create_Internal_Entity_Mode (Node : Bare_Mode; Info : Internal_Entity_Info) return Internal_Entity_Mode; function Trace_Image (R : Internal_Entity_Mode) return String; type Internal_Entity_Mode_Default is record Node : aliased Bare_Mode_Default; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Mode_Default : constant Internal_Entity_Mode_Default; function Create_Internal_Entity_Mode_Default (Node : Bare_Mode_Default; Info : Internal_Entity_Info) return Internal_Entity_Mode_Default; function Trace_Image (R : Internal_Entity_Mode_Default) return String; type Internal_Entity_Mode_In is record Node : aliased Bare_Mode_In; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Mode_In : constant Internal_Entity_Mode_In; function Create_Internal_Entity_Mode_In (Node : Bare_Mode_In; Info : Internal_Entity_Info) return Internal_Entity_Mode_In; function Trace_Image (R : Internal_Entity_Mode_In) return String; type Internal_Entity_Mode_In_Out is record Node : aliased Bare_Mode_In_Out; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Mode_In_Out : constant Internal_Entity_Mode_In_Out; function Create_Internal_Entity_Mode_In_Out (Node : Bare_Mode_In_Out; Info : Internal_Entity_Info) return Internal_Entity_Mode_In_Out; function Trace_Image (R : Internal_Entity_Mode_In_Out) return String; type Internal_Entity_Mode_Out is record Node : aliased Bare_Mode_Out; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Mode_Out : constant Internal_Entity_Mode_Out; function Create_Internal_Entity_Mode_Out (Node : Bare_Mode_Out; Info : Internal_Entity_Info) return Internal_Entity_Mode_Out; function Trace_Image (R : Internal_Entity_Mode_Out) return String; type Internal_Entity_Multi_Abstract_State_Decl is record Node : aliased Bare_Multi_Abstract_State_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Multi_Abstract_State_Decl : constant Internal_Entity_Multi_Abstract_State_Decl; function Create_Internal_Entity_Multi_Abstract_State_Decl (Node : Bare_Multi_Abstract_State_Decl; Info : Internal_Entity_Info) return Internal_Entity_Multi_Abstract_State_Decl; function Trace_Image (R : Internal_Entity_Multi_Abstract_State_Decl) return String; type Internal_Entity_Multi_Dim_Array_Assoc is record Node : aliased Bare_Multi_Dim_Array_Assoc; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Multi_Dim_Array_Assoc : constant Internal_Entity_Multi_Dim_Array_Assoc; function Create_Internal_Entity_Multi_Dim_Array_Assoc (Node : Bare_Multi_Dim_Array_Assoc; Info : Internal_Entity_Info) return Internal_Entity_Multi_Dim_Array_Assoc; function Trace_Image (R : Internal_Entity_Multi_Dim_Array_Assoc) return String; type Internal_Entity_Name_List is record Node : aliased Bare_Name_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Name_List : constant Internal_Entity_Name_List; function Create_Internal_Entity_Name_List (Node : Bare_Name_List; Info : Internal_Entity_Info) return Internal_Entity_Name_List; function Trace_Image (R : Internal_Entity_Name_List) return String; type Internal_Entity_Named_Stmt is record Node : aliased Bare_Named_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Named_Stmt : constant Internal_Entity_Named_Stmt; function Create_Internal_Entity_Named_Stmt (Node : Bare_Named_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Named_Stmt; function Trace_Image (R : Internal_Entity_Named_Stmt) return String; type Internal_Entity_Named_Stmt_Decl is record Node : aliased Bare_Named_Stmt_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Named_Stmt_Decl : constant Internal_Entity_Named_Stmt_Decl; function Create_Internal_Entity_Named_Stmt_Decl (Node : Bare_Named_Stmt_Decl; Info : Internal_Entity_Info) return Internal_Entity_Named_Stmt_Decl; function Trace_Image (R : Internal_Entity_Named_Stmt_Decl) return String; type Internal_Entity_Not_Null is record Node : aliased Bare_Not_Null; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Not_Null : constant Internal_Entity_Not_Null; function Create_Internal_Entity_Not_Null (Node : Bare_Not_Null; Info : Internal_Entity_Info) return Internal_Entity_Not_Null; function Trace_Image (R : Internal_Entity_Not_Null) return String; type Internal_Entity_Not_Null_Absent is record Node : aliased Bare_Not_Null_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Not_Null_Absent : constant Internal_Entity_Not_Null_Absent; function Create_Internal_Entity_Not_Null_Absent (Node : Bare_Not_Null_Absent; Info : Internal_Entity_Info) return Internal_Entity_Not_Null_Absent; function Trace_Image (R : Internal_Entity_Not_Null_Absent) return String; type Internal_Entity_Not_Null_Present is record Node : aliased Bare_Not_Null_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Not_Null_Present : constant Internal_Entity_Not_Null_Present; function Create_Internal_Entity_Not_Null_Present (Node : Bare_Not_Null_Present; Info : Internal_Entity_Info) return Internal_Entity_Not_Null_Present; function Trace_Image (R : Internal_Entity_Not_Null_Present) return String; type Internal_Entity_Null_Component_Decl is record Node : aliased Bare_Null_Component_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Null_Component_Decl : constant Internal_Entity_Null_Component_Decl; function Create_Internal_Entity_Null_Component_Decl (Node : Bare_Null_Component_Decl; Info : Internal_Entity_Info) return Internal_Entity_Null_Component_Decl; function Trace_Image (R : Internal_Entity_Null_Component_Decl) return String; type Internal_Entity_Null_Literal is record Node : aliased Bare_Null_Literal; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Null_Literal : constant Internal_Entity_Null_Literal; function Create_Internal_Entity_Null_Literal (Node : Bare_Null_Literal; Info : Internal_Entity_Info) return Internal_Entity_Null_Literal; function Trace_Image (R : Internal_Entity_Null_Literal) return String; type Internal_Entity_Null_Record_Aggregate is record Node : aliased Bare_Null_Record_Aggregate; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Null_Record_Aggregate : constant Internal_Entity_Null_Record_Aggregate; function Create_Internal_Entity_Null_Record_Aggregate (Node : Bare_Null_Record_Aggregate; Info : Internal_Entity_Info) return Internal_Entity_Null_Record_Aggregate; function Trace_Image (R : Internal_Entity_Null_Record_Aggregate) return String; type Internal_Entity_Null_Record_Def is record Node : aliased Bare_Null_Record_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Null_Record_Def : constant Internal_Entity_Null_Record_Def; function Create_Internal_Entity_Null_Record_Def (Node : Bare_Null_Record_Def; Info : Internal_Entity_Info) return Internal_Entity_Null_Record_Def; function Trace_Image (R : Internal_Entity_Null_Record_Def) return String; type Internal_Entity_Null_Stmt is record Node : aliased Bare_Null_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Null_Stmt : constant Internal_Entity_Null_Stmt; function Create_Internal_Entity_Null_Stmt (Node : Bare_Null_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Null_Stmt; function Trace_Image (R : Internal_Entity_Null_Stmt) return String; type Internal_Entity_Null_Subp_Decl is record Node : aliased Bare_Null_Subp_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Null_Subp_Decl : constant Internal_Entity_Null_Subp_Decl; function Create_Internal_Entity_Null_Subp_Decl (Node : Bare_Null_Subp_Decl; Info : Internal_Entity_Info) return Internal_Entity_Null_Subp_Decl; function Trace_Image (R : Internal_Entity_Null_Subp_Decl) return String; type Internal_Entity_Number_Decl is record Node : aliased Bare_Number_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Number_Decl : constant Internal_Entity_Number_Decl; function Create_Internal_Entity_Number_Decl (Node : Bare_Number_Decl; Info : Internal_Entity_Info) return Internal_Entity_Number_Decl; function Trace_Image (R : Internal_Entity_Number_Decl) return String; type Internal_Entity_Op is record Node : aliased Bare_Op; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op : constant Internal_Entity_Op; function Create_Internal_Entity_Op (Node : Bare_Op; Info : Internal_Entity_Info) return Internal_Entity_Op; function Trace_Image (R : Internal_Entity_Op) return String; type Internal_Entity_Op_Abs is record Node : aliased Bare_Op_Abs; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Abs : constant Internal_Entity_Op_Abs; function Create_Internal_Entity_Op_Abs (Node : Bare_Op_Abs; Info : Internal_Entity_Info) return Internal_Entity_Op_Abs; function Trace_Image (R : Internal_Entity_Op_Abs) return String; type Internal_Entity_Op_And is record Node : aliased Bare_Op_And; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_And : constant Internal_Entity_Op_And; function Create_Internal_Entity_Op_And (Node : Bare_Op_And; Info : Internal_Entity_Info) return Internal_Entity_Op_And; function Trace_Image (R : Internal_Entity_Op_And) return String; type Internal_Entity_Op_And_Then is record Node : aliased Bare_Op_And_Then; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_And_Then : constant Internal_Entity_Op_And_Then; function Create_Internal_Entity_Op_And_Then (Node : Bare_Op_And_Then; Info : Internal_Entity_Info) return Internal_Entity_Op_And_Then; function Trace_Image (R : Internal_Entity_Op_And_Then) return String; type Internal_Entity_Op_Concat is record Node : aliased Bare_Op_Concat; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Concat : constant Internal_Entity_Op_Concat; function Create_Internal_Entity_Op_Concat (Node : Bare_Op_Concat; Info : Internal_Entity_Info) return Internal_Entity_Op_Concat; function Trace_Image (R : Internal_Entity_Op_Concat) return String; type Internal_Entity_Op_Div is record Node : aliased Bare_Op_Div; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Div : constant Internal_Entity_Op_Div; function Create_Internal_Entity_Op_Div (Node : Bare_Op_Div; Info : Internal_Entity_Info) return Internal_Entity_Op_Div; function Trace_Image (R : Internal_Entity_Op_Div) return String; type Internal_Entity_Op_Double_Dot is record Node : aliased Bare_Op_Double_Dot; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Double_Dot : constant Internal_Entity_Op_Double_Dot; function Create_Internal_Entity_Op_Double_Dot (Node : Bare_Op_Double_Dot; Info : Internal_Entity_Info) return Internal_Entity_Op_Double_Dot; function Trace_Image (R : Internal_Entity_Op_Double_Dot) return String; type Internal_Entity_Op_Eq is record Node : aliased Bare_Op_Eq; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Eq : constant Internal_Entity_Op_Eq; function Create_Internal_Entity_Op_Eq (Node : Bare_Op_Eq; Info : Internal_Entity_Info) return Internal_Entity_Op_Eq; function Trace_Image (R : Internal_Entity_Op_Eq) return String; type Internal_Entity_Op_Gt is record Node : aliased Bare_Op_Gt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Gt : constant Internal_Entity_Op_Gt; function Create_Internal_Entity_Op_Gt (Node : Bare_Op_Gt; Info : Internal_Entity_Info) return Internal_Entity_Op_Gt; function Trace_Image (R : Internal_Entity_Op_Gt) return String; type Internal_Entity_Op_Gte is record Node : aliased Bare_Op_Gte; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Gte : constant Internal_Entity_Op_Gte; function Create_Internal_Entity_Op_Gte (Node : Bare_Op_Gte; Info : Internal_Entity_Info) return Internal_Entity_Op_Gte; function Trace_Image (R : Internal_Entity_Op_Gte) return String; type Internal_Entity_Op_In is record Node : aliased Bare_Op_In; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_In : constant Internal_Entity_Op_In; function Create_Internal_Entity_Op_In (Node : Bare_Op_In; Info : Internal_Entity_Info) return Internal_Entity_Op_In; function Trace_Image (R : Internal_Entity_Op_In) return String; type Internal_Entity_Op_Lt is record Node : aliased Bare_Op_Lt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Lt : constant Internal_Entity_Op_Lt; function Create_Internal_Entity_Op_Lt (Node : Bare_Op_Lt; Info : Internal_Entity_Info) return Internal_Entity_Op_Lt; function Trace_Image (R : Internal_Entity_Op_Lt) return String; type Internal_Entity_Op_Lte is record Node : aliased Bare_Op_Lte; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Lte : constant Internal_Entity_Op_Lte; function Create_Internal_Entity_Op_Lte (Node : Bare_Op_Lte; Info : Internal_Entity_Info) return Internal_Entity_Op_Lte; function Trace_Image (R : Internal_Entity_Op_Lte) return String; type Internal_Entity_Op_Minus is record Node : aliased Bare_Op_Minus; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Minus : constant Internal_Entity_Op_Minus; function Create_Internal_Entity_Op_Minus (Node : Bare_Op_Minus; Info : Internal_Entity_Info) return Internal_Entity_Op_Minus; function Trace_Image (R : Internal_Entity_Op_Minus) return String; type Internal_Entity_Op_Mod is record Node : aliased Bare_Op_Mod; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Mod : constant Internal_Entity_Op_Mod; function Create_Internal_Entity_Op_Mod (Node : Bare_Op_Mod; Info : Internal_Entity_Info) return Internal_Entity_Op_Mod; function Trace_Image (R : Internal_Entity_Op_Mod) return String; type Internal_Entity_Op_Mult is record Node : aliased Bare_Op_Mult; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Mult : constant Internal_Entity_Op_Mult; function Create_Internal_Entity_Op_Mult (Node : Bare_Op_Mult; Info : Internal_Entity_Info) return Internal_Entity_Op_Mult; function Trace_Image (R : Internal_Entity_Op_Mult) return String; type Internal_Entity_Op_Neq is record Node : aliased Bare_Op_Neq; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Neq : constant Internal_Entity_Op_Neq; function Create_Internal_Entity_Op_Neq (Node : Bare_Op_Neq; Info : Internal_Entity_Info) return Internal_Entity_Op_Neq; function Trace_Image (R : Internal_Entity_Op_Neq) return String; type Internal_Entity_Op_Not is record Node : aliased Bare_Op_Not; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Not : constant Internal_Entity_Op_Not; function Create_Internal_Entity_Op_Not (Node : Bare_Op_Not; Info : Internal_Entity_Info) return Internal_Entity_Op_Not; function Trace_Image (R : Internal_Entity_Op_Not) return String; type Internal_Entity_Op_Not_In is record Node : aliased Bare_Op_Not_In; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Not_In : constant Internal_Entity_Op_Not_In; function Create_Internal_Entity_Op_Not_In (Node : Bare_Op_Not_In; Info : Internal_Entity_Info) return Internal_Entity_Op_Not_In; function Trace_Image (R : Internal_Entity_Op_Not_In) return String; type Internal_Entity_Op_Or is record Node : aliased Bare_Op_Or; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Or : constant Internal_Entity_Op_Or; function Create_Internal_Entity_Op_Or (Node : Bare_Op_Or; Info : Internal_Entity_Info) return Internal_Entity_Op_Or; function Trace_Image (R : Internal_Entity_Op_Or) return String; type Internal_Entity_Op_Or_Else is record Node : aliased Bare_Op_Or_Else; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Or_Else : constant Internal_Entity_Op_Or_Else; function Create_Internal_Entity_Op_Or_Else (Node : Bare_Op_Or_Else; Info : Internal_Entity_Info) return Internal_Entity_Op_Or_Else; function Trace_Image (R : Internal_Entity_Op_Or_Else) return String; type Internal_Entity_Op_Plus is record Node : aliased Bare_Op_Plus; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Plus : constant Internal_Entity_Op_Plus; function Create_Internal_Entity_Op_Plus (Node : Bare_Op_Plus; Info : Internal_Entity_Info) return Internal_Entity_Op_Plus; function Trace_Image (R : Internal_Entity_Op_Plus) return String; type Internal_Entity_Op_Pow is record Node : aliased Bare_Op_Pow; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Pow : constant Internal_Entity_Op_Pow; function Create_Internal_Entity_Op_Pow (Node : Bare_Op_Pow; Info : Internal_Entity_Info) return Internal_Entity_Op_Pow; function Trace_Image (R : Internal_Entity_Op_Pow) return String; type Internal_Entity_Op_Rem is record Node : aliased Bare_Op_Rem; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Rem : constant Internal_Entity_Op_Rem; function Create_Internal_Entity_Op_Rem (Node : Bare_Op_Rem; Info : Internal_Entity_Info) return Internal_Entity_Op_Rem; function Trace_Image (R : Internal_Entity_Op_Rem) return String; type Internal_Entity_Op_Xor is record Node : aliased Bare_Op_Xor; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Op_Xor : constant Internal_Entity_Op_Xor; function Create_Internal_Entity_Op_Xor (Node : Bare_Op_Xor; Info : Internal_Entity_Info) return Internal_Entity_Op_Xor; function Trace_Image (R : Internal_Entity_Op_Xor) return String; type Internal_Entity_Ordinary_Fixed_Point_Def is record Node : aliased Bare_Ordinary_Fixed_Point_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Ordinary_Fixed_Point_Def : constant Internal_Entity_Ordinary_Fixed_Point_Def; function Create_Internal_Entity_Ordinary_Fixed_Point_Def (Node : Bare_Ordinary_Fixed_Point_Def; Info : Internal_Entity_Info) return Internal_Entity_Ordinary_Fixed_Point_Def; function Trace_Image (R : Internal_Entity_Ordinary_Fixed_Point_Def) return String; type Internal_Entity_Others_Designator is record Node : aliased Bare_Others_Designator; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Others_Designator : constant Internal_Entity_Others_Designator; function Create_Internal_Entity_Others_Designator (Node : Bare_Others_Designator; Info : Internal_Entity_Info) return Internal_Entity_Others_Designator; function Trace_Image (R : Internal_Entity_Others_Designator) return String; type Internal_Entity_Overriding_Node is record Node : aliased Bare_Overriding_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Overriding_Node : constant Internal_Entity_Overriding_Node; function Create_Internal_Entity_Overriding_Node (Node : Bare_Overriding_Node; Info : Internal_Entity_Info) return Internal_Entity_Overriding_Node; function Trace_Image (R : Internal_Entity_Overriding_Node) return String; type Internal_Entity_Overriding_Not_Overriding is record Node : aliased Bare_Overriding_Not_Overriding; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Overriding_Not_Overriding : constant Internal_Entity_Overriding_Not_Overriding; function Create_Internal_Entity_Overriding_Not_Overriding (Node : Bare_Overriding_Not_Overriding; Info : Internal_Entity_Info) return Internal_Entity_Overriding_Not_Overriding; function Trace_Image (R : Internal_Entity_Overriding_Not_Overriding) return String; type Internal_Entity_Overriding_Overriding is record Node : aliased Bare_Overriding_Overriding; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Overriding_Overriding : constant Internal_Entity_Overriding_Overriding; function Create_Internal_Entity_Overriding_Overriding (Node : Bare_Overriding_Overriding; Info : Internal_Entity_Info) return Internal_Entity_Overriding_Overriding; function Trace_Image (R : Internal_Entity_Overriding_Overriding) return String; type Internal_Entity_Overriding_Unspecified is record Node : aliased Bare_Overriding_Unspecified; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Overriding_Unspecified : constant Internal_Entity_Overriding_Unspecified; function Create_Internal_Entity_Overriding_Unspecified (Node : Bare_Overriding_Unspecified; Info : Internal_Entity_Info) return Internal_Entity_Overriding_Unspecified; function Trace_Image (R : Internal_Entity_Overriding_Unspecified) return String; type Internal_Entity_Package_Body is record Node : aliased Bare_Package_Body; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Package_Body : constant Internal_Entity_Package_Body; function Create_Internal_Entity_Package_Body (Node : Bare_Package_Body; Info : Internal_Entity_Info) return Internal_Entity_Package_Body; function Trace_Image (R : Internal_Entity_Package_Body) return String; type Internal_Entity_Package_Body_Stub is record Node : aliased Bare_Package_Body_Stub; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Package_Body_Stub : constant Internal_Entity_Package_Body_Stub; function Create_Internal_Entity_Package_Body_Stub (Node : Bare_Package_Body_Stub; Info : Internal_Entity_Info) return Internal_Entity_Package_Body_Stub; function Trace_Image (R : Internal_Entity_Package_Body_Stub) return String; type Internal_Entity_Package_Decl is record Node : aliased Bare_Package_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Package_Decl : constant Internal_Entity_Package_Decl; function Create_Internal_Entity_Package_Decl (Node : Bare_Package_Decl; Info : Internal_Entity_Info) return Internal_Entity_Package_Decl; function Trace_Image (R : Internal_Entity_Package_Decl) return String; type Internal_Entity_Package_Renaming_Decl is record Node : aliased Bare_Package_Renaming_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Package_Renaming_Decl : constant Internal_Entity_Package_Renaming_Decl; function Create_Internal_Entity_Package_Renaming_Decl (Node : Bare_Package_Renaming_Decl; Info : Internal_Entity_Info) return Internal_Entity_Package_Renaming_Decl; function Trace_Image (R : Internal_Entity_Package_Renaming_Decl) return String; type Internal_Entity_Param_Assoc is record Node : aliased Bare_Param_Assoc; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Param_Assoc : constant Internal_Entity_Param_Assoc; function Create_Internal_Entity_Param_Assoc (Node : Bare_Param_Assoc; Info : Internal_Entity_Info) return Internal_Entity_Param_Assoc; function Trace_Image (R : Internal_Entity_Param_Assoc) return String; type Internal_Entity_Param_Spec is record Node : aliased Bare_Param_Spec; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Param_Spec : constant Internal_Entity_Param_Spec; function Create_Internal_Entity_Param_Spec (Node : Bare_Param_Spec; Info : Internal_Entity_Info) return Internal_Entity_Param_Spec; function Trace_Image (R : Internal_Entity_Param_Spec) return String; type Internal_Entity_Param_Spec_List is record Node : aliased Bare_Param_Spec_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Param_Spec_List : constant Internal_Entity_Param_Spec_List; function Create_Internal_Entity_Param_Spec_List (Node : Bare_Param_Spec_List; Info : Internal_Entity_Info) return Internal_Entity_Param_Spec_List; function Trace_Image (R : Internal_Entity_Param_Spec_List) return String; type Internal_Entity_Params is record Node : aliased Bare_Params; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Params : constant Internal_Entity_Params; function Create_Internal_Entity_Params (Node : Bare_Params; Info : Internal_Entity_Info) return Internal_Entity_Params; function Trace_Image (R : Internal_Entity_Params) return String; type Internal_Entity_Paren_Abstract_State_Decl is record Node : aliased Bare_Paren_Abstract_State_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Paren_Abstract_State_Decl : constant Internal_Entity_Paren_Abstract_State_Decl; function Create_Internal_Entity_Paren_Abstract_State_Decl (Node : Bare_Paren_Abstract_State_Decl; Info : Internal_Entity_Info) return Internal_Entity_Paren_Abstract_State_Decl; function Trace_Image (R : Internal_Entity_Paren_Abstract_State_Decl) return String; type Internal_Entity_Paren_Expr is record Node : aliased Bare_Paren_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Paren_Expr : constant Internal_Entity_Paren_Expr; function Create_Internal_Entity_Paren_Expr (Node : Bare_Paren_Expr; Info : Internal_Entity_Info) return Internal_Entity_Paren_Expr; function Trace_Image (R : Internal_Entity_Paren_Expr) return String; type Internal_Entity_Parent_List is record Node : aliased Bare_Parent_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Parent_List : constant Internal_Entity_Parent_List; function Create_Internal_Entity_Parent_List (Node : Bare_Parent_List; Info : Internal_Entity_Info) return Internal_Entity_Parent_List; function Trace_Image (R : Internal_Entity_Parent_List) return String; type Internal_Entity_Pragma_Argument_Assoc is record Node : aliased Bare_Pragma_Argument_Assoc; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Pragma_Argument_Assoc : constant Internal_Entity_Pragma_Argument_Assoc; function Create_Internal_Entity_Pragma_Argument_Assoc (Node : Bare_Pragma_Argument_Assoc; Info : Internal_Entity_Info) return Internal_Entity_Pragma_Argument_Assoc; function Trace_Image (R : Internal_Entity_Pragma_Argument_Assoc) return String; type Internal_Entity_Pragma_Node is record Node : aliased Bare_Pragma_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Pragma_Node : constant Internal_Entity_Pragma_Node; function Create_Internal_Entity_Pragma_Node (Node : Bare_Pragma_Node; Info : Internal_Entity_Info) return Internal_Entity_Pragma_Node; function Trace_Image (R : Internal_Entity_Pragma_Node) return String; type Internal_Entity_Pragma_Node_List is record Node : aliased Bare_Pragma_Node_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Pragma_Node_List : constant Internal_Entity_Pragma_Node_List; function Create_Internal_Entity_Pragma_Node_List (Node : Bare_Pragma_Node_List; Info : Internal_Entity_Info) return Internal_Entity_Pragma_Node_List; function Trace_Image (R : Internal_Entity_Pragma_Node_List) return String; type Internal_Entity_Private_Node is record Node : aliased Bare_Private_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Private_Node : constant Internal_Entity_Private_Node; function Create_Internal_Entity_Private_Node (Node : Bare_Private_Node; Info : Internal_Entity_Info) return Internal_Entity_Private_Node; function Trace_Image (R : Internal_Entity_Private_Node) return String; type Internal_Entity_Private_Absent is record Node : aliased Bare_Private_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Private_Absent : constant Internal_Entity_Private_Absent; function Create_Internal_Entity_Private_Absent (Node : Bare_Private_Absent; Info : Internal_Entity_Info) return Internal_Entity_Private_Absent; function Trace_Image (R : Internal_Entity_Private_Absent) return String; type Internal_Entity_Private_Part is record Node : aliased Bare_Private_Part; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Private_Part : constant Internal_Entity_Private_Part; function Create_Internal_Entity_Private_Part (Node : Bare_Private_Part; Info : Internal_Entity_Info) return Internal_Entity_Private_Part; function Trace_Image (R : Internal_Entity_Private_Part) return String; type Internal_Entity_Private_Present is record Node : aliased Bare_Private_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Private_Present : constant Internal_Entity_Private_Present; function Create_Internal_Entity_Private_Present (Node : Bare_Private_Present; Info : Internal_Entity_Info) return Internal_Entity_Private_Present; function Trace_Image (R : Internal_Entity_Private_Present) return String; type Internal_Entity_Private_Type_Def is record Node : aliased Bare_Private_Type_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Private_Type_Def : constant Internal_Entity_Private_Type_Def; function Create_Internal_Entity_Private_Type_Def (Node : Bare_Private_Type_Def; Info : Internal_Entity_Info) return Internal_Entity_Private_Type_Def; function Trace_Image (R : Internal_Entity_Private_Type_Def) return String; type Internal_Entity_Protected_Node is record Node : aliased Bare_Protected_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Protected_Node : constant Internal_Entity_Protected_Node; function Create_Internal_Entity_Protected_Node (Node : Bare_Protected_Node; Info : Internal_Entity_Info) return Internal_Entity_Protected_Node; function Trace_Image (R : Internal_Entity_Protected_Node) return String; type Internal_Entity_Protected_Absent is record Node : aliased Bare_Protected_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Protected_Absent : constant Internal_Entity_Protected_Absent; function Create_Internal_Entity_Protected_Absent (Node : Bare_Protected_Absent; Info : Internal_Entity_Info) return Internal_Entity_Protected_Absent; function Trace_Image (R : Internal_Entity_Protected_Absent) return String; type Internal_Entity_Protected_Body is record Node : aliased Bare_Protected_Body; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Protected_Body : constant Internal_Entity_Protected_Body; function Create_Internal_Entity_Protected_Body (Node : Bare_Protected_Body; Info : Internal_Entity_Info) return Internal_Entity_Protected_Body; function Trace_Image (R : Internal_Entity_Protected_Body) return String; type Internal_Entity_Protected_Body_Stub is record Node : aliased Bare_Protected_Body_Stub; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Protected_Body_Stub : constant Internal_Entity_Protected_Body_Stub; function Create_Internal_Entity_Protected_Body_Stub (Node : Bare_Protected_Body_Stub; Info : Internal_Entity_Info) return Internal_Entity_Protected_Body_Stub; function Trace_Image (R : Internal_Entity_Protected_Body_Stub) return String; type Internal_Entity_Protected_Def is record Node : aliased Bare_Protected_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Protected_Def : constant Internal_Entity_Protected_Def; function Create_Internal_Entity_Protected_Def (Node : Bare_Protected_Def; Info : Internal_Entity_Info) return Internal_Entity_Protected_Def; function Trace_Image (R : Internal_Entity_Protected_Def) return String; type Internal_Entity_Protected_Present is record Node : aliased Bare_Protected_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Protected_Present : constant Internal_Entity_Protected_Present; function Create_Internal_Entity_Protected_Present (Node : Bare_Protected_Present; Info : Internal_Entity_Info) return Internal_Entity_Protected_Present; function Trace_Image (R : Internal_Entity_Protected_Present) return String; type Internal_Entity_Protected_Type_Decl is record Node : aliased Bare_Protected_Type_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Protected_Type_Decl : constant Internal_Entity_Protected_Type_Decl; function Create_Internal_Entity_Protected_Type_Decl (Node : Bare_Protected_Type_Decl; Info : Internal_Entity_Info) return Internal_Entity_Protected_Type_Decl; function Trace_Image (R : Internal_Entity_Protected_Type_Decl) return String; type Internal_Entity_Public_Part is record Node : aliased Bare_Public_Part; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Public_Part : constant Internal_Entity_Public_Part; function Create_Internal_Entity_Public_Part (Node : Bare_Public_Part; Info : Internal_Entity_Info) return Internal_Entity_Public_Part; function Trace_Image (R : Internal_Entity_Public_Part) return String; type Internal_Entity_Qual_Expr is record Node : aliased Bare_Qual_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Qual_Expr : constant Internal_Entity_Qual_Expr; function Create_Internal_Entity_Qual_Expr (Node : Bare_Qual_Expr; Info : Internal_Entity_Info) return Internal_Entity_Qual_Expr; function Trace_Image (R : Internal_Entity_Qual_Expr) return String; type Internal_Entity_Quantified_Expr is record Node : aliased Bare_Quantified_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Quantified_Expr : constant Internal_Entity_Quantified_Expr; function Create_Internal_Entity_Quantified_Expr (Node : Bare_Quantified_Expr; Info : Internal_Entity_Info) return Internal_Entity_Quantified_Expr; function Trace_Image (R : Internal_Entity_Quantified_Expr) return String; type Internal_Entity_Quantifier is record Node : aliased Bare_Quantifier; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Quantifier : constant Internal_Entity_Quantifier; function Create_Internal_Entity_Quantifier (Node : Bare_Quantifier; Info : Internal_Entity_Info) return Internal_Entity_Quantifier; function Trace_Image (R : Internal_Entity_Quantifier) return String; type Internal_Entity_Quantifier_All is record Node : aliased Bare_Quantifier_All; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Quantifier_All : constant Internal_Entity_Quantifier_All; function Create_Internal_Entity_Quantifier_All (Node : Bare_Quantifier_All; Info : Internal_Entity_Info) return Internal_Entity_Quantifier_All; function Trace_Image (R : Internal_Entity_Quantifier_All) return String; type Internal_Entity_Quantifier_Some is record Node : aliased Bare_Quantifier_Some; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Quantifier_Some : constant Internal_Entity_Quantifier_Some; function Create_Internal_Entity_Quantifier_Some (Node : Bare_Quantifier_Some; Info : Internal_Entity_Info) return Internal_Entity_Quantifier_Some; function Trace_Image (R : Internal_Entity_Quantifier_Some) return String; type Internal_Entity_Raise_Expr is record Node : aliased Bare_Raise_Expr; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Raise_Expr : constant Internal_Entity_Raise_Expr; function Create_Internal_Entity_Raise_Expr (Node : Bare_Raise_Expr; Info : Internal_Entity_Info) return Internal_Entity_Raise_Expr; function Trace_Image (R : Internal_Entity_Raise_Expr) return String; type Internal_Entity_Raise_Stmt is record Node : aliased Bare_Raise_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Raise_Stmt : constant Internal_Entity_Raise_Stmt; function Create_Internal_Entity_Raise_Stmt (Node : Bare_Raise_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Raise_Stmt; function Trace_Image (R : Internal_Entity_Raise_Stmt) return String; type Internal_Entity_Range_Constraint is record Node : aliased Bare_Range_Constraint; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Range_Constraint : constant Internal_Entity_Range_Constraint; function Create_Internal_Entity_Range_Constraint (Node : Bare_Range_Constraint; Info : Internal_Entity_Info) return Internal_Entity_Range_Constraint; function Trace_Image (R : Internal_Entity_Range_Constraint) return String; type Internal_Entity_Range_Spec is record Node : aliased Bare_Range_Spec; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Range_Spec : constant Internal_Entity_Range_Spec; function Create_Internal_Entity_Range_Spec (Node : Bare_Range_Spec; Info : Internal_Entity_Info) return Internal_Entity_Range_Spec; function Trace_Image (R : Internal_Entity_Range_Spec) return String; type Internal_Entity_Real_Literal is record Node : aliased Bare_Real_Literal; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Real_Literal : constant Internal_Entity_Real_Literal; function Create_Internal_Entity_Real_Literal (Node : Bare_Real_Literal; Info : Internal_Entity_Info) return Internal_Entity_Real_Literal; function Trace_Image (R : Internal_Entity_Real_Literal) return String; type Internal_Entity_Record_Def is record Node : aliased Bare_Record_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Record_Def : constant Internal_Entity_Record_Def; function Create_Internal_Entity_Record_Def (Node : Bare_Record_Def; Info : Internal_Entity_Info) return Internal_Entity_Record_Def; function Trace_Image (R : Internal_Entity_Record_Def) return String; type Internal_Entity_Record_Rep_Clause is record Node : aliased Bare_Record_Rep_Clause; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Record_Rep_Clause : constant Internal_Entity_Record_Rep_Clause; function Create_Internal_Entity_Record_Rep_Clause (Node : Bare_Record_Rep_Clause; Info : Internal_Entity_Info) return Internal_Entity_Record_Rep_Clause; function Trace_Image (R : Internal_Entity_Record_Rep_Clause) return String; type Internal_Entity_Record_Type_Def is record Node : aliased Bare_Record_Type_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Record_Type_Def : constant Internal_Entity_Record_Type_Def; function Create_Internal_Entity_Record_Type_Def (Node : Bare_Record_Type_Def; Info : Internal_Entity_Info) return Internal_Entity_Record_Type_Def; function Trace_Image (R : Internal_Entity_Record_Type_Def) return String; type Internal_Entity_Relation_Op is record Node : aliased Bare_Relation_Op; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Relation_Op : constant Internal_Entity_Relation_Op; function Create_Internal_Entity_Relation_Op (Node : Bare_Relation_Op; Info : Internal_Entity_Info) return Internal_Entity_Relation_Op; function Trace_Image (R : Internal_Entity_Relation_Op) return String; type Internal_Entity_Renaming_Clause is record Node : aliased Bare_Renaming_Clause; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Renaming_Clause : constant Internal_Entity_Renaming_Clause; function Create_Internal_Entity_Renaming_Clause (Node : Bare_Renaming_Clause; Info : Internal_Entity_Info) return Internal_Entity_Renaming_Clause; function Trace_Image (R : Internal_Entity_Renaming_Clause) return String; type Internal_Entity_Requeue_Stmt is record Node : aliased Bare_Requeue_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Requeue_Stmt : constant Internal_Entity_Requeue_Stmt; function Create_Internal_Entity_Requeue_Stmt (Node : Bare_Requeue_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Requeue_Stmt; function Trace_Image (R : Internal_Entity_Requeue_Stmt) return String; type Internal_Entity_Return_Stmt is record Node : aliased Bare_Return_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Return_Stmt : constant Internal_Entity_Return_Stmt; function Create_Internal_Entity_Return_Stmt (Node : Bare_Return_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Return_Stmt; function Trace_Image (R : Internal_Entity_Return_Stmt) return String; type Internal_Entity_Reverse_Node is record Node : aliased Bare_Reverse_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Reverse_Node : constant Internal_Entity_Reverse_Node; function Create_Internal_Entity_Reverse_Node (Node : Bare_Reverse_Node; Info : Internal_Entity_Info) return Internal_Entity_Reverse_Node; function Trace_Image (R : Internal_Entity_Reverse_Node) return String; type Internal_Entity_Reverse_Absent is record Node : aliased Bare_Reverse_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Reverse_Absent : constant Internal_Entity_Reverse_Absent; function Create_Internal_Entity_Reverse_Absent (Node : Bare_Reverse_Absent; Info : Internal_Entity_Info) return Internal_Entity_Reverse_Absent; function Trace_Image (R : Internal_Entity_Reverse_Absent) return String; type Internal_Entity_Reverse_Present is record Node : aliased Bare_Reverse_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Reverse_Present : constant Internal_Entity_Reverse_Present; function Create_Internal_Entity_Reverse_Present (Node : Bare_Reverse_Present; Info : Internal_Entity_Info) return Internal_Entity_Reverse_Present; function Trace_Image (R : Internal_Entity_Reverse_Present) return String; type Internal_Entity_Select_Stmt is record Node : aliased Bare_Select_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Select_Stmt : constant Internal_Entity_Select_Stmt; function Create_Internal_Entity_Select_Stmt (Node : Bare_Select_Stmt; Info : Internal_Entity_Info) return Internal_Entity_Select_Stmt; function Trace_Image (R : Internal_Entity_Select_Stmt) return String; type Internal_Entity_Select_When_Part is record Node : aliased Bare_Select_When_Part; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Select_When_Part : constant Internal_Entity_Select_When_Part; function Create_Internal_Entity_Select_When_Part (Node : Bare_Select_When_Part; Info : Internal_Entity_Info) return Internal_Entity_Select_When_Part; function Trace_Image (R : Internal_Entity_Select_When_Part) return String; type Internal_Entity_Select_When_Part_List is record Node : aliased Bare_Select_When_Part_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Select_When_Part_List : constant Internal_Entity_Select_When_Part_List; function Create_Internal_Entity_Select_When_Part_List (Node : Bare_Select_When_Part_List; Info : Internal_Entity_Info) return Internal_Entity_Select_When_Part_List; function Trace_Image (R : Internal_Entity_Select_When_Part_List) return String; type Internal_Entity_Signed_Int_Type_Def is record Node : aliased Bare_Signed_Int_Type_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Signed_Int_Type_Def : constant Internal_Entity_Signed_Int_Type_Def; function Create_Internal_Entity_Signed_Int_Type_Def (Node : Bare_Signed_Int_Type_Def; Info : Internal_Entity_Info) return Internal_Entity_Signed_Int_Type_Def; function Trace_Image (R : Internal_Entity_Signed_Int_Type_Def) return String; type Internal_Entity_Single_Protected_Decl is record Node : aliased Bare_Single_Protected_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Single_Protected_Decl : constant Internal_Entity_Single_Protected_Decl; function Create_Internal_Entity_Single_Protected_Decl (Node : Bare_Single_Protected_Decl; Info : Internal_Entity_Info) return Internal_Entity_Single_Protected_Decl; function Trace_Image (R : Internal_Entity_Single_Protected_Decl) return String; type Internal_Entity_Single_Task_Decl is record Node : aliased Bare_Single_Task_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Single_Task_Decl : constant Internal_Entity_Single_Task_Decl; function Create_Internal_Entity_Single_Task_Decl (Node : Bare_Single_Task_Decl; Info : Internal_Entity_Info) return Internal_Entity_Single_Task_Decl; function Trace_Image (R : Internal_Entity_Single_Task_Decl) return String; type Internal_Entity_Task_Type_Decl is record Node : aliased Bare_Task_Type_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Task_Type_Decl : constant Internal_Entity_Task_Type_Decl; function Create_Internal_Entity_Task_Type_Decl (Node : Bare_Task_Type_Decl; Info : Internal_Entity_Info) return Internal_Entity_Task_Type_Decl; function Trace_Image (R : Internal_Entity_Task_Type_Decl) return String; type Internal_Entity_Single_Task_Type_Decl is record Node : aliased Bare_Single_Task_Type_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Single_Task_Type_Decl : constant Internal_Entity_Single_Task_Type_Decl; function Create_Internal_Entity_Single_Task_Type_Decl (Node : Bare_Single_Task_Type_Decl; Info : Internal_Entity_Info) return Internal_Entity_Single_Task_Type_Decl; function Trace_Image (R : Internal_Entity_Single_Task_Type_Decl) return String; type Internal_Entity_Stmt_List is record Node : aliased Bare_Stmt_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Stmt_List : constant Internal_Entity_Stmt_List; function Create_Internal_Entity_Stmt_List (Node : Bare_Stmt_List; Info : Internal_Entity_Info) return Internal_Entity_Stmt_List; function Trace_Image (R : Internal_Entity_Stmt_List) return String; type Internal_Entity_String_Literal is record Node : aliased Bare_String_Literal; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_String_Literal : constant Internal_Entity_String_Literal; function Create_Internal_Entity_String_Literal (Node : Bare_String_Literal; Info : Internal_Entity_Info) return Internal_Entity_String_Literal; function Trace_Image (R : Internal_Entity_String_Literal) return String; type Internal_Entity_Subp_Body is record Node : aliased Bare_Subp_Body; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Subp_Body : constant Internal_Entity_Subp_Body; function Create_Internal_Entity_Subp_Body (Node : Bare_Subp_Body; Info : Internal_Entity_Info) return Internal_Entity_Subp_Body; function Trace_Image (R : Internal_Entity_Subp_Body) return String; type Internal_Entity_Subp_Body_Stub is record Node : aliased Bare_Subp_Body_Stub; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Subp_Body_Stub : constant Internal_Entity_Subp_Body_Stub; function Create_Internal_Entity_Subp_Body_Stub (Node : Bare_Subp_Body_Stub; Info : Internal_Entity_Info) return Internal_Entity_Subp_Body_Stub; function Trace_Image (R : Internal_Entity_Subp_Body_Stub) return String; type Internal_Entity_Subp_Decl is record Node : aliased Bare_Subp_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Subp_Decl : constant Internal_Entity_Subp_Decl; function Create_Internal_Entity_Subp_Decl (Node : Bare_Subp_Decl; Info : Internal_Entity_Info) return Internal_Entity_Subp_Decl; function Trace_Image (R : Internal_Entity_Subp_Decl) return String; type Internal_Entity_Subp_Kind is record Node : aliased Bare_Subp_Kind; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Subp_Kind : constant Internal_Entity_Subp_Kind; function Create_Internal_Entity_Subp_Kind (Node : Bare_Subp_Kind; Info : Internal_Entity_Info) return Internal_Entity_Subp_Kind; function Trace_Image (R : Internal_Entity_Subp_Kind) return String; type Internal_Entity_Subp_Kind_Function is record Node : aliased Bare_Subp_Kind_Function; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Subp_Kind_Function : constant Internal_Entity_Subp_Kind_Function; function Create_Internal_Entity_Subp_Kind_Function (Node : Bare_Subp_Kind_Function; Info : Internal_Entity_Info) return Internal_Entity_Subp_Kind_Function; function Trace_Image (R : Internal_Entity_Subp_Kind_Function) return String; type Internal_Entity_Subp_Kind_Procedure is record Node : aliased Bare_Subp_Kind_Procedure; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Subp_Kind_Procedure : constant Internal_Entity_Subp_Kind_Procedure; function Create_Internal_Entity_Subp_Kind_Procedure (Node : Bare_Subp_Kind_Procedure; Info : Internal_Entity_Info) return Internal_Entity_Subp_Kind_Procedure; function Trace_Image (R : Internal_Entity_Subp_Kind_Procedure) return String; type Internal_Entity_Subp_Renaming_Decl is record Node : aliased Bare_Subp_Renaming_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Subp_Renaming_Decl : constant Internal_Entity_Subp_Renaming_Decl; function Create_Internal_Entity_Subp_Renaming_Decl (Node : Bare_Subp_Renaming_Decl; Info : Internal_Entity_Info) return Internal_Entity_Subp_Renaming_Decl; function Trace_Image (R : Internal_Entity_Subp_Renaming_Decl) return String; type Internal_Entity_Subp_Spec is record Node : aliased Bare_Subp_Spec; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Subp_Spec : constant Internal_Entity_Subp_Spec; function Create_Internal_Entity_Subp_Spec (Node : Bare_Subp_Spec; Info : Internal_Entity_Info) return Internal_Entity_Subp_Spec; function Trace_Image (R : Internal_Entity_Subp_Spec) return String; type Internal_Entity_Subtype_Decl is record Node : aliased Bare_Subtype_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Subtype_Decl : constant Internal_Entity_Subtype_Decl; function Create_Internal_Entity_Subtype_Decl (Node : Bare_Subtype_Decl; Info : Internal_Entity_Info) return Internal_Entity_Subtype_Decl; function Trace_Image (R : Internal_Entity_Subtype_Decl) return String; type Internal_Entity_Subunit is record Node : aliased Bare_Subunit; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Subunit : constant Internal_Entity_Subunit; function Create_Internal_Entity_Subunit (Node : Bare_Subunit; Info : Internal_Entity_Info) return Internal_Entity_Subunit; function Trace_Image (R : Internal_Entity_Subunit) return String; type Internal_Entity_Synchronized_Node is record Node : aliased Bare_Synchronized_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Synchronized_Node : constant Internal_Entity_Synchronized_Node; function Create_Internal_Entity_Synchronized_Node (Node : Bare_Synchronized_Node; Info : Internal_Entity_Info) return Internal_Entity_Synchronized_Node; function Trace_Image (R : Internal_Entity_Synchronized_Node) return String; type Internal_Entity_Synchronized_Absent is record Node : aliased Bare_Synchronized_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Synchronized_Absent : constant Internal_Entity_Synchronized_Absent; function Create_Internal_Entity_Synchronized_Absent (Node : Bare_Synchronized_Absent; Info : Internal_Entity_Info) return Internal_Entity_Synchronized_Absent; function Trace_Image (R : Internal_Entity_Synchronized_Absent) return String; type Internal_Entity_Synchronized_Present is record Node : aliased Bare_Synchronized_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Synchronized_Present : constant Internal_Entity_Synchronized_Present; function Create_Internal_Entity_Synchronized_Present (Node : Bare_Synchronized_Present; Info : Internal_Entity_Info) return Internal_Entity_Synchronized_Present; function Trace_Image (R : Internal_Entity_Synchronized_Present) return String; type Internal_Entity_Synth_Anonymous_Type_Decl is record Node : aliased Bare_Synth_Anonymous_Type_Decl; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Synth_Anonymous_Type_Decl : constant Internal_Entity_Synth_Anonymous_Type_Decl; function Create_Internal_Entity_Synth_Anonymous_Type_Decl (Node : Bare_Synth_Anonymous_Type_Decl; Info : Internal_Entity_Info) return Internal_Entity_Synth_Anonymous_Type_Decl; function Trace_Image (R : Internal_Entity_Synth_Anonymous_Type_Decl) return String; type Internal_Entity_Synthetic_Renaming_Clause is record Node : aliased Bare_Synthetic_Renaming_Clause; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Synthetic_Renaming_Clause : constant Internal_Entity_Synthetic_Renaming_Clause; function Create_Internal_Entity_Synthetic_Renaming_Clause (Node : Bare_Synthetic_Renaming_Clause; Info : Internal_Entity_Info) return Internal_Entity_Synthetic_Renaming_Clause; function Trace_Image (R : Internal_Entity_Synthetic_Renaming_Clause) return String; type Internal_Entity_Tagged_Node is record Node : aliased Bare_Tagged_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Tagged_Node : constant Internal_Entity_Tagged_Node; function Create_Internal_Entity_Tagged_Node (Node : Bare_Tagged_Node; Info : Internal_Entity_Info) return Internal_Entity_Tagged_Node; function Trace_Image (R : Internal_Entity_Tagged_Node) return String; type Internal_Entity_Tagged_Absent is record Node : aliased Bare_Tagged_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Tagged_Absent : constant Internal_Entity_Tagged_Absent; function Create_Internal_Entity_Tagged_Absent (Node : Bare_Tagged_Absent; Info : Internal_Entity_Info) return Internal_Entity_Tagged_Absent; function Trace_Image (R : Internal_Entity_Tagged_Absent) return String; type Internal_Entity_Tagged_Present is record Node : aliased Bare_Tagged_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Tagged_Present : constant Internal_Entity_Tagged_Present; function Create_Internal_Entity_Tagged_Present (Node : Bare_Tagged_Present; Info : Internal_Entity_Info) return Internal_Entity_Tagged_Present; function Trace_Image (R : Internal_Entity_Tagged_Present) return String; type Internal_Entity_Target_Name is record Node : aliased Bare_Target_Name; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Target_Name : constant Internal_Entity_Target_Name; function Create_Internal_Entity_Target_Name (Node : Bare_Target_Name; Info : Internal_Entity_Info) return Internal_Entity_Target_Name; function Trace_Image (R : Internal_Entity_Target_Name) return String; type Internal_Entity_Task_Body is record Node : aliased Bare_Task_Body; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Task_Body : constant Internal_Entity_Task_Body; function Create_Internal_Entity_Task_Body (Node : Bare_Task_Body; Info : Internal_Entity_Info) return Internal_Entity_Task_Body; function Trace_Image (R : Internal_Entity_Task_Body) return String; type Internal_Entity_Task_Body_Stub is record Node : aliased Bare_Task_Body_Stub; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Task_Body_Stub : constant Internal_Entity_Task_Body_Stub; function Create_Internal_Entity_Task_Body_Stub (Node : Bare_Task_Body_Stub; Info : Internal_Entity_Info) return Internal_Entity_Task_Body_Stub; function Trace_Image (R : Internal_Entity_Task_Body_Stub) return String; type Internal_Entity_Task_Def is record Node : aliased Bare_Task_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Task_Def : constant Internal_Entity_Task_Def; function Create_Internal_Entity_Task_Def (Node : Bare_Task_Def; Info : Internal_Entity_Info) return Internal_Entity_Task_Def; function Trace_Image (R : Internal_Entity_Task_Def) return String; type Internal_Entity_Terminate_Alternative is record Node : aliased Bare_Terminate_Alternative; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Terminate_Alternative : constant Internal_Entity_Terminate_Alternative; function Create_Internal_Entity_Terminate_Alternative (Node : Bare_Terminate_Alternative; Info : Internal_Entity_Info) return Internal_Entity_Terminate_Alternative; function Trace_Image (R : Internal_Entity_Terminate_Alternative) return String; type Internal_Entity_Type_Access_Def is record Node : aliased Bare_Type_Access_Def; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Type_Access_Def : constant Internal_Entity_Type_Access_Def; function Create_Internal_Entity_Type_Access_Def (Node : Bare_Type_Access_Def; Info : Internal_Entity_Info) return Internal_Entity_Type_Access_Def; function Trace_Image (R : Internal_Entity_Type_Access_Def) return String; type Internal_Entity_Un_Op is record Node : aliased Bare_Un_Op; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Un_Op : constant Internal_Entity_Un_Op; function Create_Internal_Entity_Un_Op (Node : Bare_Un_Op; Info : Internal_Entity_Info) return Internal_Entity_Un_Op; function Trace_Image (R : Internal_Entity_Un_Op) return String; type Internal_Entity_Unconstrained_Array_Index is record Node : aliased Bare_Unconstrained_Array_Index; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Unconstrained_Array_Index : constant Internal_Entity_Unconstrained_Array_Index; function Create_Internal_Entity_Unconstrained_Array_Index (Node : Bare_Unconstrained_Array_Index; Info : Internal_Entity_Info) return Internal_Entity_Unconstrained_Array_Index; function Trace_Image (R : Internal_Entity_Unconstrained_Array_Index) return String; type Internal_Entity_Unconstrained_Array_Index_List is record Node : aliased Bare_Unconstrained_Array_Index_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Unconstrained_Array_Index_List : constant Internal_Entity_Unconstrained_Array_Index_List; function Create_Internal_Entity_Unconstrained_Array_Index_List (Node : Bare_Unconstrained_Array_Index_List; Info : Internal_Entity_Info) return Internal_Entity_Unconstrained_Array_Index_List; function Trace_Image (R : Internal_Entity_Unconstrained_Array_Index_List) return String; type Internal_Entity_Unconstrained_Array_Indices is record Node : aliased Bare_Unconstrained_Array_Indices; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Unconstrained_Array_Indices : constant Internal_Entity_Unconstrained_Array_Indices; function Create_Internal_Entity_Unconstrained_Array_Indices (Node : Bare_Unconstrained_Array_Indices; Info : Internal_Entity_Info) return Internal_Entity_Unconstrained_Array_Indices; function Trace_Image (R : Internal_Entity_Unconstrained_Array_Indices) return String; type Internal_Entity_Unknown_Discriminant_Part is record Node : aliased Bare_Unknown_Discriminant_Part; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Unknown_Discriminant_Part : constant Internal_Entity_Unknown_Discriminant_Part; function Create_Internal_Entity_Unknown_Discriminant_Part (Node : Bare_Unknown_Discriminant_Part; Info : Internal_Entity_Info) return Internal_Entity_Unknown_Discriminant_Part; function Trace_Image (R : Internal_Entity_Unknown_Discriminant_Part) return String; type Internal_Entity_Until_Node is record Node : aliased Bare_Until_Node; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Until_Node : constant Internal_Entity_Until_Node; function Create_Internal_Entity_Until_Node (Node : Bare_Until_Node; Info : Internal_Entity_Info) return Internal_Entity_Until_Node; function Trace_Image (R : Internal_Entity_Until_Node) return String; type Internal_Entity_Until_Absent is record Node : aliased Bare_Until_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Until_Absent : constant Internal_Entity_Until_Absent; function Create_Internal_Entity_Until_Absent (Node : Bare_Until_Absent; Info : Internal_Entity_Info) return Internal_Entity_Until_Absent; function Trace_Image (R : Internal_Entity_Until_Absent) return String; type Internal_Entity_Until_Present is record Node : aliased Bare_Until_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Until_Present : constant Internal_Entity_Until_Present; function Create_Internal_Entity_Until_Present (Node : Bare_Until_Present; Info : Internal_Entity_Info) return Internal_Entity_Until_Present; function Trace_Image (R : Internal_Entity_Until_Present) return String; type Internal_Entity_Update_Attribute_Ref is record Node : aliased Bare_Update_Attribute_Ref; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Update_Attribute_Ref : constant Internal_Entity_Update_Attribute_Ref; function Create_Internal_Entity_Update_Attribute_Ref (Node : Bare_Update_Attribute_Ref; Info : Internal_Entity_Info) return Internal_Entity_Update_Attribute_Ref; function Trace_Image (R : Internal_Entity_Update_Attribute_Ref) return String; type Internal_Entity_Use_Clause is record Node : aliased Bare_Use_Clause; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Use_Clause : constant Internal_Entity_Use_Clause; function Create_Internal_Entity_Use_Clause (Node : Bare_Use_Clause; Info : Internal_Entity_Info) return Internal_Entity_Use_Clause; function Trace_Image (R : Internal_Entity_Use_Clause) return String; type Internal_Entity_Use_Package_Clause is record Node : aliased Bare_Use_Package_Clause; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Use_Package_Clause : constant Internal_Entity_Use_Package_Clause; function Create_Internal_Entity_Use_Package_Clause (Node : Bare_Use_Package_Clause; Info : Internal_Entity_Info) return Internal_Entity_Use_Package_Clause; function Trace_Image (R : Internal_Entity_Use_Package_Clause) return String; type Internal_Entity_Use_Type_Clause is record Node : aliased Bare_Use_Type_Clause; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Use_Type_Clause : constant Internal_Entity_Use_Type_Clause; function Create_Internal_Entity_Use_Type_Clause (Node : Bare_Use_Type_Clause; Info : Internal_Entity_Info) return Internal_Entity_Use_Type_Clause; function Trace_Image (R : Internal_Entity_Use_Type_Clause) return String; type Internal_Entity_Variant is record Node : aliased Bare_Variant; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Variant : constant Internal_Entity_Variant; function Create_Internal_Entity_Variant (Node : Bare_Variant; Info : Internal_Entity_Info) return Internal_Entity_Variant; function Trace_Image (R : Internal_Entity_Variant) return String; type Internal_Entity_Variant_List is record Node : aliased Bare_Variant_List; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Variant_List : constant Internal_Entity_Variant_List; function Create_Internal_Entity_Variant_List (Node : Bare_Variant_List; Info : Internal_Entity_Info) return Internal_Entity_Variant_List; function Trace_Image (R : Internal_Entity_Variant_List) return String; type Internal_Entity_Variant_Part is record Node : aliased Bare_Variant_Part; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_Variant_Part : constant Internal_Entity_Variant_Part; function Create_Internal_Entity_Variant_Part (Node : Bare_Variant_Part; Info : Internal_Entity_Info) return Internal_Entity_Variant_Part; function Trace_Image (R : Internal_Entity_Variant_Part) return String; type Internal_Entity_While_Loop_Spec is record Node : aliased Bare_While_Loop_Spec; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_While_Loop_Spec : constant Internal_Entity_While_Loop_Spec; function Create_Internal_Entity_While_Loop_Spec (Node : Bare_While_Loop_Spec; Info : Internal_Entity_Info) return Internal_Entity_While_Loop_Spec; function Trace_Image (R : Internal_Entity_While_Loop_Spec) return String; type Internal_Entity_While_Loop_Stmt is record Node : aliased Bare_While_Loop_Stmt; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_While_Loop_Stmt : constant Internal_Entity_While_Loop_Stmt; function Create_Internal_Entity_While_Loop_Stmt (Node : Bare_While_Loop_Stmt; Info : Internal_Entity_Info) return Internal_Entity_While_Loop_Stmt; function Trace_Image (R : Internal_Entity_While_Loop_Stmt) return String; type Internal_Entity_With_Clause is record Node : aliased Bare_With_Clause; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_With_Clause : constant Internal_Entity_With_Clause; function Create_Internal_Entity_With_Clause (Node : Bare_With_Clause; Info : Internal_Entity_Info) return Internal_Entity_With_Clause; function Trace_Image (R : Internal_Entity_With_Clause) return String; type Internal_Entity_With_Private is record Node : aliased Bare_With_Private; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_With_Private : constant Internal_Entity_With_Private; function Create_Internal_Entity_With_Private (Node : Bare_With_Private; Info : Internal_Entity_Info) return Internal_Entity_With_Private; function Trace_Image (R : Internal_Entity_With_Private) return String; type Internal_Entity_With_Private_Absent is record Node : aliased Bare_With_Private_Absent; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_With_Private_Absent : constant Internal_Entity_With_Private_Absent; function Create_Internal_Entity_With_Private_Absent (Node : Bare_With_Private_Absent; Info : Internal_Entity_Info) return Internal_Entity_With_Private_Absent; function Trace_Image (R : Internal_Entity_With_Private_Absent) return String; type Internal_Entity_With_Private_Present is record Node : aliased Bare_With_Private_Present; -- The stored AST node Info : aliased Internal_Entity_Info; -- Entity info for this node end record with Convention => C; No_Entity_With_Private_Present : constant Internal_Entity_With_Private_Present; function Create_Internal_Entity_With_Private_Present (Node : Bare_With_Private_Present; Info : Internal_Entity_Info) return Internal_Entity_With_Private_Present; function Trace_Image (R : Internal_Entity_With_Private_Present) return String; type Internal_Env_Assoc is record Key : aliased Symbol_Type; Val : aliased Bare_Ada_Node; Dest_Env : aliased Internal_DesignatedEnv; Metadata : aliased Internal_Metadata; end record with Convention => C; No_Env_Assoc : constant Internal_Env_Assoc; procedure Inc_Ref (R : Internal_Env_Assoc); procedure Dec_Ref (R : in out Internal_Env_Assoc); function Equivalent (L, R : Internal_Env_Assoc) return Boolean; function Trace_Image (R : Internal_Env_Assoc) return String; type Internal_Eval_Discrete_Range is record Low_Bound : aliased Big_Integer_Type; High_Bound : aliased Big_Integer_Type; end record with Convention => C; No_Eval_Discrete_Range : constant Internal_Eval_Discrete_Range; procedure Inc_Ref (R : Internal_Eval_Discrete_Range); procedure Dec_Ref (R : in out Internal_Eval_Discrete_Range); function Equivalent (L, R : Internal_Eval_Discrete_Range) return Boolean; function Trace_Image (R : Internal_Eval_Discrete_Range) return String; type Internal_Expected_Type_For_Expr is record Expected_Type : aliased Internal_Entity_Type_Expr; Expr : aliased Internal_Entity_Expr; end record with Convention => C; No_Expected_Type_For_Expr : constant Internal_Expected_Type_For_Expr; function Trace_Image (R : Internal_Expected_Type_For_Expr) return String; type Internal_Logic_Val_Result is record Success : aliased Boolean; Value : aliased Internal_Entity; end record with Convention => C; No_Logic_Val_Result : constant Internal_Logic_Val_Result; function Trace_Image (R : Internal_Logic_Val_Result) return String; type Internal_Multidim_Aggregate_Info is record Agg : aliased Internal_Entity_Base_Aggregate; -- the top level aggregate Typ : aliased Internal_Entity_Base_Type_Decl; -- the type of the array Rank : aliased Integer; -- the rank of the original sub-aggregate end record with Convention => C; No_Multidim_Aggregate_Info : constant Internal_Multidim_Aggregate_Info; function Trace_Image (R : Internal_Multidim_Aggregate_Info) return String; type Internal_Param_Actual is record Param : aliased Internal_Entity_Defining_Name; Actual : aliased Internal_Entity_Expr; end record with Convention => C; No_Param_Actual : constant Internal_Param_Actual; function Trace_Image (R : Internal_Param_Actual) return String; type Internal_Single_Actual is record Name : aliased Bare_Base_Id; Assoc : aliased Internal_Entity_Basic_Assoc; end record with Convention => C; No_Single_Actual : constant Internal_Single_Actual; function Trace_Image (R : Internal_Single_Actual) return String; type Internal_Single_Formal is record Name : aliased Internal_Entity_Defining_Name; Spec : aliased Internal_Entity_Base_Formal_Param_Decl; end record with Convention => C; No_Single_Formal : constant Internal_Single_Formal; function Trace_Image (R : Internal_Single_Formal) return String; type Internal_Param_Match is record Has_Matched : aliased Boolean; -- Whether the matched ParamAssoc a ParamSpec. Actual : aliased Internal_Single_Actual; Formal : aliased Internal_Single_Formal; end record with Convention => C; No_Param_Match : constant Internal_Param_Match; function Trace_Image (R : Internal_Param_Match) return String; type Internal_Ref_Result is record Ref : aliased Internal_Entity_Base_Id; Kind : aliased Ref_Result_Kind; end record with Convention => C; No_Ref_Result : constant Internal_Ref_Result; function Trace_Image (R : Internal_Ref_Result) return String; type Internal_Refd_Decl is record Decl : aliased Internal_Entity_Basic_Decl; Kind : aliased Ref_Result_Kind; end record with Convention => C; No_Refd_Decl : constant Internal_Refd_Decl; function Trace_Image (R : Internal_Refd_Decl) return String; type Internal_Refd_Def is record Def_Name : aliased Internal_Entity_Defining_Name; Kind : aliased Ref_Result_Kind; end record with Convention => C; No_Refd_Def : constant Internal_Refd_Def; function Trace_Image (R : Internal_Refd_Def) return String; type Internal_Shape is record Components : aliased Internal_Entity_Base_Formal_Param_Decl_Array_Access; Discriminants_Values : aliased Internal_Discriminant_Values_Array_Access; end record with Convention => C; No_Shape : constant Internal_Shape; procedure Inc_Ref (R : Internal_Shape); procedure Dec_Ref (R : in out Internal_Shape); function Equivalent (L, R : Internal_Shape) return Boolean; function Trace_Image (R : Internal_Shape) return String; type Internal_Substitution is record From_Decl : aliased Internal_Entity_Basic_Decl; -- The declaration to substitute. To_Value : aliased Big_Integer_Type; -- The value by which to substitute the declaration. Value_Type : aliased Internal_Entity_Base_Type_Decl; -- The type of the substituted value. end record with Convention => C; No_Substitution : constant Internal_Substitution; procedure Inc_Ref (R : Internal_Substitution); procedure Dec_Ref (R : in out Internal_Substitution); function Equivalent (L, R : Internal_Substitution) return Boolean; function Trace_Image (R : Internal_Substitution) return String; ----------------- -- Array types -- ----------------- -- We implement array types as discriminated records so that binding to C -- can be done without copy. type Internal_Bare_Ada_Node_Array is array (Positive range <>) of Bare_Ada_Node; type Bare_Ada_Node_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Bare_Ada_Node_Array (1 .. N); end record; Empty_Bare_Ada_Node_Array_Record : aliased Bare_Ada_Node_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Bare_Ada_Node_Array_Type : constant Bare_Ada_Node_Array_Access := Empty_Bare_Ada_Node_Array_Record'Access; function Create_Bare_Ada_Node_Array (Items_Count : Natural) return Bare_Ada_Node_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Bare_Ada_Node_Array (Items : Internal_Bare_Ada_Node_Array) return Bare_Ada_Node_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Bare_Ada_Node_Array_Access; Index : Integer; Or_Null : Boolean := False) return Bare_Ada_Node; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Bare_Ada_Node_Array_Access) return Bare_Ada_Node_Array_Access; function Length (T : Bare_Ada_Node_Array_Access) return Natural; procedure Inc_Ref (T : Bare_Ada_Node_Array_Access); procedure Dec_Ref (T : in out Bare_Ada_Node_Array_Access); function Equivalent (L, R : Bare_Ada_Node_Array_Access) return Boolean; function Trace_Image (A : Bare_Ada_Node_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Bare_Ada_Node_Array_Record, Bare_Ada_Node_Array_Access); type Internal_Bare_Anonymous_Expr_Decl_Array is array (Positive range <>) of Bare_Anonymous_Expr_Decl; type Bare_Anonymous_Expr_Decl_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Bare_Anonymous_Expr_Decl_Array (1 .. N); end record; Empty_Bare_Anonymous_Expr_Decl_Array_Record : aliased Bare_Anonymous_Expr_Decl_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Bare_Anonymous_Expr_Decl_Array_Type : constant Bare_Anonymous_Expr_Decl_Array_Access := Empty_Bare_Anonymous_Expr_Decl_Array_Record'Access; function Create_Bare_Anonymous_Expr_Decl_Array (Items_Count : Natural) return Bare_Anonymous_Expr_Decl_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Bare_Anonymous_Expr_Decl_Array (Items : Internal_Bare_Anonymous_Expr_Decl_Array) return Bare_Anonymous_Expr_Decl_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Bare_Anonymous_Expr_Decl_Array_Access; Index : Integer; Or_Null : Boolean := False) return Bare_Anonymous_Expr_Decl; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Bare_Anonymous_Expr_Decl_Array_Access) return Bare_Anonymous_Expr_Decl_Array_Access; function Length (T : Bare_Anonymous_Expr_Decl_Array_Access) return Natural; procedure Inc_Ref (T : Bare_Anonymous_Expr_Decl_Array_Access); procedure Dec_Ref (T : in out Bare_Anonymous_Expr_Decl_Array_Access); function Equivalent (L, R : Bare_Anonymous_Expr_Decl_Array_Access) return Boolean; function Trace_Image (A : Bare_Anonymous_Expr_Decl_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Bare_Anonymous_Expr_Decl_Array_Record, Bare_Anonymous_Expr_Decl_Array_Access); type Internal_Bare_Compilation_Unit_Array is array (Positive range <>) of Bare_Compilation_Unit; type Bare_Compilation_Unit_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Bare_Compilation_Unit_Array (1 .. N); end record; Empty_Bare_Compilation_Unit_Array_Record : aliased Bare_Compilation_Unit_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Bare_Compilation_Unit_Array_Type : constant Bare_Compilation_Unit_Array_Access := Empty_Bare_Compilation_Unit_Array_Record'Access; function Create_Bare_Compilation_Unit_Array (Items_Count : Natural) return Bare_Compilation_Unit_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Bare_Compilation_Unit_Array (Items : Internal_Bare_Compilation_Unit_Array) return Bare_Compilation_Unit_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Bare_Compilation_Unit_Array_Access; Index : Integer; Or_Null : Boolean := False) return Bare_Compilation_Unit; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Bare_Compilation_Unit_Array_Access) return Bare_Compilation_Unit_Array_Access; function Length (T : Bare_Compilation_Unit_Array_Access) return Natural; procedure Inc_Ref (T : Bare_Compilation_Unit_Array_Access); procedure Dec_Ref (T : in out Bare_Compilation_Unit_Array_Access); function Equivalent (L, R : Bare_Compilation_Unit_Array_Access) return Boolean; function Trace_Image (A : Bare_Compilation_Unit_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Bare_Compilation_Unit_Array_Record, Bare_Compilation_Unit_Array_Access); type Internal_Bare_Name_Array is array (Positive range <>) of Bare_Name; type Bare_Name_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Bare_Name_Array (1 .. N); end record; Empty_Bare_Name_Array_Record : aliased Bare_Name_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Bare_Name_Array_Type : constant Bare_Name_Array_Access := Empty_Bare_Name_Array_Record'Access; function Create_Bare_Name_Array (Items_Count : Natural) return Bare_Name_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Bare_Name_Array (Items : Internal_Bare_Name_Array) return Bare_Name_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Bare_Name_Array_Access; Index : Integer; Or_Null : Boolean := False) return Bare_Name; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Bare_Name_Array_Access) return Bare_Name_Array_Access; function Length (T : Bare_Name_Array_Access) return Natural; procedure Inc_Ref (T : Bare_Name_Array_Access); procedure Dec_Ref (T : in out Bare_Name_Array_Access); function Equivalent (L, R : Bare_Name_Array_Access) return Boolean; function Trace_Image (A : Bare_Name_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Bare_Name_Array_Record, Bare_Name_Array_Access); type Internal_Bare_Single_Tok_Node_Array is array (Positive range <>) of Bare_Single_Tok_Node; type Bare_Single_Tok_Node_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Bare_Single_Tok_Node_Array (1 .. N); end record; Empty_Bare_Single_Tok_Node_Array_Record : aliased Bare_Single_Tok_Node_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Bare_Single_Tok_Node_Array_Type : constant Bare_Single_Tok_Node_Array_Access := Empty_Bare_Single_Tok_Node_Array_Record'Access; function Create_Bare_Single_Tok_Node_Array (Items_Count : Natural) return Bare_Single_Tok_Node_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Bare_Single_Tok_Node_Array (Items : Internal_Bare_Single_Tok_Node_Array) return Bare_Single_Tok_Node_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Bare_Single_Tok_Node_Array_Access; Index : Integer; Or_Null : Boolean := False) return Bare_Single_Tok_Node; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Bare_Single_Tok_Node_Array_Access) return Bare_Single_Tok_Node_Array_Access; function Length (T : Bare_Single_Tok_Node_Array_Access) return Natural; procedure Inc_Ref (T : Bare_Single_Tok_Node_Array_Access); procedure Dec_Ref (T : in out Bare_Single_Tok_Node_Array_Access); function Equivalent (L, R : Bare_Single_Tok_Node_Array_Access) return Boolean; function Trace_Image (A : Bare_Single_Tok_Node_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Bare_Single_Tok_Node_Array_Record, Bare_Single_Tok_Node_Array_Access); type Internal_Bare_Use_Clause_Array is array (Positive range <>) of Bare_Use_Clause; type Bare_Use_Clause_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Bare_Use_Clause_Array (1 .. N); end record; Empty_Bare_Use_Clause_Array_Record : aliased Bare_Use_Clause_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Bare_Use_Clause_Array_Type : constant Bare_Use_Clause_Array_Access := Empty_Bare_Use_Clause_Array_Record'Access; function Create_Bare_Use_Clause_Array (Items_Count : Natural) return Bare_Use_Clause_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Bare_Use_Clause_Array (Items : Internal_Bare_Use_Clause_Array) return Bare_Use_Clause_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Bare_Use_Clause_Array_Access; Index : Integer; Or_Null : Boolean := False) return Bare_Use_Clause; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Bare_Use_Clause_Array_Access) return Bare_Use_Clause_Array_Access; function Length (T : Bare_Use_Clause_Array_Access) return Natural; procedure Inc_Ref (T : Bare_Use_Clause_Array_Access); procedure Dec_Ref (T : in out Bare_Use_Clause_Array_Access); function Equivalent (L, R : Bare_Use_Clause_Array_Access) return Boolean; function Trace_Image (A : Bare_Use_Clause_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Bare_Use_Clause_Array_Record, Bare_Use_Clause_Array_Access); type Character_Type_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Text_Type (1 .. N); end record; Empty_Text_Type_Record : aliased Character_Type_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Character_Type_Array_Type : constant Character_Type_Array_Access := Empty_Text_Type_Record'Access; function Create_Character_Type_Array (Items_Count : Natural) return Character_Type_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Character_Type_Array (Items : Text_Type) return Character_Type_Array_Access; -- Create a new array from an existing collection of elements function Create_Character_Type_Array (Items : Unbounded_Text_Type) return Character_Type_Array_Access; -- Create a new character array from an unbounded string. This is not -- just for convenience: this function avoids using the secondary stack -- to load the string itself, avoiding stack overflows for big strings. function Get (T : Character_Type_Array_Access; Index : Integer; Or_Null : Boolean := False) return Character_Type; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Character_Type_Array_Access) return Character_Type_Array_Access; function Length (T : Character_Type_Array_Access) return Natural; procedure Inc_Ref (T : Character_Type_Array_Access); procedure Dec_Ref (T : in out Character_Type_Array_Access); function Equivalent (L, R : Character_Type_Array_Access) return Boolean; function Trace_Image (A : Character_Type_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Character_Type_Array_Record, Character_Type_Array_Access); type Internal_Character_Type_Array_Access_Array is array (Positive range <>) of Character_Type_Array_Access; type Character_Type_Array_Access_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Character_Type_Array_Access_Array (1 .. N); end record; Empty_Text_Type_Array_Record : aliased Character_Type_Array_Access_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Character_Type_Array_Access_Array_Type : constant Character_Type_Array_Access_Array_Access := Empty_Text_Type_Array_Record'Access; function Create_Character_Type_Array_Access_Array (Items_Count : Natural) return Character_Type_Array_Access_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Character_Type_Array_Access_Array (Items : Internal_Character_Type_Array_Access_Array) return Character_Type_Array_Access_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Character_Type_Array_Access_Array_Access; Index : Integer; Or_Null : Boolean := False) return Character_Type_Array_Access; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Character_Type_Array_Access_Array_Access) return Character_Type_Array_Access_Array_Access; function Length (T : Character_Type_Array_Access_Array_Access) return Natural; procedure Inc_Ref (T : Character_Type_Array_Access_Array_Access); procedure Dec_Ref (T : in out Character_Type_Array_Access_Array_Access); function Equivalent (L, R : Character_Type_Array_Access_Array_Access) return Boolean; function Trace_Image (A : Character_Type_Array_Access_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Character_Type_Array_Access_Array_Record, Character_Type_Array_Access_Array_Access); type Internal_Internal_Aspect_Array is array (Positive range <>) of Internal_Aspect; type Internal_Aspect_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Aspect_Array (1 .. N); end record; Empty_Aspect_Array_Record : aliased Internal_Aspect_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Aspect_Array_Type : constant Internal_Aspect_Array_Access := Empty_Aspect_Array_Record'Access; function Create_Internal_Aspect_Array (Items_Count : Natural) return Internal_Aspect_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Aspect_Array (Items : Internal_Internal_Aspect_Array) return Internal_Aspect_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Aspect_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Aspect; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Aspect_Array_Access) return Internal_Aspect_Array_Access; function Length (T : Internal_Aspect_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Aspect_Array_Access); procedure Dec_Ref (T : in out Internal_Aspect_Array_Access); function Equivalent (L, R : Internal_Aspect_Array_Access) return Boolean; function Trace_Image (A : Internal_Aspect_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Aspect_Array_Record, Internal_Aspect_Array_Access); type Internal_Internal_Completion_Item_Array is array (Positive range <>) of Internal_Completion_Item; type Internal_Completion_Item_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Completion_Item_Array (1 .. N); end record; Empty_Completion_Item_Array_Record : aliased Internal_Completion_Item_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Completion_Item_Array_Type : constant Internal_Completion_Item_Array_Access := Empty_Completion_Item_Array_Record'Access; function Create_Internal_Completion_Item_Array (Items_Count : Natural) return Internal_Completion_Item_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Completion_Item_Array (Items : Internal_Internal_Completion_Item_Array) return Internal_Completion_Item_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Completion_Item_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Completion_Item; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Completion_Item_Array_Access) return Internal_Completion_Item_Array_Access; function Length (T : Internal_Completion_Item_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Completion_Item_Array_Access); procedure Dec_Ref (T : in out Internal_Completion_Item_Array_Access); function Equivalent (L, R : Internal_Completion_Item_Array_Access) return Boolean; function To_Iterator (Self : Internal_Completion_Item_Array_Access; Context : Internal_Context) return Internal_Completion_Item_Iterator_Access; -- Return an iterator on values from Self. Context is used to create the -- corresponding safety net. function Trace_Image (A : Internal_Completion_Item_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Completion_Item_Array_Record, Internal_Completion_Item_Array_Access); type Internal_Internal_Discriminant_Values_Array is array (Positive range <>) of Internal_Discriminant_Values; type Internal_Discriminant_Values_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Discriminant_Values_Array (1 .. N); end record; Empty_Discriminant_Values_Array_Record : aliased Internal_Discriminant_Values_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Discriminant_Values_Array_Type : constant Internal_Discriminant_Values_Array_Access := Empty_Discriminant_Values_Array_Record'Access; function Create_Internal_Discriminant_Values_Array (Items_Count : Natural) return Internal_Discriminant_Values_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Discriminant_Values_Array (Items : Internal_Internal_Discriminant_Values_Array) return Internal_Discriminant_Values_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Discriminant_Values_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Discriminant_Values; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Discriminant_Values_Array_Access) return Internal_Discriminant_Values_Array_Access; function Length (T : Internal_Discriminant_Values_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Discriminant_Values_Array_Access); procedure Dec_Ref (T : in out Internal_Discriminant_Values_Array_Access); function Equivalent (L, R : Internal_Discriminant_Values_Array_Access) return Boolean; function Trace_Image (A : Internal_Discriminant_Values_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Discriminant_Values_Array_Record, Internal_Discriminant_Values_Array_Access); type Internal_Internal_Doc_Annotation_Array is array (Positive range <>) of Internal_Doc_Annotation; type Internal_Doc_Annotation_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Doc_Annotation_Array (1 .. N); end record; Empty_Doc_Annotation_Array_Record : aliased Internal_Doc_Annotation_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Doc_Annotation_Array_Type : constant Internal_Doc_Annotation_Array_Access := Empty_Doc_Annotation_Array_Record'Access; function Create_Internal_Doc_Annotation_Array (Items_Count : Natural) return Internal_Doc_Annotation_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Doc_Annotation_Array (Items : Internal_Internal_Doc_Annotation_Array) return Internal_Doc_Annotation_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Doc_Annotation_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Doc_Annotation; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Doc_Annotation_Array_Access) return Internal_Doc_Annotation_Array_Access; function Length (T : Internal_Doc_Annotation_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Doc_Annotation_Array_Access); procedure Dec_Ref (T : in out Internal_Doc_Annotation_Array_Access); function Equivalent (L, R : Internal_Doc_Annotation_Array_Access) return Boolean; function Trace_Image (A : Internal_Doc_Annotation_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Doc_Annotation_Array_Record, Internal_Doc_Annotation_Array_Access); type Internal_Internal_Entity_Array is array (Positive range <>) of Internal_Entity; type Internal_Entity_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Array (1 .. N); end record; Empty_Ada_Node_Array_Record : aliased Internal_Entity_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Array_Type : constant Internal_Entity_Array_Access := Empty_Ada_Node_Array_Record'Access; function Create_Internal_Entity_Array (Items : AST_Envs.Entity_Array) return Internal_Entity_Array_Access; function Create_Internal_Entity_Array (Items_Count : Natural) return Internal_Entity_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Array (Items : Internal_Internal_Entity_Array) return Internal_Entity_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Array_Access) return Internal_Entity_Array_Access; function Length (T : Internal_Entity_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Array_Access); function Equivalent (L, R : Internal_Entity_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Array_Record, Internal_Entity_Array_Access); type Internal_Internal_Entity_Aspect_Assoc_Array is array (Positive range <>) of Internal_Entity_Aspect_Assoc; type Internal_Entity_Aspect_Assoc_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Aspect_Assoc_Array (1 .. N); end record; Empty_Aspect_Assoc_Array_Record : aliased Internal_Entity_Aspect_Assoc_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Aspect_Assoc_Array_Type : constant Internal_Entity_Aspect_Assoc_Array_Access := Empty_Aspect_Assoc_Array_Record'Access; function Create_Internal_Entity_Aspect_Assoc_Array (Items_Count : Natural) return Internal_Entity_Aspect_Assoc_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Aspect_Assoc_Array (Items : Internal_Internal_Entity_Aspect_Assoc_Array) return Internal_Entity_Aspect_Assoc_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Aspect_Assoc_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Aspect_Assoc; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Aspect_Assoc_Array_Access) return Internal_Entity_Aspect_Assoc_Array_Access; function Length (T : Internal_Entity_Aspect_Assoc_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Aspect_Assoc_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Aspect_Assoc_Array_Access); function Equivalent (L, R : Internal_Entity_Aspect_Assoc_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Aspect_Assoc_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Aspect_Assoc_Array_Record, Internal_Entity_Aspect_Assoc_Array_Access); type Internal_Internal_Entity_Base_Assoc_Array is array (Positive range <>) of Internal_Entity_Base_Assoc; type Internal_Entity_Base_Assoc_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Base_Assoc_Array (1 .. N); end record; Empty_Base_Assoc_Array_Record : aliased Internal_Entity_Base_Assoc_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Base_Assoc_Array_Type : constant Internal_Entity_Base_Assoc_Array_Access := Empty_Base_Assoc_Array_Record'Access; function Create_Internal_Entity_Base_Assoc_Array (Items_Count : Natural) return Internal_Entity_Base_Assoc_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Base_Assoc_Array (Items : Internal_Internal_Entity_Base_Assoc_Array) return Internal_Entity_Base_Assoc_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Base_Assoc_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Base_Assoc; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Base_Assoc_Array_Access) return Internal_Entity_Base_Assoc_Array_Access; function Length (T : Internal_Entity_Base_Assoc_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Base_Assoc_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Base_Assoc_Array_Access); function Equivalent (L, R : Internal_Entity_Base_Assoc_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Base_Assoc_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Base_Assoc_Array_Record, Internal_Entity_Base_Assoc_Array_Access); type Internal_Internal_Entity_Base_Formal_Param_Decl_Array is array (Positive range <>) of Internal_Entity_Base_Formal_Param_Decl; type Internal_Entity_Base_Formal_Param_Decl_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Base_Formal_Param_Decl_Array (1 .. N); end record; Empty_Base_Formal_Param_Decl_Array_Record : aliased Internal_Entity_Base_Formal_Param_Decl_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Base_Formal_Param_Decl_Array_Type : constant Internal_Entity_Base_Formal_Param_Decl_Array_Access := Empty_Base_Formal_Param_Decl_Array_Record'Access; function Create_Internal_Entity_Base_Formal_Param_Decl_Array (Items_Count : Natural) return Internal_Entity_Base_Formal_Param_Decl_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Base_Formal_Param_Decl_Array (Items : Internal_Internal_Entity_Base_Formal_Param_Decl_Array) return Internal_Entity_Base_Formal_Param_Decl_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Base_Formal_Param_Decl_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Base_Formal_Param_Decl; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Base_Formal_Param_Decl_Array_Access) return Internal_Entity_Base_Formal_Param_Decl_Array_Access; function Length (T : Internal_Entity_Base_Formal_Param_Decl_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Base_Formal_Param_Decl_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Base_Formal_Param_Decl_Array_Access); function Equivalent (L, R : Internal_Entity_Base_Formal_Param_Decl_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Base_Formal_Param_Decl_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Base_Formal_Param_Decl_Array_Record, Internal_Entity_Base_Formal_Param_Decl_Array_Access); type Internal_Internal_Entity_Base_Type_Decl_Array is array (Positive range <>) of Internal_Entity_Base_Type_Decl; type Internal_Entity_Base_Type_Decl_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Base_Type_Decl_Array (1 .. N); end record; Empty_Base_Type_Decl_Array_Record : aliased Internal_Entity_Base_Type_Decl_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Base_Type_Decl_Array_Type : constant Internal_Entity_Base_Type_Decl_Array_Access := Empty_Base_Type_Decl_Array_Record'Access; function Create_Internal_Entity_Base_Type_Decl_Array (Items_Count : Natural) return Internal_Entity_Base_Type_Decl_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Base_Type_Decl_Array (Items : Internal_Internal_Entity_Base_Type_Decl_Array) return Internal_Entity_Base_Type_Decl_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Base_Type_Decl_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Base_Type_Decl; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Base_Type_Decl_Array_Access) return Internal_Entity_Base_Type_Decl_Array_Access; function Length (T : Internal_Entity_Base_Type_Decl_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Base_Type_Decl_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Base_Type_Decl_Array_Access); function Equivalent (L, R : Internal_Entity_Base_Type_Decl_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Base_Type_Decl_Array_Access) return String; function Make_Unique (A : Internal_Entity_Base_Type_Decl_Array_Access) return Internal_Entity_Base_Type_Decl_Array_Access; -- Return a copy of A with duplicated elements removed function Hash (R : Internal_Entity_Base_Type_Decl_Array_Access) return Hash_Type; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Base_Type_Decl_Array_Record, Internal_Entity_Base_Type_Decl_Array_Access); type Internal_Internal_Entity_Basic_Assoc_Array is array (Positive range <>) of Internal_Entity_Basic_Assoc; type Internal_Entity_Basic_Assoc_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Basic_Assoc_Array (1 .. N); end record; Empty_Basic_Assoc_Array_Record : aliased Internal_Entity_Basic_Assoc_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Basic_Assoc_Array_Type : constant Internal_Entity_Basic_Assoc_Array_Access := Empty_Basic_Assoc_Array_Record'Access; function Create_Internal_Entity_Basic_Assoc_Array (Items_Count : Natural) return Internal_Entity_Basic_Assoc_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Basic_Assoc_Array (Items : Internal_Internal_Entity_Basic_Assoc_Array) return Internal_Entity_Basic_Assoc_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Basic_Assoc_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Basic_Assoc; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Basic_Assoc_Array_Access) return Internal_Entity_Basic_Assoc_Array_Access; function Length (T : Internal_Entity_Basic_Assoc_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Basic_Assoc_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Basic_Assoc_Array_Access); function Equivalent (L, R : Internal_Entity_Basic_Assoc_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Basic_Assoc_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Basic_Assoc_Array_Record, Internal_Entity_Basic_Assoc_Array_Access); type Internal_Internal_Entity_Basic_Decl_Array is array (Positive range <>) of Internal_Entity_Basic_Decl; type Internal_Entity_Basic_Decl_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Basic_Decl_Array (1 .. N); end record; Empty_Basic_Decl_Array_Record : aliased Internal_Entity_Basic_Decl_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Basic_Decl_Array_Type : constant Internal_Entity_Basic_Decl_Array_Access := Empty_Basic_Decl_Array_Record'Access; function Create_Internal_Entity_Basic_Decl_Array (Items_Count : Natural) return Internal_Entity_Basic_Decl_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Basic_Decl_Array (Items : Internal_Internal_Entity_Basic_Decl_Array) return Internal_Entity_Basic_Decl_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Basic_Decl_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Basic_Decl; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Basic_Decl_Array_Access) return Internal_Entity_Basic_Decl_Array_Access; function Length (T : Internal_Entity_Basic_Decl_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Basic_Decl_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Basic_Decl_Array_Access); function Equivalent (L, R : Internal_Entity_Basic_Decl_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Basic_Decl_Array_Access) return String; function Make_Unique (A : Internal_Entity_Basic_Decl_Array_Access) return Internal_Entity_Basic_Decl_Array_Access; -- Return a copy of A with duplicated elements removed procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Basic_Decl_Array_Record, Internal_Entity_Basic_Decl_Array_Access); type Internal_Internal_Entity_Compilation_Unit_Array is array (Positive range <>) of Internal_Entity_Compilation_Unit; type Internal_Entity_Compilation_Unit_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Compilation_Unit_Array (1 .. N); end record; Empty_Compilation_Unit_Array_Record : aliased Internal_Entity_Compilation_Unit_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Compilation_Unit_Array_Type : constant Internal_Entity_Compilation_Unit_Array_Access := Empty_Compilation_Unit_Array_Record'Access; function Create_Internal_Entity_Compilation_Unit_Array (Items_Count : Natural) return Internal_Entity_Compilation_Unit_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Compilation_Unit_Array (Items : Internal_Internal_Entity_Compilation_Unit_Array) return Internal_Entity_Compilation_Unit_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Compilation_Unit_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Compilation_Unit; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Compilation_Unit_Array_Access) return Internal_Entity_Compilation_Unit_Array_Access; function Length (T : Internal_Entity_Compilation_Unit_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Compilation_Unit_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Compilation_Unit_Array_Access); function Equivalent (L, R : Internal_Entity_Compilation_Unit_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Compilation_Unit_Array_Access) return String; function Make_Unique (A : Internal_Entity_Compilation_Unit_Array_Access) return Internal_Entity_Compilation_Unit_Array_Access; -- Return a copy of A with duplicated elements removed procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Compilation_Unit_Array_Record, Internal_Entity_Compilation_Unit_Array_Access); type Internal_Internal_Entity_Declarative_Part_Array is array (Positive range <>) of Internal_Entity_Declarative_Part; type Internal_Entity_Declarative_Part_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Declarative_Part_Array (1 .. N); end record; Empty_Declarative_Part_Array_Record : aliased Internal_Entity_Declarative_Part_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Declarative_Part_Array_Type : constant Internal_Entity_Declarative_Part_Array_Access := Empty_Declarative_Part_Array_Record'Access; function Create_Internal_Entity_Declarative_Part_Array (Items_Count : Natural) return Internal_Entity_Declarative_Part_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Declarative_Part_Array (Items : Internal_Internal_Entity_Declarative_Part_Array) return Internal_Entity_Declarative_Part_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Declarative_Part_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Declarative_Part; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Declarative_Part_Array_Access) return Internal_Entity_Declarative_Part_Array_Access; function Length (T : Internal_Entity_Declarative_Part_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Declarative_Part_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Declarative_Part_Array_Access); function Equivalent (L, R : Internal_Entity_Declarative_Part_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Declarative_Part_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Declarative_Part_Array_Record, Internal_Entity_Declarative_Part_Array_Access); type Internal_Internal_Entity_Defining_Name_Array is array (Positive range <>) of Internal_Entity_Defining_Name; type Internal_Entity_Defining_Name_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Defining_Name_Array (1 .. N); end record; Empty_Defining_Name_Array_Record : aliased Internal_Entity_Defining_Name_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Defining_Name_Array_Type : constant Internal_Entity_Defining_Name_Array_Access := Empty_Defining_Name_Array_Record'Access; function Create_Internal_Entity_Defining_Name_Array (Items_Count : Natural) return Internal_Entity_Defining_Name_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Defining_Name_Array (Items : Internal_Internal_Entity_Defining_Name_Array) return Internal_Entity_Defining_Name_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Defining_Name_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Defining_Name; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Defining_Name_Array_Access) return Internal_Entity_Defining_Name_Array_Access; function Length (T : Internal_Entity_Defining_Name_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Defining_Name_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Defining_Name_Array_Access); function Equivalent (L, R : Internal_Entity_Defining_Name_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Defining_Name_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Defining_Name_Array_Record, Internal_Entity_Defining_Name_Array_Access); type Internal_Internal_Entity_Expr_Array is array (Positive range <>) of Internal_Entity_Expr; type Internal_Entity_Expr_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Expr_Array (1 .. N); end record; Empty_Expr_Array_Record : aliased Internal_Entity_Expr_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Expr_Array_Type : constant Internal_Entity_Expr_Array_Access := Empty_Expr_Array_Record'Access; function Create_Internal_Entity_Expr_Array (Items_Count : Natural) return Internal_Entity_Expr_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Expr_Array (Items : Internal_Internal_Entity_Expr_Array) return Internal_Entity_Expr_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Expr_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Expr; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Expr_Array_Access) return Internal_Entity_Expr_Array_Access; function Length (T : Internal_Entity_Expr_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Expr_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Expr_Array_Access); function Equivalent (L, R : Internal_Entity_Expr_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Expr_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Expr_Array_Record, Internal_Entity_Expr_Array_Access); type Internal_Internal_Entity_Generic_Instantiation_Array is array (Positive range <>) of Internal_Entity_Generic_Instantiation; type Internal_Entity_Generic_Instantiation_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Generic_Instantiation_Array (1 .. N); end record; Empty_Generic_Instantiation_Array_Record : aliased Internal_Entity_Generic_Instantiation_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Generic_Instantiation_Array_Type : constant Internal_Entity_Generic_Instantiation_Array_Access := Empty_Generic_Instantiation_Array_Record'Access; function Create_Internal_Entity_Generic_Instantiation_Array (Items_Count : Natural) return Internal_Entity_Generic_Instantiation_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Generic_Instantiation_Array (Items : Internal_Internal_Entity_Generic_Instantiation_Array) return Internal_Entity_Generic_Instantiation_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Generic_Instantiation_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Generic_Instantiation; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Generic_Instantiation_Array_Access) return Internal_Entity_Generic_Instantiation_Array_Access; function Length (T : Internal_Entity_Generic_Instantiation_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Generic_Instantiation_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Generic_Instantiation_Array_Access); function Equivalent (L, R : Internal_Entity_Generic_Instantiation_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Generic_Instantiation_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Generic_Instantiation_Array_Record, Internal_Entity_Generic_Instantiation_Array_Access); type Internal_Internal_Entity_Name_Array is array (Positive range <>) of Internal_Entity_Name; type Internal_Entity_Name_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Name_Array (1 .. N); end record; Empty_Name_Array_Record : aliased Internal_Entity_Name_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Name_Array_Type : constant Internal_Entity_Name_Array_Access := Empty_Name_Array_Record'Access; function Create_Internal_Entity_Name_Array (Items_Count : Natural) return Internal_Entity_Name_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Name_Array (Items : Internal_Internal_Entity_Name_Array) return Internal_Entity_Name_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Name_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Name; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Name_Array_Access) return Internal_Entity_Name_Array_Access; function Length (T : Internal_Entity_Name_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Name_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Name_Array_Access); function Equivalent (L, R : Internal_Entity_Name_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Name_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Name_Array_Record, Internal_Entity_Name_Array_Access); type Internal_Internal_Entity_Param_Spec_Array is array (Positive range <>) of Internal_Entity_Param_Spec; type Internal_Entity_Param_Spec_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Param_Spec_Array (1 .. N); end record; Empty_Param_Spec_Array_Record : aliased Internal_Entity_Param_Spec_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Param_Spec_Array_Type : constant Internal_Entity_Param_Spec_Array_Access := Empty_Param_Spec_Array_Record'Access; function Create_Internal_Entity_Param_Spec_Array (Items_Count : Natural) return Internal_Entity_Param_Spec_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Param_Spec_Array (Items : Internal_Internal_Entity_Param_Spec_Array) return Internal_Entity_Param_Spec_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Param_Spec_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Param_Spec; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Param_Spec_Array_Access) return Internal_Entity_Param_Spec_Array_Access; function Length (T : Internal_Entity_Param_Spec_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Param_Spec_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Param_Spec_Array_Access); function Equivalent (L, R : Internal_Entity_Param_Spec_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Param_Spec_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Param_Spec_Array_Record, Internal_Entity_Param_Spec_Array_Access); type Internal_Internal_Entity_Pragma_Node_Array is array (Positive range <>) of Internal_Entity_Pragma_Node; type Internal_Entity_Pragma_Node_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Pragma_Node_Array (1 .. N); end record; Empty_Pragma_Node_Array_Record : aliased Internal_Entity_Pragma_Node_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Pragma_Node_Array_Type : constant Internal_Entity_Pragma_Node_Array_Access := Empty_Pragma_Node_Array_Record'Access; function Create_Internal_Entity_Pragma_Node_Array (Items_Count : Natural) return Internal_Entity_Pragma_Node_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Pragma_Node_Array (Items : Internal_Internal_Entity_Pragma_Node_Array) return Internal_Entity_Pragma_Node_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Pragma_Node_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Pragma_Node; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Pragma_Node_Array_Access) return Internal_Entity_Pragma_Node_Array_Access; function Length (T : Internal_Entity_Pragma_Node_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Pragma_Node_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Pragma_Node_Array_Access); function Equivalent (L, R : Internal_Entity_Pragma_Node_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Pragma_Node_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Pragma_Node_Array_Record, Internal_Entity_Pragma_Node_Array_Access); type Internal_Internal_Entity_Type_Decl_Array is array (Positive range <>) of Internal_Entity_Type_Decl; type Internal_Entity_Type_Decl_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Type_Decl_Array (1 .. N); end record; Empty_Type_Decl_Array_Record : aliased Internal_Entity_Type_Decl_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Type_Decl_Array_Type : constant Internal_Entity_Type_Decl_Array_Access := Empty_Type_Decl_Array_Record'Access; function Create_Internal_Entity_Type_Decl_Array (Items_Count : Natural) return Internal_Entity_Type_Decl_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Type_Decl_Array (Items : Internal_Internal_Entity_Type_Decl_Array) return Internal_Entity_Type_Decl_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Type_Decl_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Type_Decl; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Type_Decl_Array_Access) return Internal_Entity_Type_Decl_Array_Access; function Length (T : Internal_Entity_Type_Decl_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Type_Decl_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Type_Decl_Array_Access); function Equivalent (L, R : Internal_Entity_Type_Decl_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Type_Decl_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Type_Decl_Array_Record, Internal_Entity_Type_Decl_Array_Access); type Internal_Internal_Entity_Type_Expr_Array is array (Positive range <>) of Internal_Entity_Type_Expr; type Internal_Entity_Type_Expr_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Type_Expr_Array (1 .. N); end record; Empty_Type_Expr_Array_Record : aliased Internal_Entity_Type_Expr_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Type_Expr_Array_Type : constant Internal_Entity_Type_Expr_Array_Access := Empty_Type_Expr_Array_Record'Access; function Create_Internal_Entity_Type_Expr_Array (Items_Count : Natural) return Internal_Entity_Type_Expr_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Type_Expr_Array (Items : Internal_Internal_Entity_Type_Expr_Array) return Internal_Entity_Type_Expr_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Type_Expr_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Type_Expr; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Type_Expr_Array_Access) return Internal_Entity_Type_Expr_Array_Access; function Length (T : Internal_Entity_Type_Expr_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Type_Expr_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Type_Expr_Array_Access); function Equivalent (L, R : Internal_Entity_Type_Expr_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Type_Expr_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Type_Expr_Array_Record, Internal_Entity_Type_Expr_Array_Access); type Internal_Internal_Entity_Variant_Array is array (Positive range <>) of Internal_Entity_Variant; type Internal_Entity_Variant_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Entity_Variant_Array (1 .. N); end record; Empty_Variant_Array_Record : aliased Internal_Entity_Variant_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Entity_Variant_Array_Type : constant Internal_Entity_Variant_Array_Access := Empty_Variant_Array_Record'Access; function Create_Internal_Entity_Variant_Array (Items_Count : Natural) return Internal_Entity_Variant_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Entity_Variant_Array (Items : Internal_Internal_Entity_Variant_Array) return Internal_Entity_Variant_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Entity_Variant_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Entity_Variant; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Entity_Variant_Array_Access) return Internal_Entity_Variant_Array_Access; function Length (T : Internal_Entity_Variant_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Entity_Variant_Array_Access); procedure Dec_Ref (T : in out Internal_Entity_Variant_Array_Access); function Equivalent (L, R : Internal_Entity_Variant_Array_Access) return Boolean; function Trace_Image (A : Internal_Entity_Variant_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Entity_Variant_Array_Record, Internal_Entity_Variant_Array_Access); type Internal_Internal_Env_Assoc_Array is array (Positive range <>) of Internal_Env_Assoc; type Internal_Env_Assoc_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Env_Assoc_Array (1 .. N); end record; Empty_Env_Assoc_Array_Record : aliased Internal_Env_Assoc_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Env_Assoc_Array_Type : constant Internal_Env_Assoc_Array_Access := Empty_Env_Assoc_Array_Record'Access; function Create_Internal_Env_Assoc_Array (Items_Count : Natural) return Internal_Env_Assoc_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Env_Assoc_Array (Items : Internal_Internal_Env_Assoc_Array) return Internal_Env_Assoc_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Env_Assoc_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Env_Assoc; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Env_Assoc_Array_Access) return Internal_Env_Assoc_Array_Access; function Length (T : Internal_Env_Assoc_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Env_Assoc_Array_Access); procedure Dec_Ref (T : in out Internal_Env_Assoc_Array_Access); function Equivalent (L, R : Internal_Env_Assoc_Array_Access) return Boolean; function Trace_Image (A : Internal_Env_Assoc_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Env_Assoc_Array_Record, Internal_Env_Assoc_Array_Access); type Internal_Internal_Expected_Type_For_Expr_Array is array (Positive range <>) of Internal_Expected_Type_For_Expr; type Internal_Expected_Type_For_Expr_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Expected_Type_For_Expr_Array (1 .. N); end record; Empty_Expected_Type_For_Expr_Array_Record : aliased Internal_Expected_Type_For_Expr_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Expected_Type_For_Expr_Array_Type : constant Internal_Expected_Type_For_Expr_Array_Access := Empty_Expected_Type_For_Expr_Array_Record'Access; function Create_Internal_Expected_Type_For_Expr_Array (Items_Count : Natural) return Internal_Expected_Type_For_Expr_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Expected_Type_For_Expr_Array (Items : Internal_Internal_Expected_Type_For_Expr_Array) return Internal_Expected_Type_For_Expr_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Expected_Type_For_Expr_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Expected_Type_For_Expr; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Expected_Type_For_Expr_Array_Access) return Internal_Expected_Type_For_Expr_Array_Access; function Length (T : Internal_Expected_Type_For_Expr_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Expected_Type_For_Expr_Array_Access); procedure Dec_Ref (T : in out Internal_Expected_Type_For_Expr_Array_Access); function Equivalent (L, R : Internal_Expected_Type_For_Expr_Array_Access) return Boolean; function Trace_Image (A : Internal_Expected_Type_For_Expr_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Expected_Type_For_Expr_Array_Record, Internal_Expected_Type_For_Expr_Array_Access); type Internal_Internal_Param_Actual_Array is array (Positive range <>) of Internal_Param_Actual; type Internal_Param_Actual_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Param_Actual_Array (1 .. N); end record; Empty_Param_Actual_Array_Record : aliased Internal_Param_Actual_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Param_Actual_Array_Type : constant Internal_Param_Actual_Array_Access := Empty_Param_Actual_Array_Record'Access; function Create_Internal_Param_Actual_Array (Items_Count : Natural) return Internal_Param_Actual_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Param_Actual_Array (Items : Internal_Internal_Param_Actual_Array) return Internal_Param_Actual_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Param_Actual_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Param_Actual; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Param_Actual_Array_Access) return Internal_Param_Actual_Array_Access; function Length (T : Internal_Param_Actual_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Param_Actual_Array_Access); procedure Dec_Ref (T : in out Internal_Param_Actual_Array_Access); function Equivalent (L, R : Internal_Param_Actual_Array_Access) return Boolean; function Trace_Image (A : Internal_Param_Actual_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Param_Actual_Array_Record, Internal_Param_Actual_Array_Access); type Internal_Internal_Param_Match_Array is array (Positive range <>) of Internal_Param_Match; type Internal_Param_Match_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Param_Match_Array (1 .. N); end record; Empty_Param_Match_Array_Record : aliased Internal_Param_Match_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Param_Match_Array_Type : constant Internal_Param_Match_Array_Access := Empty_Param_Match_Array_Record'Access; function Create_Internal_Param_Match_Array (Items_Count : Natural) return Internal_Param_Match_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Param_Match_Array (Items : Internal_Internal_Param_Match_Array) return Internal_Param_Match_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Param_Match_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Param_Match; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Param_Match_Array_Access) return Internal_Param_Match_Array_Access; function Length (T : Internal_Param_Match_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Param_Match_Array_Access); procedure Dec_Ref (T : in out Internal_Param_Match_Array_Access); function Equivalent (L, R : Internal_Param_Match_Array_Access) return Boolean; function Trace_Image (A : Internal_Param_Match_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Param_Match_Array_Record, Internal_Param_Match_Array_Access); type Internal_Internal_Ref_Result_Array is array (Positive range <>) of Internal_Ref_Result; type Internal_Ref_Result_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Ref_Result_Array (1 .. N); end record; Empty_Ref_Result_Array_Record : aliased Internal_Ref_Result_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Ref_Result_Array_Type : constant Internal_Ref_Result_Array_Access := Empty_Ref_Result_Array_Record'Access; function Create_Internal_Ref_Result_Array (Items_Count : Natural) return Internal_Ref_Result_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Ref_Result_Array (Items : Internal_Internal_Ref_Result_Array) return Internal_Ref_Result_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Ref_Result_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Ref_Result; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Ref_Result_Array_Access) return Internal_Ref_Result_Array_Access; function Length (T : Internal_Ref_Result_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Ref_Result_Array_Access); procedure Dec_Ref (T : in out Internal_Ref_Result_Array_Access); function Equivalent (L, R : Internal_Ref_Result_Array_Access) return Boolean; function Trace_Image (A : Internal_Ref_Result_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Ref_Result_Array_Record, Internal_Ref_Result_Array_Access); type Internal_Internal_Shape_Array is array (Positive range <>) of Internal_Shape; type Internal_Shape_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Shape_Array (1 .. N); end record; Empty_Shape_Array_Record : aliased Internal_Shape_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Shape_Array_Type : constant Internal_Shape_Array_Access := Empty_Shape_Array_Record'Access; function Create_Internal_Shape_Array (Items_Count : Natural) return Internal_Shape_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Shape_Array (Items : Internal_Internal_Shape_Array) return Internal_Shape_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Shape_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Shape; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Shape_Array_Access) return Internal_Shape_Array_Access; function Length (T : Internal_Shape_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Shape_Array_Access); procedure Dec_Ref (T : in out Internal_Shape_Array_Access); function Equivalent (L, R : Internal_Shape_Array_Access) return Boolean; function Trace_Image (A : Internal_Shape_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Shape_Array_Record, Internal_Shape_Array_Access); type Internal_Internal_Single_Actual_Array is array (Positive range <>) of Internal_Single_Actual; type Internal_Single_Actual_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Single_Actual_Array (1 .. N); end record; Empty_Single_Actual_Array_Record : aliased Internal_Single_Actual_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Single_Actual_Array_Type : constant Internal_Single_Actual_Array_Access := Empty_Single_Actual_Array_Record'Access; function Create_Internal_Single_Actual_Array (Items_Count : Natural) return Internal_Single_Actual_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Single_Actual_Array (Items : Internal_Internal_Single_Actual_Array) return Internal_Single_Actual_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Single_Actual_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Single_Actual; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Single_Actual_Array_Access) return Internal_Single_Actual_Array_Access; function Length (T : Internal_Single_Actual_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Single_Actual_Array_Access); procedure Dec_Ref (T : in out Internal_Single_Actual_Array_Access); function Equivalent (L, R : Internal_Single_Actual_Array_Access) return Boolean; function Trace_Image (A : Internal_Single_Actual_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Single_Actual_Array_Record, Internal_Single_Actual_Array_Access); type Internal_Internal_Single_Formal_Array is array (Positive range <>) of Internal_Single_Formal; type Internal_Single_Formal_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Single_Formal_Array (1 .. N); end record; Empty_Single_Formal_Array_Record : aliased Internal_Single_Formal_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Single_Formal_Array_Type : constant Internal_Single_Formal_Array_Access := Empty_Single_Formal_Array_Record'Access; function Create_Internal_Single_Formal_Array (Items_Count : Natural) return Internal_Single_Formal_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Single_Formal_Array (Items : Internal_Internal_Single_Formal_Array) return Internal_Single_Formal_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Single_Formal_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Single_Formal; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Single_Formal_Array_Access) return Internal_Single_Formal_Array_Access; function Length (T : Internal_Single_Formal_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Single_Formal_Array_Access); procedure Dec_Ref (T : in out Internal_Single_Formal_Array_Access); function Equivalent (L, R : Internal_Single_Formal_Array_Access) return Boolean; function Trace_Image (A : Internal_Single_Formal_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Single_Formal_Array_Record, Internal_Single_Formal_Array_Access); type Internal_Internal_Substitution_Array is array (Positive range <>) of Internal_Substitution; type Internal_Substitution_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Substitution_Array (1 .. N); end record; Empty_Substitution_Array_Record : aliased Internal_Substitution_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Substitution_Array_Type : constant Internal_Substitution_Array_Access := Empty_Substitution_Array_Record'Access; function Create_Internal_Substitution_Array (Items_Count : Natural) return Internal_Substitution_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Substitution_Array (Items : Internal_Internal_Substitution_Array) return Internal_Substitution_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Substitution_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Substitution; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Substitution_Array_Access) return Internal_Substitution_Array_Access; function Length (T : Internal_Substitution_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Substitution_Array_Access); procedure Dec_Ref (T : in out Internal_Substitution_Array_Access); function Equivalent (L, R : Internal_Substitution_Array_Access) return Boolean; function Trace_Image (A : Internal_Substitution_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Substitution_Array_Record, Internal_Substitution_Array_Access); type Internal_Internal_Unit_Array is array (Positive range <>) of Internal_Unit; type Internal_Unit_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Internal_Unit_Array (1 .. N); end record; Empty_Analysis_Unit_Array_Record : aliased Internal_Unit_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Internal_Unit_Array_Type : constant Internal_Unit_Array_Access := Empty_Analysis_Unit_Array_Record'Access; function Create_Internal_Unit_Array (Items_Count : Natural) return Internal_Unit_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Internal_Unit_Array (Items : Internal_Internal_Unit_Array) return Internal_Unit_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Internal_Unit_Array_Access; Index : Integer; Or_Null : Boolean := False) return Internal_Unit; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Internal_Unit_Array_Access) return Internal_Unit_Array_Access; function Length (T : Internal_Unit_Array_Access) return Natural; procedure Inc_Ref (T : Internal_Unit_Array_Access); procedure Dec_Ref (T : in out Internal_Unit_Array_Access); function Equivalent (L, R : Internal_Unit_Array_Access) return Boolean; function Trace_Image (A : Internal_Unit_Array_Access) return String; function Make_Unique (A : Internal_Unit_Array_Access) return Internal_Unit_Array_Access; -- Return a copy of A with duplicated elements removed procedure Free is new Ada.Unchecked_Deallocation (Internal_Unit_Array_Record, Internal_Unit_Array_Access); type Internal_Lexical_Env_Array is array (Positive range <>) of Lexical_Env; type Lexical_Env_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Lexical_Env_Array (1 .. N); end record; Empty_Lexical_Env_Array_Record : aliased Lexical_Env_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Lexical_Env_Array_Type : constant Lexical_Env_Array_Access := Empty_Lexical_Env_Array_Record'Access; function Create_Lexical_Env_Array (Items_Count : Natural) return Lexical_Env_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Lexical_Env_Array (Items : Internal_Lexical_Env_Array) return Lexical_Env_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Lexical_Env_Array_Access; Index : Integer; Or_Null : Boolean := False) return Lexical_Env; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Lexical_Env_Array_Access) return Lexical_Env_Array_Access; function Length (T : Lexical_Env_Array_Access) return Natural; procedure Inc_Ref (T : Lexical_Env_Array_Access); procedure Dec_Ref (T : in out Lexical_Env_Array_Access); function Equivalent (L, R : Lexical_Env_Array_Access) return Boolean; function Trace_Image (A : Lexical_Env_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Lexical_Env_Array_Record, Lexical_Env_Array_Access); type Internal_Logic_Equation_Array is array (Positive range <>) of Logic_Equation; type Logic_Equation_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Logic_Equation_Array (1 .. N); end record; Empty_Logic_Equation_Array_Record : aliased Logic_Equation_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Logic_Equation_Array_Type : constant Logic_Equation_Array_Access := Empty_Logic_Equation_Array_Record'Access; function Create_Logic_Equation_Array (Items_Count : Natural) return Logic_Equation_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Logic_Equation_Array (Items : Internal_Logic_Equation_Array) return Logic_Equation_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Logic_Equation_Array_Access; Index : Integer; Or_Null : Boolean := False) return Logic_Equation; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Logic_Equation_Array_Access) return Logic_Equation_Array_Access; function Length (T : Logic_Equation_Array_Access) return Natural; procedure Inc_Ref (T : Logic_Equation_Array_Access); procedure Dec_Ref (T : in out Logic_Equation_Array_Access); function Equivalent (L, R : Logic_Equation_Array_Access) return Boolean; function Trace_Image (A : Logic_Equation_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Logic_Equation_Array_Record, Logic_Equation_Array_Access); type Internal_Symbol_Type_Array is array (Positive range <>) of Symbol_Type; type Symbol_Type_Array_Record (N : Natural) is record Ref_Count : Integer; -- Negative values are interpreted as "always living singleton". -- Non-negative values have the usual ref-counting semantics. Items : Internal_Symbol_Type_Array (1 .. N); end record; Empty_Unbounded_Text_Type_Array_Record : aliased Symbol_Type_Array_Record := (N => 0, Ref_Count => -1, Items => (1 .. 0 => <>)); No_Symbol_Type_Array_Type : constant Symbol_Type_Array_Access := Empty_Unbounded_Text_Type_Array_Record'Access; function Create_Symbol_Type_Array (Items_Count : Natural) return Symbol_Type_Array_Access; -- Create a new array for N uninitialized elements and give its only -- ownership share to the caller. function Create_Symbol_Type_Array (Items : Internal_Symbol_Type_Array) return Symbol_Type_Array_Access; -- Create a new array from an existing collection of elements function Get (T : Symbol_Type_Array_Access; Index : Integer; Or_Null : Boolean := False) return Symbol_Type; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. If -- the result is ref-counted, a new owning reference is returned. function Concat (L, R : Symbol_Type_Array_Access) return Symbol_Type_Array_Access; function Length (T : Symbol_Type_Array_Access) return Natural; procedure Inc_Ref (T : Symbol_Type_Array_Access); procedure Dec_Ref (T : in out Symbol_Type_Array_Access); function Equivalent (L, R : Symbol_Type_Array_Access) return Boolean; function Trace_Image (A : Symbol_Type_Array_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Symbol_Type_Array_Record, Symbol_Type_Array_Access); -------------------- -- Iterator types -- -------------------- type Internal_Bare_Ada_Node_Iterator is record Ref_Count : Integer; -- Reference count. The iterator is freed when this drops to zero. -- Negative values are interpreted as "always living singleton". Safety_Net : Iterator_Safety_Net; -- Safety net for the iterator. Used to check that values produced by -- the iterator are still valid. Unlike for other types, we put the -- safety net in the internal type so that it can be used in all other -- APIs (Python, ...). -- -- While other types (except nodes) are "deeply" converted to native -- APIs (for instance: internal arrays are turned into native Python -- lists, likewise for array items, etc.), iterators are lazy, so the -- deep conversion is not possible. Elements : Bare_Ada_Node_Array_Access; Index : Positive; end record; Empty_Internal_Bare_Ada_Node_Iterator : aliased Internal_Bare_Ada_Node_Iterator := (Ref_Count => -1, Safety_Net => No_Iterator_Safety_Net, Elements => No_Bare_Ada_Node_Array_Type, Index => 1); No_Bare_Ada_Node_Iterator_Type : constant Bare_Ada_Node_Iterator_Access := Empty_Internal_Bare_Ada_Node_Iterator'Access; function Next (T : Bare_Ada_Node_Iterator_Access; Element : out Bare_Ada_Node) return Boolean; procedure Inc_Ref (T : Bare_Ada_Node_Iterator_Access); procedure Dec_Ref (T : in out Bare_Ada_Node_Iterator_Access); function Trace_Image (A : Bare_Ada_Node_Iterator_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Bare_Ada_Node_Iterator, Bare_Ada_Node_Iterator_Access); type Internal_Internal_Completion_Item_Iterator is record Ref_Count : Integer; -- Reference count. The iterator is freed when this drops to zero. -- Negative values are interpreted as "always living singleton". Safety_Net : Iterator_Safety_Net; -- Safety net for the iterator. Used to check that values produced by -- the iterator are still valid. Unlike for other types, we put the -- safety net in the internal type so that it can be used in all other -- APIs (Python, ...). -- -- While other types (except nodes) are "deeply" converted to native -- APIs (for instance: internal arrays are turned into native Python -- lists, likewise for array items, etc.), iterators are lazy, so the -- deep conversion is not possible. Elements : Internal_Completion_Item_Array_Access; Index : Positive; end record; Empty_Internal_Internal_Completion_Item_Iterator : aliased Internal_Internal_Completion_Item_Iterator := (Ref_Count => -1, Safety_Net => No_Iterator_Safety_Net, Elements => No_Internal_Completion_Item_Array_Type, Index => 1); No_Internal_Completion_Item_Iterator_Type : constant Internal_Completion_Item_Iterator_Access := Empty_Internal_Internal_Completion_Item_Iterator'Access; function Next (T : Internal_Completion_Item_Iterator_Access; Element : out Internal_Completion_Item) return Boolean; procedure Inc_Ref (T : Internal_Completion_Item_Iterator_Access); procedure Dec_Ref (T : in out Internal_Completion_Item_Iterator_Access); function Trace_Image (A : Internal_Completion_Item_Iterator_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Internal_Completion_Item_Iterator, Internal_Completion_Item_Iterator_Access); type Internal_Internal_Entity_Iterator is record Ref_Count : Integer; -- Reference count. The iterator is freed when this drops to zero. -- Negative values are interpreted as "always living singleton". Safety_Net : Iterator_Safety_Net; -- Safety net for the iterator. Used to check that values produced by -- the iterator are still valid. Unlike for other types, we put the -- safety net in the internal type so that it can be used in all other -- APIs (Python, ...). -- -- While other types (except nodes) are "deeply" converted to native -- APIs (for instance: internal arrays are turned into native Python -- lists, likewise for array items, etc.), iterators are lazy, so the -- deep conversion is not possible. Elements : Internal_Entity_Array_Access; Index : Positive; end record; Empty_Internal_Internal_Entity_Iterator : aliased Internal_Internal_Entity_Iterator := (Ref_Count => -1, Safety_Net => No_Iterator_Safety_Net, Elements => No_Internal_Entity_Array_Type, Index => 1); No_Internal_Entity_Iterator_Type : constant Internal_Entity_Iterator_Access := Empty_Internal_Internal_Entity_Iterator'Access; function Next (T : Internal_Entity_Iterator_Access; Element : out Internal_Entity) return Boolean; procedure Inc_Ref (T : Internal_Entity_Iterator_Access); procedure Dec_Ref (T : in out Internal_Entity_Iterator_Access); function Trace_Image (A : Internal_Entity_Iterator_Access) return String; procedure Free is new Ada.Unchecked_Deallocation (Internal_Internal_Entity_Iterator, Internal_Entity_Iterator_Access); ------------------------ -- Named environments -- ------------------------ -- The goal of named environments is to provide a sound mechanism to -- associate nodes and environments across analysis units: nodes whose -- Self_Env comes from another unit ("foreign env"), environments whose -- parent comes from another unit (also foreign env), or that contain -- symbol/node mappings for nodes coming from other units ("foreign -- nodes"). -- -- This mechanism comes with the following requirements: -- -- * Ensure that, after unit reparsing, all cross-unit associations are -- still valid. For instance, no node's Self_Env can refer to a lexical -- environment that has been deallocated. -- -- * Ensure that regardless of the sequence of unit parsing/reparsing that -- led to a given set of units (considering only unit filename and source -- buffer), the node/env graph (i.e. the result of PLE) is always the -- same, i.e. make incremental PLE idempotent. -- -- Note that even though the end goal for named envs is to replace the -- previous mechanism (proved to be unsound, as violating the second -- requirement), both still coexist during the transition period. -- -- Here is how this mechanism works: -- -- 1. Environments can be assigned zero, one or several names (i.e. one or -- several symbols). Name(s) assignment happens at environment -- construction. -- -- 2. As a consequence, multiple environments can be associated to a given -- env name. Using a total and deterministic ordering predicate, only -- one of them is said to have "precedence": looking up an environment -- using that name will return this unique environment. -- -- 3. For a given env name, we keep track of all uses of the environment -- that is looked up by its name: environment parent link, symbol/node -- mapping addition, node's Self_Env assignment. This info is -- tracked using the Named_Env_Descriptor record type below, often -- abbreviated NED. Note that this tracking happens even when there is -- no environment associated to the env name, as we need to do such -- updates when an environment gets associated to that env name. -- -- 4. Unit reparsing can destroy existing environments and/or create new -- ones. This means that, depending on their "ranking" using the -- ordering predicate, environments can earn or lose precedence for a -- given name. -- -- 5. When the precedence changes for a given name, we use the info -- collected as per 3. to perform relocation: relevant environment -- parent links are updated, symbol/node mappings are removed from the -- env that lost precedence and added to the env that earned precedence, -- etc. -- Tables to populate lexical entries in named envs package NED_Assoc_Maps is new Ada.Containers.Hashed_Maps (Key_Type => Symbol_Type, Element_Type => Internal_Map_Node_Vectors.Vector, Hash => Hash, Equivalent_Keys => "=", "=" => Internal_Map_Node_Vectors."="); -- Symbol/lexical env entry mappings for a given named env descriptor. -- Symbols are not unique in all mappings, so the lexical env entries are -- stored in a vector. procedure Add (Self : in out NED_Assoc_Maps.Map; Key : Symbol_Type; Node : AST_Envs.Internal_Map_Node); -- Add a symbol/lexical env entry mapping in Self procedure Remove (Self : in out NED_Assoc_Maps.Map; Key : Symbol_Type; Node : Bare_Ada_Node); -- Remove a symbol/lexical env entry mapping from Self -- Global table for named environments package Sorted_Env_Maps is new Ada.Containers.Ordered_Maps (Key_Type => Bare_Ada_Node, Element_Type => Lexical_Env); -- List of lexical environments, sorted by owning node. This means that the -- following must be true for all cursors in such maps:: -- -- Key (Cur) = Element (Cur).Env.Node package Node_Sets is new Ada.Containers.Hashed_Sets (Element_Type => Bare_Ada_Node, Hash => Hash, Equivalent_Elements => "="); type Named_Env_Descriptor is record Name : Symbol_Type; -- Name corresponding to this descriptor. Useful during debugging. Envs : Sorted_Env_Maps.Map; -- For each env name, we can have one or several environments -- (concurrent definitions). Just like foreign nodes in lexical -- environments, we keep them sorted by node to preserve determinism: -- given a set of loaded units, we will always have the same set of -- name:env associations sorted in the same order and thus always the -- same results at lookup time. Env_With_Precedence : Lexical_Env; -- Named environment that has precedence for this name. -- -- Most of the time, if Envs is empty, this is Empty_Env and otherwise, -- shortcut to Envs.First_Element. However, when a change in Envs -- invalidates Env_With_Precedence, we reset it to Empty_Env momentarily -- during PLE as a way to tag the temprorary inconsistency. Later on, we -- recompute it and perform the needed relocations. Foreign_Nodes : NED_Assoc_Maps.Map; -- This maps symbols to lists of env entries for all the foreign nodes -- in Env_With_Precedence. -- -- This set allows efficient relocation of env entries when -- Env_With_Precedence changes. Foreign_Envs : Sorted_Env_Maps.Map; -- This maps the owning node to env mapping for all lexical environments -- whose parent must be Env_With_Precedence. Envs are indexed by owning -- node for quick lookup during updates. -- -- This set allows efficient env parent link updates when -- Env_With_Precedence changes. Nodes_With_Foreign_Env : Node_Sets.Set; -- Set of nodes whose env (Self_Env) must be Env_With_Precedence. -- -- This set allows efficient Self_Env updates when Env_With_Precedence -- changes. -- Note that during the updating process of a reparsed unit -- (Update_After_Reparse procedure), these data structures become -- temporarily inconsistent: Env_With_Precedence can become Empty_Env -- even though Envs is not empty. This is fine, because when it does, -- Update_After_Reparse keeps track of it as to be updated -- (Named_Envs_Needing_Update map). end record; type Named_Env_Descriptor_Access is access Named_Env_Descriptor; procedure Destroy is new Ada.Unchecked_Deallocation (Named_Env_Descriptor, Named_Env_Descriptor_Access); package NED_Maps is new Ada.Containers.Hashed_Maps (Key_Type => Symbol_Type, Element_Type => Named_Env_Descriptor_Access, Hash => Hash, Equivalent_Keys => "="); -- Context-wide table that tracks for all env names the set of lexical envs -- that define it. type Exiled_Entry_In_NED is record Named_Env : Named_Env_Descriptor_Access; -- Named env descriptor in which Node is registered Key : Symbol_Type; -- Key in that Env's internal map that leads to the env descriptor that -- contains Node. Node : Bare_Ada_Node; -- Exiled node end record; package Exiled_Entry_In_NED_Vectors is new Langkit_Support.Vectors (Exiled_Entry_In_NED); type Exiled_Env is record Named_Env : Named_Env_Descriptor_Access; -- Named env descriptor in which Env is registered Env : Lexical_Env; -- Exiled environment end record; package Exiled_Env_Vectors is new Langkit_Support.Vectors (Exiled_Env); type Named_Env_Pair is record Name : Symbol_Type; -- Name on the lexical environment Env : Lexical_Env; -- Named lexical environment end record; package Named_Env_Vectors is new Langkit_Support.Vectors (Named_Env_Pair); -- High-level primitives to handle the life cycle of named environment function Get_Named_Env_Descriptor (Context : Internal_Context; Name : Symbol_Type) return Named_Env_Descriptor_Access; -- Return the named env descriptor in Context corresponding to Name. Create -- it first, if needed. procedure Register_Named_Env (Context : Internal_Context; Name : Symbol_Type; Env : Lexical_Env; Named_Envs_Needing_Update : in out NED_Maps.Map); -- Register Name as the environment name for Env. If Env takes the -- precedence for this name, add Name/its named env descriptor to -- Named_Envs_Needing_Update. procedure Update_Named_Envs (Named_Envs : NED_Maps.Map); -- For each named environment in Named_Envs, update Env_With_Precedence and -- do the necessary adjustments: relocate exiled entries, etc. ------------------------------- -- Tree traversal operations -- ------------------------------- Kind_To_Node_Children_Count : constant array (Ada_Node_Kind_Type) of Integer := (Ada_Abort_Absent => 0, Ada_Abort_Present => 0, Ada_Abstract_Absent => 0, Ada_Abstract_Present => 0, Ada_Ada_Node_List => -1, Ada_Abstract_State_Decl_List => -1, Ada_Alternatives_List => -1, Ada_Constraint_List => -1, Ada_Decl_List => -1, Ada_Stmt_List => -1, Ada_Aspect_Assoc_List => -1, Ada_Base_Assoc_List => -1, Ada_Assoc_List => -1, Ada_Basic_Decl_List => -1, Ada_Case_Expr_Alternative_List => -1, Ada_Case_Stmt_Alternative_List => -1, Ada_Compilation_Unit_List => -1, Ada_Contract_Case_Assoc_List => -1, Ada_Defining_Name_List => -1, Ada_Discriminant_Spec_List => -1, Ada_Elsif_Expr_Part_List => -1, Ada_Elsif_Stmt_Part_List => -1, Ada_Enum_Literal_Decl_List => -1, Ada_Expr_Alternatives_List => -1, Ada_Discriminant_Choice_List => -1, Ada_Name_List => -1, Ada_Parent_List => -1, Ada_Param_Spec_List => -1, Ada_Pragma_Node_List => -1, Ada_Select_When_Part_List => -1, Ada_Unconstrained_Array_Index_List => -1, Ada_Variant_List => -1, Ada_Aliased_Absent => 0, Ada_Aliased_Present => 0, Ada_All_Absent => 0, Ada_All_Present => 0, Ada_Constrained_Array_Indices => 1, Ada_Unconstrained_Array_Indices => 1, Ada_Aspect_Assoc => 2, Ada_At_Clause => 2, Ada_Attribute_Def_Clause => 2, Ada_Enum_Rep_Clause => 2, Ada_Record_Rep_Clause => 3, Ada_Aspect_Spec => 1, Ada_Contract_Case_Assoc => 2, Ada_Pragma_Argument_Assoc => 2, Ada_Entry_Spec => 3, Ada_Enum_Subp_Spec => 0, Ada_Subp_Spec => 4, Ada_Component_List => 2, Ada_Known_Discriminant_Part => 1, Ada_Unknown_Discriminant_Part => 0, Ada_Entry_Completion_Formal_Params => 1, Ada_Generic_Formal_Part => 1, Ada_Null_Record_Def => 1, Ada_Record_Def => 1, Ada_Aggregate_Assoc => 2, Ada_Multi_Dim_Array_Assoc => 2, Ada_Discriminant_Assoc => 2, Ada_Iterated_Assoc => 2, Ada_Param_Assoc => 2, Ada_Abstract_State_Decl => 2, Ada_Anonymous_Expr_Decl => 1, Ada_Component_Decl => 4, Ada_Discriminant_Spec => 3, Ada_Generic_Formal_Obj_Decl => 1, Ada_Generic_Formal_Package => 1, Ada_Generic_Formal_Subp_Decl => 1, Ada_Generic_Formal_Type_Decl => 1, Ada_Param_Spec => 6, Ada_Generic_Package_Internal => 5, Ada_Package_Decl => 5, Ada_Discrete_Base_Subtype_Decl => 1, Ada_Subtype_Decl => 3, Ada_Classwide_Type_Decl => 1, Ada_Incomplete_Type_Decl => 2, Ada_Incomplete_Tagged_Type_Decl => 3, Ada_Protected_Type_Decl => 5, Ada_Task_Type_Decl => 4, Ada_Single_Task_Type_Decl => 4, Ada_Type_Decl => 4, Ada_Anonymous_Type_Decl => 4, Ada_Synth_Anonymous_Type_Decl => 4, Ada_Abstract_Subp_Decl => 3, Ada_Abstract_Formal_Subp_Decl => 4, Ada_Concrete_Formal_Subp_Decl => 4, Ada_Subp_Decl => 3, Ada_Entry_Decl => 3, Ada_Enum_Literal_Decl => 1, Ada_Generic_Subp_Internal => 2, Ada_Expr_Function => 4, Ada_Null_Subp_Decl => 3, Ada_Subp_Body => 6, Ada_Subp_Renaming_Decl => 4, Ada_Package_Body_Stub => 2, Ada_Protected_Body_Stub => 2, Ada_Subp_Body_Stub => 3, Ada_Task_Body_Stub => 2, Ada_Entry_Body => 8, Ada_Package_Body => 5, Ada_Protected_Body => 4, Ada_Task_Body => 5, Ada_Entry_Index_Spec => 2, Ada_Error_Decl => 0, Ada_Exception_Decl => 3, Ada_Exception_Handler => 3, Ada_For_Loop_Var_Decl => 2, Ada_Generic_Package_Decl => 2, Ada_Generic_Subp_Decl => 2, Ada_Generic_Package_Instantiation => 4, Ada_Generic_Subp_Instantiation => 6, Ada_Generic_Package_Renaming_Decl => 3, Ada_Generic_Subp_Renaming_Decl => 4, Ada_Label_Decl => 1, Ada_Named_Stmt_Decl => 1, Ada_Number_Decl => 2, Ada_Object_Decl => 8, Ada_Extended_Return_Stmt_Object_Decl => 8, Ada_Package_Renaming_Decl => 3, Ada_Single_Protected_Decl => 4, Ada_Single_Task_Decl => 1, Ada_Case_Stmt_Alternative => 2, Ada_Compilation_Unit => 3, Ada_Component_Clause => 3, Ada_Component_Def => 3, Ada_Constant_Absent => 0, Ada_Constant_Present => 0, Ada_Delta_Constraint => 2, Ada_Digits_Constraint => 2, Ada_Discriminant_Constraint => 1, Ada_Index_Constraint => 1, Ada_Range_Constraint => 1, Ada_Declarative_Part => 1, Ada_Private_Part => 1, Ada_Public_Part => 1, Ada_Elsif_Expr_Part => 2, Ada_Elsif_Stmt_Part => 2, Ada_Abstract_State_Decl_Expr => 1, Ada_Allocator => 2, Ada_Aggregate => 2, Ada_Bracket_Aggregate => 2, Ada_Delta_Aggregate => 2, Ada_Bracket_Delta_Aggregate => 2, Ada_Null_Record_Aggregate => 2, Ada_Bin_Op => 3, Ada_Relation_Op => 3, Ada_Box_Expr => 0, Ada_Case_Expr_Alternative => 2, Ada_Case_Expr => 2, Ada_If_Expr => 4, Ada_Contract_Cases => 1, Ada_Decl_Expr => 2, Ada_Membership_Expr => 3, Ada_Attribute_Ref => 3, Ada_Update_Attribute_Ref => 3, Ada_Call_Expr => 2, Ada_Defining_Name => 1, Ada_Discrete_Subtype_Name => 1, Ada_Dotted_Name => 2, Ada_End_Name => 1, Ada_Explicit_Deref => 1, Ada_Qual_Expr => 2, Ada_Char_Literal => 0, Ada_Identifier => 0, Ada_Op_Abs => 0, Ada_Op_And => 0, Ada_Op_And_Then => 0, Ada_Op_Concat => 0, Ada_Op_Div => 0, Ada_Op_Double_Dot => 0, Ada_Op_Eq => 0, Ada_Op_Gt => 0, Ada_Op_Gte => 0, Ada_Op_In => 0, Ada_Op_Lt => 0, Ada_Op_Lte => 0, Ada_Op_Minus => 0, Ada_Op_Mod => 0, Ada_Op_Mult => 0, Ada_Op_Neq => 0, Ada_Op_Not => 0, Ada_Op_Not_In => 0, Ada_Op_Or => 0, Ada_Op_Or_Else => 0, Ada_Op_Plus => 0, Ada_Op_Pow => 0, Ada_Op_Rem => 0, Ada_Op_Xor => 0, Ada_String_Literal => 0, Ada_Null_Literal => 0, Ada_Int_Literal => 0, Ada_Real_Literal => 0, Ada_Target_Name => 0, Ada_Paren_Expr => 1, Ada_Quantified_Expr => 3, Ada_Raise_Expr => 2, Ada_Un_Op => 2, Ada_Handled_Stmts => 2, Ada_Interface_Kind_Limited => 0, Ada_Interface_Kind_Protected => 0, Ada_Interface_Kind_Synchronized => 0, Ada_Interface_Kind_Task => 0, Ada_Iter_Type_In => 0, Ada_Iter_Type_Of => 0, Ada_Library_Item => 2, Ada_Limited_Absent => 0, Ada_Limited_Present => 0, Ada_For_Loop_Spec => 4, Ada_While_Loop_Spec => 1, Ada_Mode_Default => 0, Ada_Mode_In => 0, Ada_Mode_In_Out => 0, Ada_Mode_Out => 0, Ada_Multi_Abstract_State_Decl => 1, Ada_Not_Null_Absent => 0, Ada_Not_Null_Present => 0, Ada_Null_Component_Decl => 0, Ada_Others_Designator => 0, Ada_Overriding_Not_Overriding => 0, Ada_Overriding_Overriding => 0, Ada_Overriding_Unspecified => 0, Ada_Params => 1, Ada_Paren_Abstract_State_Decl => 1, Ada_Pragma_Node => 2, Ada_Private_Absent => 0, Ada_Private_Present => 0, Ada_Protected_Def => 3, Ada_Protected_Absent => 0, Ada_Protected_Present => 0, Ada_Quantifier_All => 0, Ada_Quantifier_Some => 0, Ada_Range_Spec => 1, Ada_Renaming_Clause => 1, Ada_Synthetic_Renaming_Clause => 1, Ada_Reverse_Absent => 0, Ada_Reverse_Present => 0, Ada_Select_When_Part => 2, Ada_Accept_Stmt => 3, Ada_Accept_Stmt_With_Stmts => 5, Ada_For_Loop_Stmt => 3, Ada_Loop_Stmt => 3, Ada_While_Loop_Stmt => 3, Ada_Begin_Block => 2, Ada_Decl_Block => 3, Ada_Case_Stmt => 2, Ada_Extended_Return_Stmt => 2, Ada_If_Stmt => 4, Ada_Named_Stmt => 2, Ada_Select_Stmt => 3, Ada_Error_Stmt => 0, Ada_Abort_Stmt => 1, Ada_Assign_Stmt => 2, Ada_Call_Stmt => 1, Ada_Delay_Stmt => 2, Ada_Exit_Stmt => 2, Ada_Goto_Stmt => 1, Ada_Label => 1, Ada_Null_Stmt => 0, Ada_Raise_Stmt => 2, Ada_Requeue_Stmt => 2, Ada_Return_Stmt => 1, Ada_Terminate_Alternative => 0, Ada_Subp_Kind_Function => 0, Ada_Subp_Kind_Procedure => 0, Ada_Subunit => 2, Ada_Synchronized_Absent => 0, Ada_Synchronized_Present => 0, Ada_Tagged_Absent => 0, Ada_Tagged_Present => 0, Ada_Task_Def => 4, Ada_Access_To_Subp_Def => 3, Ada_Anonymous_Type_Access_Def => 2, Ada_Type_Access_Def => 4, Ada_Array_Type_Def => 2, Ada_Derived_Type_Def => 7, Ada_Enum_Type_Def => 1, Ada_Formal_Discrete_Type_Def => 0, Ada_Interface_Type_Def => 2, Ada_Mod_Int_Type_Def => 1, Ada_Private_Type_Def => 3, Ada_Decimal_Fixed_Point_Def => 3, Ada_Floating_Point_Def => 2, Ada_Ordinary_Fixed_Point_Def => 2, Ada_Record_Type_Def => 4, Ada_Signed_Int_Type_Def => 1, Ada_Anonymous_Type => 1, Ada_Enum_Lit_Synth_Type_Expr => 0, Ada_Subtype_Indication => 3, Ada_Constrained_Subtype_Indication => 3, Ada_Discrete_Subtype_Indication => 3, Ada_Unconstrained_Array_Index => 1, Ada_Until_Absent => 0, Ada_Until_Present => 0, Ada_Use_Package_Clause => 1, Ada_Use_Type_Clause => 2, Ada_Variant => 2, Ada_Variant_Part => 2, Ada_With_Clause => 3, Ada_With_Private_Absent => 0, Ada_With_Private_Present => 0); -- For each AST node kind, this array gives the number of AST node children -- it has. For AST node lists, this is -1 as this number varies from one -- list instance to another. function First_Child_Index (Node : Bare_Ada_Node) return Natural; -- Return the index of the first child Node has function Last_Child_Index (Node : Bare_Ada_Node) return Natural; -- Return the index of the last child Node has, or 0 if there is no child function Children_Count (Node : Bare_Ada_Node) return Natural; -- Return the number of children that Node has procedure Get_Child (Node : Bare_Ada_Node; Index : Positive; Index_In_Bounds : out Boolean; Result : out Bare_Ada_Node); -- Return the Index'th child of node, storing it into Result. -- -- Child indexing is 1-based. Store in Index_In_Bounds whether Node had -- such a child: if not (i.e. ``Index`` is out-of-bounds), set ``Result`` -- to a null node. function Child (Node : Bare_Ada_Node; Index : Positive) return Bare_Ada_Node; -- Return the Index'th child of Node, or null if Node has no such child function Children (Node : Bare_Ada_Node) return Internal_Bare_Ada_Node_Array; -- Return an array containing all the children of Node. -- This is an alternative to the Child/Children_Count pair, useful if you -- want the convenience of Ada arrays, and you don't care about the small -- performance hit of creating an array. function Parents (Node : Bare_Ada_Node; With_Self : Boolean := True) return Bare_Ada_Node_Array_Access; -- Return an array that contains the lexical parents, this node included -- iff ``with_self`` is True. Nearer parents are first in the list. function Parent (Node : Bare_Ada_Node) return Bare_Ada_Node; function Fetch_Sibling (Node : Bare_Ada_Node; Offset : Integer) return Bare_Ada_Node; function Fetch_Sibling (Node : Bare_Ada_Node; E_Info : Internal_Entity_Info; Offset : Integer) return Internal_Entity; -- Assuming Node is the Nth child of its parent, return the (N + Offset)'th -- child of the same parent, or null/No_Entity if there is no such sibling. function Traverse (Node : Bare_Ada_Node; Visit : access function (Node : Bare_Ada_Node) return Visit_Status) return Visit_Status; -- Given the parent node for a subtree, traverse all syntactic nodes of -- this tree, calling the given function on each node in prefix order (i.e. -- top-down). The order of traversing subtrees follows the order of -- declaration of the corresponding attributes in the grammar. The -- traversal is controlled as follows by the result returned by Visit: -- -- Into The traversal continues normally with the syntactic -- children of the node just processed. -- -- Over The children of the node just processed are skipped and -- excluded from the traversal, but otherwise processing -- continues elsewhere in the tree. -- -- Stop The entire traversal is immediately abandoned, and the -- original call to Traverse returns Stop. procedure Traverse (Node : Bare_Ada_Node; Visit : access function (Node : Bare_Ada_Node) return Visit_Status); -- This is the same as Traverse function except that no result is returned -- i.e. the Traverse function is called and the result is simply discarded. generic type Data_Type is private; Reset_After_Traversal : Boolean := False; function Traverse_With_Data (Node : Bare_Ada_Node; Visit : access function (Node : Bare_Ada_Node; Data : in out Data_Type) return Visit_Status; Data : in out Data_Type) return Visit_Status; -- This is the same as the first Traverse function except it accepts an -- argument that is passed to all Visit calls. -- -- If Reset_After_Traversal is True, the Data formal is left unchanged when -- Traverse_With_Data returns no matter what Visit does. Visit can change -- it otherwise. ---------------------------------------- -- Source location-related operations -- ---------------------------------------- function Sloc_Range (Node : Bare_Ada_Node) return Source_Location_Range; -- Return the source location range corresponding to the set of tokens from -- which Node was parsed. function Compare (Node : Bare_Ada_Node; Sloc : Source_Location) return Relative_Position; -- Compare Sloc to the sloc range of Node function Lookup (Node : Bare_Ada_Node; Sloc : Source_Location) return Bare_Ada_Node; -- Look for the bottom-most AST node whose sloc range contains Sloc. Return -- it, or null if no such node was found. function Compare (Left, Right : Bare_Ada_Node; Relation : Comparison_Relation) return Boolean; -- If Left and Right don't belong to the same analysis units or if one of -- them is null, raise a Property_Error. Otherwise, return the comparison -- of their starting source location according to Relation. ------------------- -- Debug helpers -- ------------------- procedure Print (Node : Bare_Ada_Node; Show_Slocs : Boolean; Line_Prefix : String := ""); -- Debug helper: print to standard output Node and all its children. -- Line_Prefix is prepended to each output line. procedure PP_Trivia (Node : Bare_Ada_Node; Line_Prefix : String := ""); -- Debug helper: print to standard output Node and all its children along -- with the trivia associated to them. Line_Prefix is prepended to each -- output line. procedure Assign_Names_To_Logic_Vars (Node : Bare_Ada_Node); -- Debug helper: Assign names to every logical variable in the root node, -- so that we can trace logical variables. ------------------------------- -- Root AST node (internals) -- ------------------------------- type Root_Node_Record (Kind : Ada_Node_Kind_Type) is record Parent : Bare_Ada_Node; -- Reference to the parent node, or null if this is the root one Unit : Internal_Unit; -- Reference to the analysis unit that owns this node Token_Start_Index : Token_Index; Token_End_Index : Token_Index; -- Reference to the start and end token that constitutes this node. If -- this node is a ghost, Token_Start_Index is the token that this AST -- node relates to and Token_End_Index is No_Token_Index. Otherwise, -- both tokens are inclusive, i.e. they both belong to this node. Self_Env : Lexical_Env; -- Hold the environment this node defines, or the parent environment -- otherwise. Last_Attempted_Child : Integer; -- 0-based index for the last child we tried to parse for this node. -1 -- if parsing for all children was successful. case Kind is when Ada_Abort_Node => case Kind is when Ada_Abort_Absent_Range => null; when Ada_Abort_Present_Range => null; when others => null; end case; when Ada_Abstract_Node => case Kind is when Ada_Abstract_Absent_Range => null; when Ada_Abstract_Present_Range => null; when others => null; end case; when Ada_Ada_List => Count : Natural; Nodes : Alloc_AST_List_Array.Element_Array_Access; case Kind is when Ada_Ada_Node_List_Range => case Kind is when Ada_Abstract_State_Decl_List_Range => null; when Ada_Alternatives_List_Range => null; when Ada_Constraint_List_Range => null; when Ada_Decl_List_Range => null; when Ada_Stmt_List_Range => null; when others => null; end case; when Ada_Aspect_Assoc_List_Range => null; when Ada_Base_Assoc_List_Range => null; when Ada_Basic_Assoc_List => case Kind is when Ada_Assoc_List_Range => null; when others => null; end case; when Ada_Basic_Decl_List_Range => null; when Ada_Case_Expr_Alternative_List_Range => null; when Ada_Case_Stmt_Alternative_List_Range => null; when Ada_Compilation_Unit_List_Range => null; when Ada_Contract_Case_Assoc_List_Range => null; when Ada_Defining_Name_List_Range => null; when Ada_Discriminant_Spec_List_Range => null; when Ada_Elsif_Expr_Part_List_Range => null; when Ada_Elsif_Stmt_Part_List_Range => null; when Ada_Enum_Literal_Decl_List_Range => null; when Ada_Expr_List => case Kind is when Ada_Expr_Alternatives_List_Range => null; when others => null; end case; when Ada_Identifier_List => case Kind is when Ada_Discriminant_Choice_List_Range => null; when others => null; end case; when Ada_Name_List_Range => case Kind is when Ada_Parent_List_Range => null; when others => null; end case; when Ada_Param_Spec_List_Range => null; when Ada_Pragma_Node_List_Range => null; when Ada_Select_When_Part_List_Range => null; when Ada_Unconstrained_Array_Index_List_Range => null; when Ada_Variant_List_Range => null; when others => null; end case; when Ada_Aliased_Node => case Kind is when Ada_Aliased_Absent_Range => null; when Ada_Aliased_Present_Range => null; when others => null; end case; when Ada_All_Node => case Kind is when Ada_All_Absent_Range => null; when Ada_All_Present_Range => null; when others => null; end case; when Ada_Array_Indices => case Kind is when Ada_Constrained_Array_Indices_Range => Constrained_Array_Indices_F_List : aliased Bare_Constraint_List := No_Bare_Ada_Node; when Ada_Unconstrained_Array_Indices_Range => Unconstrained_Array_Indices_F_Types : aliased Bare_Unconstrained_Array_Index_List := No_Bare_Ada_Node; when others => null; end case; when Ada_Aspect_Assoc_Range => Aspect_Assoc_F_Id : aliased Bare_Name := No_Bare_Ada_Node; Aspect_Assoc_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Aspect_Clause => case Kind is when Ada_At_Clause_Range => At_Clause_F_Name : aliased Bare_Base_Id := No_Bare_Ada_Node; At_Clause_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Attribute_Def_Clause_Range => Attribute_Def_Clause_F_Attribute_Expr : aliased Bare_Name := No_Bare_Ada_Node; Attribute_Def_Clause_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Enum_Rep_Clause_Range => Enum_Rep_Clause_F_Type_Name : aliased Bare_Name := No_Bare_Ada_Node; Enum_Rep_Clause_F_Aggregate : aliased Bare_Base_Aggregate := No_Bare_Ada_Node; when Ada_Record_Rep_Clause_Range => Record_Rep_Clause_F_Name : aliased Bare_Name := No_Bare_Ada_Node; Record_Rep_Clause_F_At_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Record_Rep_Clause_F_Components : aliased Bare_Ada_Node_List := No_Bare_Ada_Node; when others => null; end case; when Ada_Aspect_Spec_Range => Aspect_Spec_F_Aspect_Assocs : aliased Bare_Aspect_Assoc_List := No_Bare_Ada_Node; when Ada_Base_Assoc => case Kind is when Ada_Contract_Case_Assoc_Range => Contract_Case_Assoc_F_Guard : aliased Bare_Ada_Node := No_Bare_Ada_Node; Contract_Case_Assoc_F_Consequence : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Pragma_Argument_Assoc_Range => Pragma_Argument_Assoc_F_Name : aliased Bare_Name := No_Bare_Ada_Node; Pragma_Argument_Assoc_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when others => null; end case; when Ada_Base_Formal_Param_Holder => case Kind is when Ada_Base_Subp_Spec => case Kind is when Ada_Entry_Spec_Range => Entry_Spec_F_Entry_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Entry_Spec_F_Family_Type : aliased Bare_Ada_Node := No_Bare_Ada_Node; Entry_Spec_F_Entry_Params : aliased Bare_Params := No_Bare_Ada_Node; when Ada_Enum_Subp_Spec_Range => null; when Ada_Subp_Spec_Range => Subp_Spec_F_Subp_Kind : aliased Bare_Subp_Kind := No_Bare_Ada_Node; Subp_Spec_F_Subp_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Subp_Spec_F_Subp_Params : aliased Bare_Params := No_Bare_Ada_Node; Subp_Spec_F_Subp_Returns : aliased Bare_Type_Expr := No_Bare_Ada_Node; when others => null; end case; when Ada_Component_List_Range => Component_List_F_Components : aliased Bare_Ada_Node_List := No_Bare_Ada_Node; Component_List_F_Variant_Part : aliased Bare_Variant_Part := No_Bare_Ada_Node; when Ada_Discriminant_Part => case Kind is when Ada_Known_Discriminant_Part_Range => Known_Discriminant_Part_F_Discr_Specs : aliased Bare_Discriminant_Spec_List := No_Bare_Ada_Node; when Ada_Unknown_Discriminant_Part_Range => null; when others => null; end case; when Ada_Entry_Completion_Formal_Params_Range => Entry_Completion_Formal_Params_F_Params : aliased Bare_Params := No_Bare_Ada_Node; when Ada_Generic_Formal_Part_Range => Generic_Formal_Part_F_Decls : aliased Bare_Ada_Node_List := No_Bare_Ada_Node; when others => null; end case; when Ada_Base_Record_Def => Base_Record_Def_F_Components : aliased Bare_Component_List := No_Bare_Ada_Node; case Kind is when Ada_Null_Record_Def_Range => null; when Ada_Record_Def_Range => null; when others => null; end case; when Ada_Basic_Assoc => case Kind is when Ada_Aggregate_Assoc_Range => Aggregate_Assoc_F_Designators : aliased Bare_Alternatives_List := No_Bare_Ada_Node; Aggregate_Assoc_F_R_Expr : aliased Bare_Expr := No_Bare_Ada_Node; case Kind is when Ada_Multi_Dim_Array_Assoc_Range => null; when others => null; end case; when Ada_Discriminant_Assoc_Range => Discriminant_Assoc_F_Ids : aliased Bare_Discriminant_Choice_List := No_Bare_Ada_Node; Discriminant_Assoc_F_Discr_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Iterated_Assoc_Range => Iterated_Assoc_F_Spec : aliased Bare_For_Loop_Spec := No_Bare_Ada_Node; Iterated_Assoc_F_R_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Param_Assoc_Range => Param_Assoc_F_Designator : aliased Bare_Ada_Node := No_Bare_Ada_Node; Param_Assoc_F_R_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when others => null; end case; when Ada_Basic_Decl => case Kind is when Ada_Abstract_State_Decl_Range => Abstract_State_Decl_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Abstract_State_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when Ada_Anonymous_Expr_Decl_Range => Anonymous_Expr_Decl_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Base_Formal_Param_Decl => case Kind is when Ada_Component_Decl_Range => Component_Decl_F_Ids : aliased Bare_Defining_Name_List := No_Bare_Ada_Node; Component_Decl_F_Component_Def : aliased Bare_Component_Def := No_Bare_Ada_Node; Component_Decl_F_Default_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Component_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when Ada_Discriminant_Spec_Range => Discriminant_Spec_F_Ids : aliased Bare_Defining_Name_List := No_Bare_Ada_Node; Discriminant_Spec_F_Type_Expr : aliased Bare_Type_Expr := No_Bare_Ada_Node; Discriminant_Spec_F_Default_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Generic_Formal => Generic_Formal_F_Decl : aliased Bare_Basic_Decl := No_Bare_Ada_Node; case Kind is when Ada_Generic_Formal_Obj_Decl_Range => null; when Ada_Generic_Formal_Package_Range => null; when Ada_Generic_Formal_Subp_Decl_Range => null; when Ada_Generic_Formal_Type_Decl_Range => null; when others => null; end case; when Ada_Param_Spec_Range => Param_Spec_F_Ids : aliased Bare_Defining_Name_List := No_Bare_Ada_Node; Param_Spec_F_Has_Aliased : aliased Bare_Aliased_Node := No_Bare_Ada_Node; Param_Spec_F_Mode : aliased Bare_Mode := No_Bare_Ada_Node; Param_Spec_F_Type_Expr : aliased Bare_Type_Expr := No_Bare_Ada_Node; Param_Spec_F_Default_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Param_Spec_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when others => null; end case; when Ada_Base_Package_Decl => Base_Package_Decl_F_Package_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Base_Package_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; Base_Package_Decl_F_Public_Part : aliased Bare_Public_Part := No_Bare_Ada_Node; Base_Package_Decl_F_Private_Part : aliased Bare_Private_Part := No_Bare_Ada_Node; Base_Package_Decl_F_End_Name : aliased Bare_End_Name := No_Bare_Ada_Node; case Kind is when Ada_Generic_Package_Internal_Range => null; when Ada_Package_Decl_Range => null; when others => null; end case; when Ada_Base_Type_Decl => Base_Type_Decl_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; LF_Present_Dottable_Subps_Env : aliased Boolean := False; LF_Stg_Dottable_Subps_Env : aliased Lexical_Env := Empty_Env; case Kind is when Ada_Base_Subtype_Decl => case Kind is when Ada_Discrete_Base_Subtype_Decl_Range => null; when Ada_Subtype_Decl_Range => Subtype_Decl_F_Subtype : aliased Bare_Subtype_Indication := No_Bare_Ada_Node; Subtype_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when others => null; end case; when Ada_Classwide_Type_Decl_Range => null; when Ada_Incomplete_Type_Decl_Range => Incomplete_Type_Decl_F_Discriminants : aliased Bare_Discriminant_Part := No_Bare_Ada_Node; case Kind is when Ada_Incomplete_Tagged_Type_Decl_Range => Incomplete_Tagged_Type_Decl_F_Has_Abstract : aliased Bare_Abstract_Node := No_Bare_Ada_Node; when others => null; end case; when Ada_Protected_Type_Decl_Range => Protected_Type_Decl_F_Discriminants : aliased Bare_Discriminant_Part := No_Bare_Ada_Node; Protected_Type_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; Protected_Type_Decl_F_Interfaces : aliased Bare_Parent_List := No_Bare_Ada_Node; Protected_Type_Decl_F_Definition : aliased Bare_Protected_Def := No_Bare_Ada_Node; when Ada_Task_Type_Decl_Range => Task_Type_Decl_F_Discriminants : aliased Bare_Discriminant_Part := No_Bare_Ada_Node; Task_Type_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; Task_Type_Decl_F_Definition : aliased Bare_Task_Def := No_Bare_Ada_Node; case Kind is when Ada_Single_Task_Type_Decl_Range => null; when others => null; end case; when Ada_Type_Decl_Range => Type_Decl_F_Discriminants : aliased Bare_Discriminant_Part := No_Bare_Ada_Node; Type_Decl_F_Type_Def : aliased Bare_Type_Def := No_Bare_Ada_Node; Type_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; LF_Present_Direct_Primitives_Env : aliased Boolean := False; LF_Stg_Direct_Primitives_Env : aliased Lexical_Env := Empty_Env; LF_Present_Direct_Primitive_Subps : aliased Boolean := False; LF_Stg_Direct_Primitive_Subps : aliased Internal_Inner_Env_Assoc_Array_Access := No_Internal_Inner_Env_Assoc_Array_Type; case Kind is when Ada_Anonymous_Type_Decl_Range => case Kind is when Ada_Synth_Anonymous_Type_Decl_Range => null; when others => null; end case; when others => null; end case; when others => null; end case; when Ada_Basic_Subp_Decl => case Kind is when Ada_Classic_Subp_Decl => Classic_Subp_Decl_F_Overriding : aliased Bare_Overriding_Node := No_Bare_Ada_Node; Classic_Subp_Decl_F_Subp_Spec : aliased Bare_Subp_Spec := No_Bare_Ada_Node; case Kind is when Ada_Abstract_Subp_Decl_Range => Abstract_Subp_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when Ada_Formal_Subp_Decl => Formal_Subp_Decl_F_Default_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Formal_Subp_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; case Kind is when Ada_Abstract_Formal_Subp_Decl_Range => null; when Ada_Concrete_Formal_Subp_Decl_Range => null; when others => null; end case; when Ada_Subp_Decl_Range => Subp_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when others => null; end case; when Ada_Entry_Decl_Range => Entry_Decl_F_Overriding : aliased Bare_Overriding_Node := No_Bare_Ada_Node; Entry_Decl_F_Spec : aliased Bare_Entry_Spec := No_Bare_Ada_Node; Entry_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when Ada_Enum_Literal_Decl_Range => Enum_Literal_Decl_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; when Ada_Generic_Subp_Internal_Range => Generic_Subp_Internal_F_Subp_Spec : aliased Bare_Subp_Spec := No_Bare_Ada_Node; Generic_Subp_Internal_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when others => null; end case; when Ada_Body_Node => case Kind is when Ada_Base_Subp_Body => Base_Subp_Body_F_Overriding : aliased Bare_Overriding_Node := No_Bare_Ada_Node; Base_Subp_Body_F_Subp_Spec : aliased Bare_Subp_Spec := No_Bare_Ada_Node; case Kind is when Ada_Expr_Function_Range => Expr_Function_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Expr_Function_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when Ada_Null_Subp_Decl_Range => Null_Subp_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when Ada_Subp_Body_Range => Subp_Body_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; Subp_Body_F_Decls : aliased Bare_Declarative_Part := No_Bare_Ada_Node; Subp_Body_F_Stmts : aliased Bare_Handled_Stmts := No_Bare_Ada_Node; Subp_Body_F_End_Name : aliased Bare_End_Name := No_Bare_Ada_Node; when Ada_Subp_Renaming_Decl_Range => Subp_Renaming_Decl_F_Renames : aliased Bare_Renaming_Clause := No_Bare_Ada_Node; Subp_Renaming_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when others => null; end case; when Ada_Body_Stub => case Kind is when Ada_Package_Body_Stub_Range => Package_Body_Stub_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Package_Body_Stub_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when Ada_Protected_Body_Stub_Range => Protected_Body_Stub_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Protected_Body_Stub_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when Ada_Subp_Body_Stub_Range => Subp_Body_Stub_F_Overriding : aliased Bare_Overriding_Node := No_Bare_Ada_Node; Subp_Body_Stub_F_Subp_Spec : aliased Bare_Subp_Spec := No_Bare_Ada_Node; Subp_Body_Stub_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when Ada_Task_Body_Stub_Range => Task_Body_Stub_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Task_Body_Stub_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when others => null; end case; when Ada_Entry_Body_Range => Entry_Body_F_Entry_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Entry_Body_F_Index_Spec : aliased Bare_Entry_Index_Spec := No_Bare_Ada_Node; Entry_Body_F_Params : aliased Bare_Entry_Completion_Formal_Params := No_Bare_Ada_Node; Entry_Body_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; Entry_Body_F_Barrier : aliased Bare_Expr := No_Bare_Ada_Node; Entry_Body_F_Decls : aliased Bare_Declarative_Part := No_Bare_Ada_Node; Entry_Body_F_Stmts : aliased Bare_Handled_Stmts := No_Bare_Ada_Node; Entry_Body_F_End_Name : aliased Bare_End_Name := No_Bare_Ada_Node; when Ada_Package_Body_Range => Package_Body_F_Package_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Package_Body_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; Package_Body_F_Decls : aliased Bare_Declarative_Part := No_Bare_Ada_Node; Package_Body_F_Stmts : aliased Bare_Handled_Stmts := No_Bare_Ada_Node; Package_Body_F_End_Name : aliased Bare_End_Name := No_Bare_Ada_Node; when Ada_Protected_Body_Range => Protected_Body_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Protected_Body_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; Protected_Body_F_Decls : aliased Bare_Declarative_Part := No_Bare_Ada_Node; Protected_Body_F_End_Name : aliased Bare_End_Name := No_Bare_Ada_Node; when Ada_Task_Body_Range => Task_Body_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Task_Body_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; Task_Body_F_Decls : aliased Bare_Declarative_Part := No_Bare_Ada_Node; Task_Body_F_Stmts : aliased Bare_Handled_Stmts := No_Bare_Ada_Node; Task_Body_F_End_Name : aliased Bare_End_Name := No_Bare_Ada_Node; when others => null; end case; when Ada_Entry_Index_Spec_Range => Entry_Index_Spec_F_Id : aliased Bare_Defining_Name := No_Bare_Ada_Node; Entry_Index_Spec_F_Subtype : aliased Bare_Ada_Node := No_Bare_Ada_Node; when Ada_Error_Decl_Range => null; when Ada_Exception_Decl_Range => Exception_Decl_F_Ids : aliased Bare_Defining_Name_List := No_Bare_Ada_Node; Exception_Decl_F_Renames : aliased Bare_Renaming_Clause := No_Bare_Ada_Node; Exception_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when Ada_Exception_Handler_Range => Exception_Handler_F_Exception_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Exception_Handler_F_Handled_Exceptions : aliased Bare_Alternatives_List := No_Bare_Ada_Node; Exception_Handler_F_Stmts : aliased Bare_Stmt_List := No_Bare_Ada_Node; when Ada_For_Loop_Var_Decl_Range => For_Loop_Var_Decl_F_Id : aliased Bare_Defining_Name := No_Bare_Ada_Node; For_Loop_Var_Decl_F_Id_Type : aliased Bare_Subtype_Indication := No_Bare_Ada_Node; when Ada_Generic_Decl => Generic_Decl_F_Formal_Part : aliased Bare_Generic_Formal_Part := No_Bare_Ada_Node; case Kind is when Ada_Generic_Package_Decl_Range => Generic_Package_Decl_F_Package_Decl : aliased Bare_Generic_Package_Internal := No_Bare_Ada_Node; when Ada_Generic_Subp_Decl_Range => Generic_Subp_Decl_F_Subp_Decl : aliased Bare_Generic_Subp_Internal := No_Bare_Ada_Node; when others => null; end case; when Ada_Generic_Instantiation => LF_Present_Instantiation_Env : aliased Boolean := False; LF_Stg_Instantiation_Env : aliased Lexical_Env := Empty_Env; LF_Present_Actual_Expr_Decls : aliased Boolean := False; LF_Stg_Actual_Expr_Decls : aliased Bare_Anonymous_Expr_Decl_Array_Access := No_Bare_Anonymous_Expr_Decl_Array_Type; case Kind is when Ada_Generic_Package_Instantiation_Range => Generic_Package_Instantiation_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Generic_Package_Instantiation_F_Generic_Pkg_Name : aliased Bare_Name := No_Bare_Ada_Node; Generic_Package_Instantiation_F_Params : aliased Bare_Assoc_List := No_Bare_Ada_Node; Generic_Package_Instantiation_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when Ada_Generic_Subp_Instantiation_Range => Generic_Subp_Instantiation_F_Overriding : aliased Bare_Overriding_Node := No_Bare_Ada_Node; Generic_Subp_Instantiation_F_Kind : aliased Bare_Subp_Kind := No_Bare_Ada_Node; Generic_Subp_Instantiation_F_Subp_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Generic_Subp_Instantiation_F_Generic_Subp_Name : aliased Bare_Name := No_Bare_Ada_Node; Generic_Subp_Instantiation_F_Params : aliased Bare_Assoc_List := No_Bare_Ada_Node; Generic_Subp_Instantiation_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when others => null; end case; when Ada_Generic_Renaming_Decl => case Kind is when Ada_Generic_Package_Renaming_Decl_Range => Generic_Package_Renaming_Decl_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Generic_Package_Renaming_Decl_F_Renames : aliased Bare_Name := No_Bare_Ada_Node; Generic_Package_Renaming_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when Ada_Generic_Subp_Renaming_Decl_Range => Generic_Subp_Renaming_Decl_F_Kind : aliased Bare_Subp_Kind := No_Bare_Ada_Node; Generic_Subp_Renaming_Decl_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Generic_Subp_Renaming_Decl_F_Renames : aliased Bare_Name := No_Bare_Ada_Node; Generic_Subp_Renaming_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when others => null; end case; when Ada_Label_Decl_Range => Label_Decl_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; when Ada_Named_Stmt_Decl_Range => Named_Stmt_Decl_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; when Ada_Number_Decl_Range => Number_Decl_F_Ids : aliased Bare_Defining_Name_List := No_Bare_Ada_Node; Number_Decl_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Object_Decl_Range => Object_Decl_F_Ids : aliased Bare_Defining_Name_List := No_Bare_Ada_Node; Object_Decl_F_Has_Aliased : aliased Bare_Aliased_Node := No_Bare_Ada_Node; Object_Decl_F_Has_Constant : aliased Bare_Constant_Node := No_Bare_Ada_Node; Object_Decl_F_Mode : aliased Bare_Mode := No_Bare_Ada_Node; Object_Decl_F_Type_Expr : aliased Bare_Type_Expr := No_Bare_Ada_Node; Object_Decl_F_Default_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Object_Decl_F_Renaming_Clause : aliased Bare_Renaming_Clause := No_Bare_Ada_Node; Object_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; case Kind is when Ada_Extended_Return_Stmt_Object_Decl_Range => null; when others => null; end case; when Ada_Package_Renaming_Decl_Range => Package_Renaming_Decl_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Package_Renaming_Decl_F_Renames : aliased Bare_Renaming_Clause := No_Bare_Ada_Node; Package_Renaming_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; when Ada_Single_Protected_Decl_Range => Single_Protected_Decl_F_Name : aliased Bare_Defining_Name := No_Bare_Ada_Node; Single_Protected_Decl_F_Aspects : aliased Bare_Aspect_Spec := No_Bare_Ada_Node; Single_Protected_Decl_F_Interfaces : aliased Bare_Parent_List := No_Bare_Ada_Node; Single_Protected_Decl_F_Definition : aliased Bare_Protected_Def := No_Bare_Ada_Node; when Ada_Single_Task_Decl_Range => Single_Task_Decl_F_Task_Type : aliased Bare_Single_Task_Type_Decl := No_Bare_Ada_Node; when others => null; end case; when Ada_Case_Stmt_Alternative_Range => Case_Stmt_Alternative_F_Choices : aliased Bare_Alternatives_List := No_Bare_Ada_Node; Case_Stmt_Alternative_F_Stmts : aliased Bare_Stmt_List := No_Bare_Ada_Node; when Ada_Compilation_Unit_Range => Compilation_Unit_F_Prelude : aliased Bare_Ada_Node_List := No_Bare_Ada_Node; Compilation_Unit_F_Body : aliased Bare_Ada_Node := No_Bare_Ada_Node; Compilation_Unit_F_Pragmas : aliased Bare_Pragma_Node_List := No_Bare_Ada_Node; Compilation_Unit_No_Env : aliased Lexical_Env := Empty_Env; when Ada_Component_Clause_Range => Component_Clause_F_Id : aliased Bare_Identifier := No_Bare_Ada_Node; Component_Clause_F_Position : aliased Bare_Expr := No_Bare_Ada_Node; Component_Clause_F_Range : aliased Bare_Range_Spec := No_Bare_Ada_Node; when Ada_Component_Def_Range => Component_Def_F_Has_Aliased : aliased Bare_Aliased_Node := No_Bare_Ada_Node; Component_Def_F_Has_Constant : aliased Bare_Constant_Node := No_Bare_Ada_Node; Component_Def_F_Type_Expr : aliased Bare_Type_Expr := No_Bare_Ada_Node; when Ada_Constant_Node => case Kind is when Ada_Constant_Absent_Range => null; when Ada_Constant_Present_Range => null; when others => null; end case; when Ada_Constraint => case Kind is when Ada_Delta_Constraint_Range => Delta_Constraint_F_Digits : aliased Bare_Expr := No_Bare_Ada_Node; Delta_Constraint_F_Range : aliased Bare_Range_Spec := No_Bare_Ada_Node; when Ada_Digits_Constraint_Range => Digits_Constraint_F_Digits : aliased Bare_Expr := No_Bare_Ada_Node; Digits_Constraint_F_Range : aliased Bare_Range_Spec := No_Bare_Ada_Node; when Ada_Discriminant_Constraint_Range => Discriminant_Constraint_F_Constraints : aliased Bare_Assoc_List := No_Bare_Ada_Node; when Ada_Index_Constraint_Range => Index_Constraint_F_Constraints : aliased Bare_Constraint_List := No_Bare_Ada_Node; when Ada_Range_Constraint_Range => Range_Constraint_F_Range : aliased Bare_Range_Spec := No_Bare_Ada_Node; when others => null; end case; when Ada_Declarative_Part_Range => Declarative_Part_F_Decls : aliased Bare_Ada_Node_List := No_Bare_Ada_Node; case Kind is when Ada_Private_Part_Range => null; when Ada_Public_Part_Range => null; when others => null; end case; when Ada_Elsif_Expr_Part_Range => Elsif_Expr_Part_F_Cond_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Elsif_Expr_Part_F_Then_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Elsif_Stmt_Part_Range => Elsif_Stmt_Part_F_Cond_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Elsif_Stmt_Part_F_Stmts : aliased Bare_Stmt_List := No_Bare_Ada_Node; when Ada_Expr => Expr_Logic_Vars : aliased Address := System.Null_Address; case Kind is when Ada_Abstract_State_Decl_Expr_Range => Abstract_State_Decl_Expr_F_State_Decl : aliased Bare_Ada_Node := No_Bare_Ada_Node; when Ada_Allocator_Range => Allocator_F_Subpool : aliased Bare_Name := No_Bare_Ada_Node; Allocator_F_Type_Or_Expr : aliased Bare_Ada_Node := No_Bare_Ada_Node; when Ada_Base_Aggregate => Base_Aggregate_F_Ancestor_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Base_Aggregate_F_Assocs : aliased Bare_Assoc_List := No_Bare_Ada_Node; case Kind is when Ada_Aggregate_Range => case Kind is when Ada_Bracket_Aggregate_Range => null; when others => null; end case; when Ada_Delta_Aggregate_Range => case Kind is when Ada_Bracket_Delta_Aggregate_Range => null; when others => null; end case; when Ada_Null_Record_Aggregate_Range => null; when others => null; end case; when Ada_Bin_Op_Range => Bin_Op_F_Left : aliased Bare_Expr := No_Bare_Ada_Node; Bin_Op_F_Op : aliased Bare_Op := No_Bare_Ada_Node; Bin_Op_F_Right : aliased Bare_Expr := No_Bare_Ada_Node; case Kind is when Ada_Relation_Op_Range => null; when others => null; end case; when Ada_Box_Expr_Range => null; when Ada_Case_Expr_Alternative_Range => Case_Expr_Alternative_F_Choices : aliased Bare_Alternatives_List := No_Bare_Ada_Node; Case_Expr_Alternative_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Cond_Expr => case Kind is when Ada_Case_Expr_Range => Case_Expr_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Case_Expr_F_Cases : aliased Bare_Case_Expr_Alternative_List := No_Bare_Ada_Node; when Ada_If_Expr_Range => If_Expr_F_Cond_Expr : aliased Bare_Expr := No_Bare_Ada_Node; If_Expr_F_Then_Expr : aliased Bare_Expr := No_Bare_Ada_Node; If_Expr_F_Alternatives : aliased Bare_Elsif_Expr_Part_List := No_Bare_Ada_Node; If_Expr_F_Else_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when others => null; end case; when Ada_Contract_Cases_Range => Contract_Cases_F_Contract_Cases : aliased Bare_Contract_Case_Assoc_List := No_Bare_Ada_Node; when Ada_Decl_Expr_Range => Decl_Expr_F_Decls : aliased Bare_Basic_Decl_List := No_Bare_Ada_Node; Decl_Expr_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Membership_Expr_Range => Membership_Expr_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Membership_Expr_F_Op : aliased Bare_Op := No_Bare_Ada_Node; Membership_Expr_F_Membership_Exprs : aliased Bare_Expr_Alternatives_List := No_Bare_Ada_Node; when Ada_Name => case Kind is when Ada_Attribute_Ref_Range => Attribute_Ref_F_Prefix : aliased Bare_Name := No_Bare_Ada_Node; Attribute_Ref_F_Attribute : aliased Bare_Identifier := No_Bare_Ada_Node; Attribute_Ref_F_Args : aliased Bare_Ada_Node := No_Bare_Ada_Node; Attribute_Ref_R_Ref_Var : aliased Logic_Var_Record := Null_Var_Record; case Kind is when Ada_Update_Attribute_Ref_Range => null; when others => null; end case; when Ada_Call_Expr_Range => Call_Expr_F_Name : aliased Bare_Name := No_Bare_Ada_Node; Call_Expr_F_Suffix : aliased Bare_Ada_Node := No_Bare_Ada_Node; Call_Expr_R_Called_Spec : aliased Logic_Var_Record := Null_Var_Record; when Ada_Defining_Name_Range => Defining_Name_F_Name : aliased Bare_Name := No_Bare_Ada_Node; when Ada_Discrete_Subtype_Name_Range => Discrete_Subtype_Name_F_Subtype : aliased Bare_Discrete_Subtype_Indication := No_Bare_Ada_Node; when Ada_Dotted_Name_Range => Dotted_Name_F_Prefix : aliased Bare_Name := No_Bare_Ada_Node; Dotted_Name_F_Suffix : aliased Bare_Base_Id := No_Bare_Ada_Node; when Ada_End_Name_Range => End_Name_F_Name : aliased Bare_Name := No_Bare_Ada_Node; when Ada_Explicit_Deref_Range => Explicit_Deref_F_Prefix : aliased Bare_Name := No_Bare_Ada_Node; Explicit_Deref_R_Called_Spec : aliased Logic_Var_Record := Null_Var_Record; when Ada_Qual_Expr_Range => Qual_Expr_F_Prefix : aliased Bare_Name := No_Bare_Ada_Node; Qual_Expr_F_Suffix : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Single_Tok_Node => case Kind is when Ada_Base_Id => case Kind is when Ada_Char_Literal_Range => null; when Ada_Identifier_Range => null; when Ada_Op => case Kind is when Ada_Op_Abs_Range => null; when Ada_Op_And_Range => null; when Ada_Op_And_Then_Range => null; when Ada_Op_Concat_Range => null; when Ada_Op_Div_Range => null; when Ada_Op_Double_Dot_Range => null; when Ada_Op_Eq_Range => null; when Ada_Op_Gt_Range => null; when Ada_Op_Gte_Range => null; when Ada_Op_In_Range => null; when Ada_Op_Lt_Range => null; when Ada_Op_Lte_Range => null; when Ada_Op_Minus_Range => null; when Ada_Op_Mod_Range => null; when Ada_Op_Mult_Range => null; when Ada_Op_Neq_Range => null; when Ada_Op_Not_Range => null; when Ada_Op_Not_In_Range => null; when Ada_Op_Or_Range => null; when Ada_Op_Or_Else_Range => null; when Ada_Op_Plus_Range => null; when Ada_Op_Pow_Range => null; when Ada_Op_Rem_Range => null; when Ada_Op_Xor_Range => null; when others => null; end case; when Ada_String_Literal_Range => null; when others => null; end case; when Ada_Null_Literal_Range => null; when Ada_Num_Literal => case Kind is when Ada_Int_Literal_Range => null; when Ada_Real_Literal_Range => null; when others => null; end case; when others => null; end case; when Ada_Target_Name_Range => Target_Name_R_Ref_Var : aliased Logic_Var_Record := Null_Var_Record; when others => null; end case; when Ada_Paren_Expr_Range => Paren_Expr_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Quantified_Expr_Range => Quantified_Expr_F_Quantifier : aliased Bare_Quantifier := No_Bare_Ada_Node; Quantified_Expr_F_Loop_Spec : aliased Bare_For_Loop_Spec := No_Bare_Ada_Node; Quantified_Expr_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Raise_Expr_Range => Raise_Expr_F_Exception_Name : aliased Bare_Name := No_Bare_Ada_Node; Raise_Expr_F_Error_Message : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Un_Op_Range => Un_Op_F_Op : aliased Bare_Op := No_Bare_Ada_Node; Un_Op_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when others => null; end case; when Ada_Handled_Stmts_Range => Handled_Stmts_F_Stmts : aliased Bare_Stmt_List := No_Bare_Ada_Node; Handled_Stmts_F_Exceptions : aliased Bare_Ada_Node_List := No_Bare_Ada_Node; when Ada_Interface_Kind => case Kind is when Ada_Interface_Kind_Limited_Range => null; when Ada_Interface_Kind_Protected_Range => null; when Ada_Interface_Kind_Synchronized_Range => null; when Ada_Interface_Kind_Task_Range => null; when others => null; end case; when Ada_Iter_Type => case Kind is when Ada_Iter_Type_In_Range => null; when Ada_Iter_Type_Of_Range => null; when others => null; end case; when Ada_Library_Item_Range => Library_Item_F_Has_Private : aliased Bare_Private_Node := No_Bare_Ada_Node; Library_Item_F_Item : aliased Bare_Basic_Decl := No_Bare_Ada_Node; when Ada_Limited_Node => case Kind is when Ada_Limited_Absent_Range => null; when Ada_Limited_Present_Range => null; when others => null; end case; when Ada_Loop_Spec => case Kind is when Ada_For_Loop_Spec_Range => For_Loop_Spec_F_Var_Decl : aliased Bare_For_Loop_Var_Decl := No_Bare_Ada_Node; For_Loop_Spec_F_Loop_Type : aliased Bare_Iter_Type := No_Bare_Ada_Node; For_Loop_Spec_F_Has_Reverse : aliased Bare_Reverse_Node := No_Bare_Ada_Node; For_Loop_Spec_F_Iter_Expr : aliased Bare_Ada_Node := No_Bare_Ada_Node; when Ada_While_Loop_Spec_Range => While_Loop_Spec_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when others => null; end case; when Ada_Mode => case Kind is when Ada_Mode_Default_Range => null; when Ada_Mode_In_Range => null; when Ada_Mode_In_Out_Range => null; when Ada_Mode_Out_Range => null; when others => null; end case; when Ada_Multi_Abstract_State_Decl_Range => Multi_Abstract_State_Decl_F_Decls : aliased Bare_Abstract_State_Decl_List := No_Bare_Ada_Node; when Ada_Not_Null => case Kind is when Ada_Not_Null_Absent_Range => null; when Ada_Not_Null_Present_Range => null; when others => null; end case; when Ada_Null_Component_Decl_Range => null; when Ada_Others_Designator_Range => null; when Ada_Overriding_Node => case Kind is when Ada_Overriding_Not_Overriding_Range => null; when Ada_Overriding_Overriding_Range => null; when Ada_Overriding_Unspecified_Range => null; when others => null; end case; when Ada_Params_Range => Params_F_Params : aliased Bare_Param_Spec_List := No_Bare_Ada_Node; when Ada_Paren_Abstract_State_Decl_Range => Paren_Abstract_State_Decl_F_Decl : aliased Bare_Ada_Node := No_Bare_Ada_Node; when Ada_Pragma_Node_Range => Pragma_Node_F_Id : aliased Bare_Identifier := No_Bare_Ada_Node; Pragma_Node_F_Args : aliased Bare_Base_Assoc_List := No_Bare_Ada_Node; when Ada_Private_Node => case Kind is when Ada_Private_Absent_Range => null; when Ada_Private_Present_Range => null; when others => null; end case; when Ada_Protected_Def_Range => Protected_Def_F_Public_Part : aliased Bare_Public_Part := No_Bare_Ada_Node; Protected_Def_F_Private_Part : aliased Bare_Private_Part := No_Bare_Ada_Node; Protected_Def_F_End_Name : aliased Bare_End_Name := No_Bare_Ada_Node; when Ada_Protected_Node => case Kind is when Ada_Protected_Absent_Range => null; when Ada_Protected_Present_Range => null; when others => null; end case; when Ada_Quantifier => case Kind is when Ada_Quantifier_All_Range => null; when Ada_Quantifier_Some_Range => null; when others => null; end case; when Ada_Range_Spec_Range => Range_Spec_F_Range : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Renaming_Clause_Range => Renaming_Clause_F_Renamed_Object : aliased Bare_Name := No_Bare_Ada_Node; case Kind is when Ada_Synthetic_Renaming_Clause_Range => null; when others => null; end case; when Ada_Reverse_Node => case Kind is when Ada_Reverse_Absent_Range => null; when Ada_Reverse_Present_Range => null; when others => null; end case; when Ada_Select_When_Part_Range => Select_When_Part_F_Cond_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Select_When_Part_F_Stmts : aliased Bare_Stmt_List := No_Bare_Ada_Node; when Ada_Stmt => case Kind is when Ada_Composite_Stmt => case Kind is when Ada_Accept_Stmt_Range => Accept_Stmt_F_Name : aliased Bare_Identifier := No_Bare_Ada_Node; Accept_Stmt_F_Entry_Index_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Accept_Stmt_F_Params : aliased Bare_Entry_Completion_Formal_Params := No_Bare_Ada_Node; case Kind is when Ada_Accept_Stmt_With_Stmts_Range => Accept_Stmt_With_Stmts_F_Stmts : aliased Bare_Handled_Stmts := No_Bare_Ada_Node; Accept_Stmt_With_Stmts_F_End_Name : aliased Bare_End_Name := No_Bare_Ada_Node; when others => null; end case; when Ada_Base_Loop_Stmt => Base_Loop_Stmt_F_Spec : aliased Bare_Loop_Spec := No_Bare_Ada_Node; Base_Loop_Stmt_F_Stmts : aliased Bare_Stmt_List := No_Bare_Ada_Node; Base_Loop_Stmt_F_End_Name : aliased Bare_End_Name := No_Bare_Ada_Node; case Kind is when Ada_For_Loop_Stmt_Range => null; when Ada_Loop_Stmt_Range => null; when Ada_While_Loop_Stmt_Range => null; when others => null; end case; when Ada_Block_Stmt => case Kind is when Ada_Begin_Block_Range => Begin_Block_F_Stmts : aliased Bare_Handled_Stmts := No_Bare_Ada_Node; Begin_Block_F_End_Name : aliased Bare_End_Name := No_Bare_Ada_Node; when Ada_Decl_Block_Range => Decl_Block_F_Decls : aliased Bare_Declarative_Part := No_Bare_Ada_Node; Decl_Block_F_Stmts : aliased Bare_Handled_Stmts := No_Bare_Ada_Node; Decl_Block_F_End_Name : aliased Bare_End_Name := No_Bare_Ada_Node; when others => null; end case; when Ada_Case_Stmt_Range => Case_Stmt_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; Case_Stmt_F_Alternatives : aliased Bare_Case_Stmt_Alternative_List := No_Bare_Ada_Node; when Ada_Extended_Return_Stmt_Range => Extended_Return_Stmt_F_Decl : aliased Bare_Extended_Return_Stmt_Object_Decl := No_Bare_Ada_Node; Extended_Return_Stmt_F_Stmts : aliased Bare_Handled_Stmts := No_Bare_Ada_Node; when Ada_If_Stmt_Range => If_Stmt_F_Cond_Expr : aliased Bare_Expr := No_Bare_Ada_Node; If_Stmt_F_Then_Stmts : aliased Bare_Stmt_List := No_Bare_Ada_Node; If_Stmt_F_Alternatives : aliased Bare_Elsif_Stmt_Part_List := No_Bare_Ada_Node; If_Stmt_F_Else_Stmts : aliased Bare_Stmt_List := No_Bare_Ada_Node; when Ada_Named_Stmt_Range => Named_Stmt_F_Decl : aliased Bare_Named_Stmt_Decl := No_Bare_Ada_Node; Named_Stmt_F_Stmt : aliased Bare_Composite_Stmt := No_Bare_Ada_Node; when Ada_Select_Stmt_Range => Select_Stmt_F_Guards : aliased Bare_Select_When_Part_List := No_Bare_Ada_Node; Select_Stmt_F_Else_Stmts : aliased Bare_Stmt_List := No_Bare_Ada_Node; Select_Stmt_F_Abort_Stmts : aliased Bare_Stmt_List := No_Bare_Ada_Node; when others => null; end case; when Ada_Error_Stmt_Range => null; when Ada_Simple_Stmt => case Kind is when Ada_Abort_Stmt_Range => Abort_Stmt_F_Names : aliased Bare_Name_List := No_Bare_Ada_Node; when Ada_Assign_Stmt_Range => Assign_Stmt_F_Dest : aliased Bare_Name := No_Bare_Ada_Node; Assign_Stmt_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Call_Stmt_Range => Call_Stmt_F_Call : aliased Bare_Name := No_Bare_Ada_Node; when Ada_Delay_Stmt_Range => Delay_Stmt_F_Has_Until : aliased Bare_Until_Node := No_Bare_Ada_Node; Delay_Stmt_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Exit_Stmt_Range => Exit_Stmt_F_Loop_Name : aliased Bare_Name := No_Bare_Ada_Node; Exit_Stmt_F_Cond_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Goto_Stmt_Range => Goto_Stmt_F_Label_Name : aliased Bare_Name := No_Bare_Ada_Node; when Ada_Label_Range => Label_F_Decl : aliased Bare_Label_Decl := No_Bare_Ada_Node; when Ada_Null_Stmt_Range => null; when Ada_Raise_Stmt_Range => Raise_Stmt_F_Exception_Name : aliased Bare_Name := No_Bare_Ada_Node; Raise_Stmt_F_Error_Message : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Requeue_Stmt_Range => Requeue_Stmt_F_Call_Name : aliased Bare_Name := No_Bare_Ada_Node; Requeue_Stmt_F_Has_Abort : aliased Bare_Abort_Node := No_Bare_Ada_Node; when Ada_Return_Stmt_Range => Return_Stmt_F_Return_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Terminate_Alternative_Range => null; when others => null; end case; when others => null; end case; when Ada_Subp_Kind => case Kind is when Ada_Subp_Kind_Function_Range => null; when Ada_Subp_Kind_Procedure_Range => null; when others => null; end case; when Ada_Subunit_Range => Subunit_F_Name : aliased Bare_Name := No_Bare_Ada_Node; Subunit_F_Body : aliased Bare_Body_Node := No_Bare_Ada_Node; when Ada_Synchronized_Node => case Kind is when Ada_Synchronized_Absent_Range => null; when Ada_Synchronized_Present_Range => null; when others => null; end case; when Ada_Tagged_Node => case Kind is when Ada_Tagged_Absent_Range => null; when Ada_Tagged_Present_Range => null; when others => null; end case; when Ada_Task_Def_Range => Task_Def_F_Interfaces : aliased Bare_Parent_List := No_Bare_Ada_Node; Task_Def_F_Public_Part : aliased Bare_Public_Part := No_Bare_Ada_Node; Task_Def_F_Private_Part : aliased Bare_Private_Part := No_Bare_Ada_Node; Task_Def_F_End_Name : aliased Bare_End_Name := No_Bare_Ada_Node; when Ada_Type_Def => case Kind is when Ada_Access_Def => Access_Def_F_Has_Not_Null : aliased Bare_Not_Null := No_Bare_Ada_Node; case Kind is when Ada_Access_To_Subp_Def_Range => Access_To_Subp_Def_F_Has_Protected : aliased Bare_Protected_Node := No_Bare_Ada_Node; Access_To_Subp_Def_F_Subp_Spec : aliased Bare_Subp_Spec := No_Bare_Ada_Node; when Ada_Base_Type_Access_Def => case Kind is when Ada_Anonymous_Type_Access_Def_Range => Anonymous_Type_Access_Def_F_Type_Decl : aliased Bare_Base_Type_Decl := No_Bare_Ada_Node; when Ada_Type_Access_Def_Range => Type_Access_Def_F_Has_All : aliased Bare_All_Node := No_Bare_Ada_Node; Type_Access_Def_F_Has_Constant : aliased Bare_Constant_Node := No_Bare_Ada_Node; Type_Access_Def_F_Subtype_Indication : aliased Bare_Subtype_Indication := No_Bare_Ada_Node; when others => null; end case; when others => null; end case; when Ada_Array_Type_Def_Range => Array_Type_Def_F_Indices : aliased Bare_Array_Indices := No_Bare_Ada_Node; Array_Type_Def_F_Component_Type : aliased Bare_Component_Def := No_Bare_Ada_Node; when Ada_Derived_Type_Def_Range => Derived_Type_Def_F_Has_Abstract : aliased Bare_Abstract_Node := No_Bare_Ada_Node; Derived_Type_Def_F_Has_Limited : aliased Bare_Limited_Node := No_Bare_Ada_Node; Derived_Type_Def_F_Has_Synchronized : aliased Bare_Synchronized_Node := No_Bare_Ada_Node; Derived_Type_Def_F_Subtype_Indication : aliased Bare_Subtype_Indication := No_Bare_Ada_Node; Derived_Type_Def_F_Interfaces : aliased Bare_Parent_List := No_Bare_Ada_Node; Derived_Type_Def_F_Record_Extension : aliased Bare_Base_Record_Def := No_Bare_Ada_Node; Derived_Type_Def_F_Has_With_Private : aliased Bare_With_Private := No_Bare_Ada_Node; when Ada_Enum_Type_Def_Range => Enum_Type_Def_F_Enum_Literals : aliased Bare_Enum_Literal_Decl_List := No_Bare_Ada_Node; when Ada_Formal_Discrete_Type_Def_Range => null; when Ada_Interface_Type_Def_Range => Interface_Type_Def_F_Interface_Kind : aliased Bare_Interface_Kind := No_Bare_Ada_Node; Interface_Type_Def_F_Interfaces : aliased Bare_Parent_List := No_Bare_Ada_Node; when Ada_Mod_Int_Type_Def_Range => Mod_Int_Type_Def_F_Expr : aliased Bare_Expr := No_Bare_Ada_Node; when Ada_Private_Type_Def_Range => Private_Type_Def_F_Has_Abstract : aliased Bare_Abstract_Node := No_Bare_Ada_Node; Private_Type_Def_F_Has_Tagged : aliased Bare_Tagged_Node := No_Bare_Ada_Node; Private_Type_Def_F_Has_Limited : aliased Bare_Limited_Node := No_Bare_Ada_Node; when Ada_Real_Type_Def => case Kind is when Ada_Decimal_Fixed_Point_Def_Range => Decimal_Fixed_Point_Def_F_Delta : aliased Bare_Expr := No_Bare_Ada_Node; Decimal_Fixed_Point_Def_F_Digits : aliased Bare_Expr := No_Bare_Ada_Node; Decimal_Fixed_Point_Def_F_Range : aliased Bare_Range_Spec := No_Bare_Ada_Node; when Ada_Floating_Point_Def_Range => Floating_Point_Def_F_Num_Digits : aliased Bare_Expr := No_Bare_Ada_Node; Floating_Point_Def_F_Range : aliased Bare_Range_Spec := No_Bare_Ada_Node; when Ada_Ordinary_Fixed_Point_Def_Range => Ordinary_Fixed_Point_Def_F_Delta : aliased Bare_Expr := No_Bare_Ada_Node; Ordinary_Fixed_Point_Def_F_Range : aliased Bare_Range_Spec := No_Bare_Ada_Node; when others => null; end case; when Ada_Record_Type_Def_Range => Record_Type_Def_F_Has_Abstract : aliased Bare_Abstract_Node := No_Bare_Ada_Node; Record_Type_Def_F_Has_Tagged : aliased Bare_Tagged_Node := No_Bare_Ada_Node; Record_Type_Def_F_Has_Limited : aliased Bare_Limited_Node := No_Bare_Ada_Node; Record_Type_Def_F_Record_Def : aliased Bare_Base_Record_Def := No_Bare_Ada_Node; when Ada_Signed_Int_Type_Def_Range => Signed_Int_Type_Def_F_Range : aliased Bare_Range_Spec := No_Bare_Ada_Node; when others => null; end case; when Ada_Type_Expr => case Kind is when Ada_Anonymous_Type_Range => Anonymous_Type_F_Type_Decl : aliased Bare_Anonymous_Type_Decl := No_Bare_Ada_Node; when Ada_Enum_Lit_Synth_Type_Expr_Range => null; when Ada_Subtype_Indication_Range => Subtype_Indication_F_Has_Not_Null : aliased Bare_Not_Null := No_Bare_Ada_Node; Subtype_Indication_F_Name : aliased Bare_Name := No_Bare_Ada_Node; Subtype_Indication_F_Constraint : aliased Bare_Constraint := No_Bare_Ada_Node; case Kind is when Ada_Constrained_Subtype_Indication_Range => null; when Ada_Discrete_Subtype_Indication_Range => null; when others => null; end case; when others => null; end case; when Ada_Unconstrained_Array_Index_Range => Unconstrained_Array_Index_F_Subtype_Indication : aliased Bare_Subtype_Indication := No_Bare_Ada_Node; when Ada_Until_Node => case Kind is when Ada_Until_Absent_Range => null; when Ada_Until_Present_Range => null; when others => null; end case; when Ada_Use_Clause => case Kind is when Ada_Use_Package_Clause_Range => Use_Package_Clause_F_Packages : aliased Bare_Name_List := No_Bare_Ada_Node; when Ada_Use_Type_Clause_Range => Use_Type_Clause_F_Has_All : aliased Bare_All_Node := No_Bare_Ada_Node; Use_Type_Clause_F_Types : aliased Bare_Name_List := No_Bare_Ada_Node; when others => null; end case; when Ada_Variant_Range => Variant_F_Choices : aliased Bare_Alternatives_List := No_Bare_Ada_Node; Variant_F_Components : aliased Bare_Component_List := No_Bare_Ada_Node; when Ada_Variant_Part_Range => Variant_Part_F_Discr_Name : aliased Bare_Identifier := No_Bare_Ada_Node; Variant_Part_F_Variant : aliased Bare_Variant_List := No_Bare_Ada_Node; when Ada_With_Clause_Range => With_Clause_F_Has_Limited : aliased Bare_Limited_Node := No_Bare_Ada_Node; With_Clause_F_Has_Private : aliased Bare_Private_Node := No_Bare_Ada_Node; With_Clause_F_Packages : aliased Bare_Name_List := No_Bare_Ada_Node; when Ada_With_Private => case Kind is when Ada_With_Private_Absent_Range => null; when Ada_With_Private_Present_Range => null; when others => null; end case; when others => null; end case; end record; procedure Initialize (Self : Bare_Ada_Node; Kind : Ada_Node_Kind_Type; Unit : Internal_Unit; Token_Start_Index : Token_Index; Token_End_Index : Token_Index; Parent : Bare_Ada_Node := null; Self_Env : Lexical_Env := AST_Envs.Empty_Env); -- Helper for parsers, to initialize a freshly allocated node type PLE_Unit_State is record Named_Envs_Needing_Update : NED_Maps.Map; -- Set of named env entries whose Env_With_Precedence needs to be -- updated. end record; -- State of PLE on a specific unit type PLE_Unit_State_Access is access all PLE_Unit_State; type PLE_Node_State is record Unit_State : PLE_Unit_State_Access; -- State of PLE on the unit that owns this node Current_Env : Lexical_Env; -- Current environment when processing the node: initially inheritted -- from the Current_Env of the parent node (or Root_Scope on the root -- node), SetInitialEnv actions can change this. -- -- Other environment actions such as AddEnv or AddToEnv can use this. Current_NED : Named_Env_Descriptor_Access; -- If the current environment was looked up by name, reference to the -- named environment descriptor. Null otherwise. end record; -- State of PLE on a specific node procedure Use_Direct_Env (State : in out PLE_Node_State; Env : Lexical_Env); -- Change State so that the current environment is Env, and record that it -- was *not* looked up by name. procedure Use_Named_Env (State : in out PLE_Node_State; Context : Internal_Context; Name : Symbol_Type); -- Change State so that the current environment comes from the named -- environment looked up with Name. procedure Set_Initial_Env (Self : Bare_Ada_Node; State : in out PLE_Node_State; Env : Internal_DesignatedEnv; DSL_Location : String); -- Helper for ``Populate_Lexical_Env``: fetch the initial environment for -- ``Self`` according to ``Env`` and update ``State`` accordingly. procedure Add_To_Env (Self : Bare_Ada_Node; State : PLE_Node_State; Key : Symbol_Type; Value : Bare_Ada_Node; MD : Internal_Metadata; Resolver : Entity_Resolver; Dest_Env : Internal_DesignatedEnv; DSL_Location : String); -- Helper for Populate_Lexical_Env: insert the Key/Value/MD/Resolver entry -- in the appropriate lexical env. -- -- The destination environment is: -- -- * If Dest_Env_Name is not null, this is the corresponding named -- environment. -- -- * Otherwise, use Dest_Env_Fallback if is not the empty environment. -- -- * Finally, use State's current environment. -- -- If the destination environment is foreign and not fetched from its name -- while DSL_Location is not empty, raise a Property_Error. procedure Ref_Env (Self : Bare_Ada_Node; Dest_Env : Lexical_Env; Ref_Env_Nodes : in out Bare_Ada_Node_Array_Access; Resolver : Lexical_Env_Resolver; Kind : Ref_Kind; Cats : Ref_Categories; Shed_Rebindings : Boolean); -- Helper for Populate_Lexical_Env: add referenced environments to -- Dest_Env. Calling this takes an ownership share for Ref_Env_Nodes. procedure Add_Env (Self : Bare_Ada_Node; State : in out PLE_Node_State; No_Parent : Boolean; Transitive_Parent : Boolean; Names : in out Symbol_Type_Array_Access); -- Helper for Populate_Lexical_Env: create a new environment for Self, and -- update State accordingly. -- -- State and No_Parent participate to the computation of the parent for -- this new environment. Transitive_Parent is directly forwarded to the -- lexical environment constructor. -- -- If Names is not null, this also registers the new environment as a named -- env for all the given names. For PLE code brevity, Add_Env takes care of -- freeing Names before returning. procedure Pre_Env_Actions (Self : Bare_Ada_Node; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); -- Internal procedure that will execute all necessary lexical env actions -- for Node. This is meant to be called by Populate_Lexical_Env, and not by -- the user. procedure Post_Env_Actions (Self : Bare_Ada_Node; State : in out PLE_Node_State); -- Internal procedure that will execute all post add to env actions for -- Node. This is meant to be called by Populate_Lexical_Env. function Get_Symbol (Node : Bare_Ada_Node) return Symbol_Type with Pre => Node = null or else Is_Token_Node (Node); -- Assuming Node is a token node, return the corresponding symbol for the -- token it contains. function Image (Self : Symbol_Type) return Character_Type_Array_Access; -- Transform a Symbol into an internal String function Text (Node : Bare_Ada_Node) return Text_Type; -- Retun the fragment of text from which Node was parsed ------------------------------ -- Root AST node properties -- ------------------------------ ----------------------- -- Generic list type -- ----------------------- function Length (Node : Bare_Ada_List) return Natural; function Children (Node : Bare_Ada_Node) return Bare_Ada_Node_Array_Access; -- Return an array containing all the children of Node. -- This is an alternative to the Child/Children_Count pair, useful if you -- want the convenience of ada arrays, and you don't care about the small -- performance hit of creating an array. function Item (Node : Bare_Ada_List; Index : Positive) return Bare_Ada_Node renames Child; function Get (Node : Bare_Ada_List; Index : Integer; Or_Null : Boolean := False) return Bare_Ada_Node; -- When Index is positive, return the Index'th element in T. Otherwise, -- return the element at index (Size - Index - 1). Index is zero-based. procedure Free_User_Fields (Node : Bare_Ada_Node); -- Free resources associated to user fields in ``Node`` procedure Set_Parents (Node, Parent : Bare_Ada_Node); -- Set Node.Parent to Parent, and initialize recursively the parent of all -- child nodes. procedure Destroy (Node : Bare_Ada_Node); -- Free the resources allocated to this node and all its children -------------------------------------- -- Environments handling (internal) -- -------------------------------------- function Create_Static_Lexical_Env (Parent : Lexical_Env; Node : Bare_Ada_Node; Transitive_Parent : Boolean := False) return Lexical_Env; -- Wrapper around AST_Envs.Create_Lexical_Env. Create the environment and, -- if Node is not null, register the result for destruction in Node's -- analysis unit. function Get (A : AST_Envs.Entity_Array; Index : Integer) return Entity; -- Simple getter that raises Property_Error on out-of-bound accesses. -- Useful for code generation. function Group (Envs : Lexical_Env_Array_Access; Env_Md : Internal_Metadata := No_Metadata) return Lexical_Env; -- Convenience wrapper for uniform types handling in code generation package Bare_Ada_Node_Vectors is new Langkit_Support.Vectors (Bare_Ada_Node); function Is_Visible_From (Referenced_Env, Base_Env : Lexical_Env) return Boolean; -- Return whether the unit that Referenced_Env belongs to is visible from -- the unit that Base_Env belongs to. If at least one of these two lexical -- environments does not belong to a particular analysis unit, this raises -- a Property_Error. function Populate_Lexical_Env (Node : Bare_Ada_Node) return Boolean; -- Populate the lexical environment for node and all its children. Return -- whether a Property_Error error occurred in the process. ----------------------------------- -- Lexical utilities (internals) -- ----------------------------------- function Token (Node : Bare_Ada_Node; Index : Token_Index) return Token_Reference; -- Helper for properties. This is used to turn token indexes as stored in -- AST nodes into Token_Reference values. function Stored_Token (Node : Bare_Ada_Node; Token : Token_Reference) return Token_Index; -- Helper for properties. This is used to turn a Token_Reference value into -- a Token_Index value that can be stored as a field in Node. This raises a -- Property_Error if Node and Token don't belong to the same analysis unit -- or if Token is actually a Trivia. type Bare_Child_Record (Kind : Child_Or_Trivia := Child) is record case Kind is when Child => Node : Bare_Ada_Node; when Trivia => Trivia : Token_Reference; end case; end record; -- Variant that holds either an node or a token type Bare_Children_Array is array (Positive range <>) of Bare_Child_Record; function Children_And_Trivia (Node : Bare_Ada_Node) return Bare_Children_Array; -- Implementation for Analysis.Children_And_Trivia function Ada_Node_P_Declarative_Scope (Node : Bare_Ada_Node ) return Bare_Declarative_Part ; -- Return the scope of definition of this basic declaration. function Ada_Node_P_Owning_Unit_Kind (Node : Bare_Ada_Node ) return Analysis_Unit_Kind ; -- Return the kind of the compilation unit owning this node. function Ada_Node_P_Withed_Unit_Helper (Node : Bare_Ada_Node ; Unit_Name : Bare_Name ) return Bare_Compilation_Unit ; -- Static method helper. Fetch the unit designated by unit_name. Return the -- compilation unit node. -- -- This is designed in a way that will emit a -- ``unit_requested(not_found_is_error=true, ...)`` callback when not finding -- the unit is supposed to be an error within Ada semantics. function Dispatcher_Ada_Node_P_Custom_Id_Text (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; -- Custom Unique identifying text used to recognize this node. Not applicable -- to all nodes, but on AdaNode because it spans more than one hierarchy of -- node types. function Ada_Node_P_Is_Contract_Aspect (Node : Bare_Ada_Node ; Name : Symbol_Type ) return Boolean ; function Ada_Node_P_In_Contract (Node : Bare_Ada_Node ) return Boolean ; function Ada_Node_P_In_Aspect (Node : Bare_Ada_Node ; Name : Symbol_Type ) return Boolean ; -- Return whether Self is contained by an aspect whose name is ``name``. function Ada_Node_P_Empty_Env (Node : Bare_Ada_Node ) return Lexical_Env ; function Ada_Node_P_Is_Not_Null (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return True iff this node is not null. function Ada_Node_P_Eval_Discrete_Range (Node : Bare_Ada_Node ; Dr : Internal_Discrete_Range ) return Internal_Eval_Discrete_Range ; -- Static method. Evaluate the bounds of ``dr``. function Ada_Node_P_String_Join (Node : Bare_Ada_Node ; Strns : Character_Type_Array_Access_Array_Access ; Sep : Character_Type_Array_Access ) return Character_Type_Array_Access ; -- Static method. Return the array of strings joined by separator ``sep``. function Ada_Node_P_Sym_Join (Node : Bare_Ada_Node ; Syms : Symbol_Type_Array_Access ; Sep : Character_Type_Array_Access ) return Character_Type_Array_Access ; -- Static method. Return the array of symbols joined by separator ``sep``. function Ada_Node_P_Enclosing_Compilation_Unit (Node : Bare_Ada_Node ) return Bare_Compilation_Unit ; -- Return the compilation unit containing this node. -- -- .. note:: This returns the ``CompilationUnit`` node, which is different -- from the ``AnalysisUnit``. In particular, an analysis unit can contain -- multiple compilation units. function Ada_Node_P_Is_Children_Env (Node : Bare_Ada_Node ; Parent : Lexical_Env ; Current_Env : Lexical_Env ) return Boolean ; -- Static property. Will return True if current_env is a children of parent. function Ada_Node_P_Trigger_Access_Entity (Node : Bare_Ada_Node ; Val : Boolean ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity ; -- Return Self as an entity, but with the ``access_entity`` field set to val. -- Helper for the 'Unrestricted_Access machinery. function Ada_Node_P_Without_Md (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity ; -- Return Entity with an empty metadata field. function Ada_Node_P_Get_Uninstantiated_Node (Node : Bare_Ada_Node ) return Internal_Entity ; -- Assuming this node comes from an instantiated generic declaration, return -- its non-instantiated counterpart lying in the generic declaration. function Dispatcher_Ada_Node_P_Complete (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Completion_Item_Iterator_Access ; -- Return possible completions at this point in the file. function Ada_Node_P_Valid_Keywords (Node : Bare_Ada_Node ) return Symbol_Type_Array_Access ; -- Return the list of keywords that are valid at this point in the file. -- -- .. note:: This is work in progress. It will return all keywords for now, -- without looking at the context. function Ada_Node_P_Generic_Instantiations (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Generic_Instantiation_Array_Access ; -- Return the potentially empty list of generic package/subprogram -- instantiations that led to the creation of this entity. Outer-most -- instantiations appear last. function Ada_Node_P_Generic_Instantiations_Internal (Node : Bare_Ada_Node ; R : Env_Rebindings ) return Internal_Entity_Generic_Instantiation_Array_Access ; function Ada_Node_P_Logic_Val (Node : Bare_Ada_Node ; From_Node : Internal_Entity ; Lvar : Logic_Var ) return Internal_Logic_Val_Result ; function Ada_Node_P_Semantic_Parent_Helper (Node : Bare_Ada_Node ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity ; function Ada_Node_P_Semantic_Parent (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity ; -- Return the semantic parent for this node, if applicable, null otherwise. -- -- .. note:: A node lying outside of a library item's declaration or subunit's -- body does not have a parent environment, meaning that this property will -- return null. function Ada_Node_P_Parent_Basic_Decl (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the parent basic decl for this node, if applicable, null otherwise. -- -- .. note:: If the parent BasicDecl of the given node is a generic -- declaration, this call will return the instantiation from which the node -- was retrieved instead, if any. -- -- .. note:: When called on a subunit's body, this property will return the -- its corresponding body stub. -- -- .. note:: When called on a node lying outside of a library item's -- declaration or subunit's body this property will return null. function Dispatcher_Ada_Node_P_Immediate_Declarative_Region (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Return the immediate declarative region (RM 8.1) corresponding to this -- node, that is, the concatenation of the declarative parts of itself and all -- its completion. This does not include the declarative regions of the -- enclosed declarations. -- -- This is mainly used to restrict the scope in which to search for the -- previous part of a declaration. function Ada_Node_P_Designated_Compilation_Unit (Node : Bare_Ada_Node ; Name : Symbol_Type_Array_Access ; Kind : Analysis_Unit_Kind ; Load_If_Needed : Boolean := True ; Not_Found_Is_Error : Boolean := True ; Process_Parents : Boolean := True ) return Bare_Compilation_Unit ; -- Fetch the compilation unit designated by the given name defined in an -- analysis unit of the given kind. function Ada_Node_P_Compilation_Unit_With_Name (Node : Bare_Ada_Node ; Unit : Internal_Unit ; Name : Symbol_Type_Array_Access ) return Bare_Compilation_Unit ; -- Helper for ``designated_compilation_unit``. From a given analysis unit, -- that might contain several compilation units, and a name, return the -- corresponding compilation unit. function Ada_Node_P_Get_Unit_Root_Decl (Node : Bare_Ada_Node ; Name : Symbol_Type_Array_Access ; Kind : Analysis_Unit_Kind ; Load_If_Needed : Boolean := True ; Not_Found_Is_Error : Boolean := True ; Process_Parents : Boolean := True ) return Bare_Basic_Decl ; -- If the corresponding analysis unit is loaded, return the root decl node for -- the given analysis unit ``kind`` and correpsonding to the name ``name``. If -- it's not loaded, return none. function Dispatcher_Ada_Node_P_Xref_Equation (Node : Bare_Ada_Node ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- This is the base property for constructing equations that, when solved, -- will resolve names and types for every sub expression of the expression you -- call it on. Note that if you call that on any expression, in some context -- it might lack full information and return multiple solutions. If you want -- completely precise resolution, you must call that on the outermost node -- that supports xref_equation. function Dispatcher_Ada_Node_P_Xref_Stop_Resolution (Node : Bare_Ada_Node ) return Boolean ; function Ada_Node_P_Stop_Resolution_Equation (Node : Bare_Ada_Node ) return Logic_Equation ; function Ada_Node_P_Sub_Equation (Node : Bare_Ada_Node ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Wrapper for xref_equation, meant to be used inside of xref_equation when -- you want to get the sub equation of a sub expression. It is used to change -- the behavior when xref_equation is called from another xref_equation call, -- or from the top level, so that we can do resolution in several steps. function Ada_Node_P_Resolve_Children_Names (Node : Bare_Ada_Node ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Internal helper for resolve_names, implementing the recursive logic needed -- to resolve names across xref_stop_resolution boundaries. function Ada_Node_P_Resolve_Names_Internal (Node : Bare_Ada_Node ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Resolves names for this node up to xref_entry_point boundaries. function Ada_Node_P_Resolve_Names_Internal_With_Eq (Node : Bare_Ada_Node ; Additional_Equation : Logic_Equation ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Resolves names in this node with an additional constraint given by -- ``additional_equation``, up to xref_entry_point boundaries. function Dispatcher_Ada_Node_P_Xref_Entry_Point (Node : Bare_Ada_Node ) return Boolean ; -- Designates entities that are entry point for the xref solving -- infrastructure. If this returns true, then resolve_names can be called on -- it. -- -- .. note:: For convenience, and unlike what is defined in the ARM wrt. -- complete contexts for name resolution, ``xref_entry_points`` can be -- nested. function Ada_Node_P_Resolve_Names (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- This will resolve names for this node. If the operation is successful, then -- type_var and ref_var will be bound on appropriate subnodes of the -- statement. function Ada_Node_P_Resolve_Names_From_Closest_Entry_Point (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Resolve names from the closest entry point up to this node. Note that -- unlike ``resolve_names``, this will *not* trigger resolution of every node -- with stop_resolution that lie in the sub-tree formed by the closest entry -- point. It will only resolve those that are in the path to resolving Self. -- Consider for example the following entry point: -- -- .. code:: -- -- R := (A, B); -- -- Since aggregate association nodes have ``stop_resolution`` set to True, -- calling ``resolve_names_from_closest_entry_point`` on ``B`` will resolve -- nodes ``R`` and ``B`` but not ``A``, because ``A`` does not lie on the path -- to ``B``. -- -- This can be useful for resolving aggregates of variant records, because -- resolution of a component association can safely call the resolution of a -- discriminant association without triggering an infinite recursion, as both -- are on different "paths". function Ada_Node_P_Parent_Unit_Env_Helper (Node : Bare_Ada_Node ; Unit : Internal_Unit ; Env : Lexical_Env ) return Lexical_Env ; function Ada_Node_P_Parent_Unit_Env (Node : Bare_Ada_Node ; Env : Lexical_Env ) return Lexical_Env ; -- Given env's AnalysisUnit, return the first env that has a different -- analysis unit in the env parent chain. function Ada_Node_P_Std (Node : Bare_Ada_Node ) return Internal_Entity_Basic_Decl ; -- Retrieves the package corresponding to the Standard unit. Used to access -- standard types. function Ada_Node_P_Std_Env (Node : Bare_Ada_Node ) return Lexical_Env ; -- Get the children env of the Standard package. function Ada_Node_P_Std_Entity (Node : Bare_Ada_Node ; Sym : Symbol_Type ) return Internal_Entity ; -- Static property. Return an entity from the standard package with name -- `sym`. function Ada_Node_P_Std_Entity_Implem (Node : Bare_Ada_Node ; Sym : Symbol_Type ) return Internal_Entity ; function Ada_Node_P_Bool_Type (Node : Bare_Ada_Node ) return Internal_Entity ; -- Static method. Return the standard Boolean type. function Ada_Node_P_Int_Type (Node : Bare_Ada_Node ) return Internal_Entity ; -- Static method. Return the standard Integer type. function Ada_Node_P_Universal_Int_Type (Node : Bare_Ada_Node ) return Internal_Entity ; -- Static method. Return the standard Universal Integer type. function Ada_Node_P_Universal_Real_Type (Node : Bare_Ada_Node ) return Internal_Entity ; -- Static method. Return the standard Universal Real type. function Ada_Node_P_Exc_Id_Type (Node : Bare_Ada_Node ) return Internal_Entity_Base_Type_Decl ; -- Return the type Ada.Exceptions.Exception_Id. function Ada_Node_P_Task_Id_Type (Node : Bare_Ada_Node ) return Internal_Entity_Base_Type_Decl ; -- Return the type Ada.Task_Identification.Task_Id. function Ada_Node_P_Has_With_Visibility (Node : Bare_Ada_Node ; Refd_Unit : Internal_Unit ) return Boolean ; -- Return whether Self's unit has ``with visibility`` on ``refd_unit``. -- -- In other words, whether Self's unit has a WITH clause on ``refd_unit``, or -- if its spec, or one of its parent specs has one. function Ada_Node_P_Has_Visibility (Node : Bare_Ada_Node ; Other_Entity : Internal_Entity ) return Boolean ; function Ada_Node_P_Resolve_Generic_Actual (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity ; -- Helper property to resolve the actuals of generic instantiations. function Ada_Node_P_Top_Level_Use_Package_Clauses (Node : Bare_Ada_Node ) return Bare_Ada_Node_Array_Access ; -- If Self is a library item or a subunit, return a flat list of all names for -- top-level UsePackageClause nodes. See UsePackageClause.env_spec.ref_envs -- for more details. function Ada_Node_P_Top_Level_Use_Type_Clauses (Node : Bare_Ada_Node ) return Bare_Ada_Node_Array_Access ; -- If Self is a library item or a subunit, return a flat list of all names for -- top-level UseTypeClause nodes. See UseTypeClause.env_spec for more details. function Ada_Node_P_Top_Level_Use_Clauses (Node : Bare_Ada_Node ) return Bare_Use_Clause_Array_Access ; -- If Self is a library item or a subunit, return a flat list of all names for -- top-level UseClause nodes. function Ada_Node_P_Top_Level_With_Package_Clauses (Node : Bare_Ada_Node ) return Bare_Name_Array_Access ; -- Return a flat list of all package names that are with'ed by top-level -- WithClause nodes of the compilation unit this node lies in. function Ada_Node_P_Use_Clauses_In_Spec_Of_Subp_Body (Node : Bare_Ada_Node ) return Lexical_Env ; -- If Self is a library-level SubpBody, fetch the environments USE'd in its -- declaration. function Ada_Node_P_Use_Clauses_In_Generic_Formal_Part (Node : Bare_Ada_Node ) return Lexical_Env ; -- Assuming Self is a generic entity's body that is nested (not a library -- item), return the grouped lexical environment containing all the -- environments that are referred by use clauses inside formal part of its -- generic declaration. Return an empty environment if this is not the body of -- a generic decl. function Ada_Node_P_Nested_Generic_Formal_Part (Node : Bare_Ada_Node ) return Lexical_Env ; -- Assuming Self is a generic entity's body that is nested (not a library -- item), return the lexical environment for the corresponding -- GenericPackageDecl (or GenericSubpDecl) node. Return an empty environment -- in all other cases. -- -- This is a helper for generic formals visibility in generic bodies. See the -- use in the child_unit macro. -- -- The following property is evaluated each time we make a recursive lexical -- environment lookup on a child unit. As it does itself a lot of lookups, -- memoizing it is very important. function Ada_Node_P_Is_Package (Node : Bare_Ada_Node ) return Boolean ; -- Property helper to determine if an entity is a package or not. function Ada_Node_P_Default_Initial_Env (Node : Bare_Ada_Node ) return Lexical_Env ; -- Provide the default lexical environment to use in EnvSpec's initial_env. function Ada_Node_P_Top_Level_Decl (Node : Bare_Ada_Node ; Unit : Internal_Unit ) return Bare_Basic_Decl ; -- Static method. Get the top-level decl in ``unit``. This is the body of a -- Subunit, or the item of a ``LibraryItem``. function Ada_Node_P_Unpack_Formals (Node : Bare_Ada_Node ; Formal_Params : Internal_Entity_Base_Formal_Param_Decl_Array_Access ) return Internal_Single_Formal_Array_Access ; -- Static method. Couples (identifier, param spec) for all parameters. function Ada_Node_P_Unpack_Formals_Impl (Node : Bare_Ada_Node ; Formal_Params : Internal_Entity_Base_Formal_Param_Decl_Array_Access ) return Internal_Single_Formal_Array_Access ; function Ada_Node_P_Match_Formals (Node : Bare_Ada_Node ; Formal_Params : Internal_Entity_Base_Formal_Param_Decl_Array_Access ; Params : Internal_Entity_Assoc_List ; Is_Dottable_Subp : Boolean ) return Internal_Param_Match_Array_Access ; -- Static method. For each ParamAssoc in a AssocList, return whether we could -- find a matching formal in Self, and whether this formal is optional (i.e. -- has a default value). function Ada_Node_P_Choice_Match (Node : Bare_Ada_Node ; Value : Big_Integer_Type ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Assuming that self is a choice expression (such as what can appear in an -- alternative of a case statement or in the RHS of a membership expression, -- this property returns whether the given value satisfies it. -- -- .. ATTENTION:: This is an experimental feature, so even if it is exposed to -- allow experiments, it is totally unsupported and the API and behavior -- are very likely to change in the future. function Ada_Node_P_Gnat_Xref (Node : Bare_Ada_Node ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name ; -- Return a cross reference from this name to a defining identifier, trying to -- mimic GNAT's xrefs as much as possible. function Ada_Node_P_Env_Get_Real_From_Node (Node : Bare_Ada_Node ; From_Node : Bare_Ada_Node ) return Bare_Ada_Node ; -- Static property. Finds the closest BasicSubpDecl / GenericInstantiation. Is -- used by env_get and env_get_first wrappers to refine from_node. The reason -- is that inside a declaration named D, one can refer to previous -- declarations named D. But an env lookup from a node inside D would return -- that D itself, not previous declarations. function Ada_Node_P_Entity_No_Md (Node : Bare_Ada_Node ; N : Bare_Ada_Node ; Rebindings : Env_Rebindings ; From_Rebound : Boolean ) return Internal_Entity ; -- Static property. Create an entity from the arguments with a null metadata. function Ada_Node_P_Bool_Bind (Node : Bare_Ada_Node ; Type_Var : Logic_Var ; Origin : Bare_Ada_Node ) return Logic_Equation ; -- Static property. Return a logic bind of ``type_var`` match the boolean -- type. function Ada_Node_P_Env_Mappings (Node : Bare_Ada_Node ; Defining_Names : Bare_Defining_Name_List ; Value : Bare_Ada_Node ) return Internal_Env_Assoc_Array_Access ; -- Static method. Create an env mapping array from a list of BaseId to be used -- as keys, and a node to be used as value in the mappings. function Ada_Node_P_Type_Bind_Val (Node : Bare_Ada_Node ; Left : Logic_Var ; Right : Internal_Entity ; Origin : Bare_Ada_Node ) return Logic_Equation ; function Ada_Node_P_Type_Bind_Var (Node : Bare_Ada_Node ; Left : Logic_Var ; Right : Logic_Var ; Origin : Bare_Ada_Node ) return Logic_Equation ; function Ada_Node_P_Comp_Bind (Node : Bare_Ada_Node ; Left : Logic_Var ; Right : Logic_Var ; Origin : Bare_Ada_Node ) return Logic_Equation ; function Ada_Node_P_Universal_Int_Bind (Node : Bare_Ada_Node ; Type_Var : Logic_Var ; Origin : Bare_Ada_Node ) return Logic_Equation ; -- Static method. Return an equation that will bind type_var to any integer -- value, corresponding to the notion of universal_integer in the Ada RM. function Ada_Node_P_Universal_Real_Bind (Node : Bare_Ada_Node ; Type_Var : Logic_Var ; Origin : Bare_Ada_Node ) return Logic_Equation ; -- Static method. Return an equation that will bind type_var to any real -- value, corresponding to the notion of universal_real in the Ada RM. function Ada_Node_P_Origin_Node (Node : Bare_Ada_Node ) return Bare_Ada_Node ; -- Return a null node iff we are in the definition of an aspect clause where -- sequential lookup needs to be deactivated. Return Self otherwise. function Ada_Node_P_Env_Hook (Node : Bare_Ada_Node ) return Boolean ; -- Hook for the EnvSpec of units. -- -- Return value is not significant: the only purpose of this property lies in -- its side effects. function Ada_Node_P_Env_Get (Node : Bare_Ada_Node ; Env : Lexical_Env ; Symbol : Symbol_Type ; Lookup : Lookup_Kind := Recursive ; From_Node : Bare_Ada_Node := No_Bare_Ada_Node ; Categories : Ref_Categories := (Inherited_Primitives => True, Nocat => True) ) return Internal_Entity_Array_Access ; -- Wrapper for ``env.get``. Refine ``from_node`` so that it starts from the -- closest ``BasicSubpDecl``/``GenericInstantiation``. (see -- ``AdaNode.env_get_real_from_node``). function Ada_Node_P_Env_Get_First (Node : Bare_Ada_Node ; Env : Lexical_Env ; Symbol : Symbol_Type ; Lookup : Lookup_Kind := Recursive ; From_Node : Bare_Ada_Node := No_Bare_Ada_Node ; Categories : Ref_Categories := (Inherited_Primitives => True, Nocat => True) ) return Internal_Entity ; -- Wrapper for ``env.get_first``. Refine ``from_node`` so that it starts from -- the closest ``BasicSubpDecl``/``GenericInstantiation``. (see -- ``AdaNode.env_get_real_from_node``). function Node_Env (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- For nodes that introduce a new environment, return the parent lexical -- environment. Return the "inherited" environment otherwise. function Children_Env (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- For nodes that introduce a new environment, return it. Return the -- "inherited" environment otherwise. function Parent (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity ; -- Return the syntactic parent for this node. Return null for the root node. function Parents (Node : Bare_Ada_Node ; With_Self : Boolean := True ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; -- Return an array that contains the lexical parents, this node included iff -- ``with_self`` is True. Nearer parents are first in the list. function Children (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; -- Return an array that contains the direct lexical children. -- -- .. warning:: This constructs a whole array, and as such is much less -- efficient than calling the :ada:ref:`Child` built-in. function Token_Start (Node : Bare_Ada_Node ) return Token_Reference ; -- Return the first token used to parse this node. function Token_End (Node : Bare_Ada_Node ) return Token_Reference ; -- Return the last token used to parse this node. function Child_Index (Node : Bare_Ada_Node ) return Integer ; -- Return the 0-based index for Node in its parent's children. function Previous_Sibling (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity ; -- Return the node's previous sibling, or null if there is no such sibling. function Next_Sibling (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity ; -- Return the node's next sibling, or null if there is no such sibling. function Unit (Node : Bare_Ada_Node ) return Internal_Unit ; -- Return the analysis unit owning this node. function Is_Ghost (Node : Bare_Ada_Node ) return Boolean ; -- Return whether the node is a ghost. -- -- Unlike regular nodes, ghost nodes cover no token in the input source: they -- are logically located instead between two tokens. The "token_first" of all -- ghost nodes is the token right after this logical position, while they have -- no "token_last". function Text (Node : Bare_Ada_Node ) return Character_Type_Array_Access ; -- Return the text corresponding to this node. Private property (for internal -- DSL use). function Full_Sloc_Image (Node : Bare_Ada_Node ) return Character_Type_Array_Access ; -- Return a string containing the filename + the sloc in GNU conformant -- format. Useful to create diagnostics from a node. function Ada_Node_P_Custom_Id_Text (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; -- Custom Unique identifying text used to recognize this node. Not applicable -- to all nodes, but on AdaNode because it spans more than one hierarchy of -- node types. function Ada_Node_P_Complete (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Completion_Item_Iterator_Access ; -- Return possible completions at this point in the file. function Ada_Node_P_Immediate_Declarative_Region (Node : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Return the immediate declarative region (RM 8.1) corresponding to this -- node, that is, the concatenation of the declarative parts of itself and all -- its completion. This does not include the declarative regions of the -- enclosed declarations. -- -- This is mainly used to restrict the scope in which to search for the -- previous part of a declaration. function Ada_Node_P_Xref_Equation (Node : Bare_Ada_Node ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- This is the base property for constructing equations that, when solved, -- will resolve names and types for every sub expression of the expression you -- call it on. Note that if you call that on any expression, in some context -- it might lack full information and return multiple solutions. If you want -- completely precise resolution, you must call that on the outermost node -- that supports xref_equation. function Ada_Node_P_Xref_Stop_Resolution (Node : Bare_Ada_Node ) return Boolean ; function Ada_Node_P_Xref_Entry_Point (Node : Bare_Ada_Node ) return Boolean ; -- Designates entities that are entry point for the xref solving -- infrastructure. If this returns true, then resolve_names can be called on -- it. -- -- .. note:: For convenience, and unlike what is defined in the ARM wrt. -- complete contexts for name resolution, ``xref_entry_points`` can be -- nested. function Dispatcher_Abort_Node_P_As_Bool (Node : Bare_Abort_Node ) return Boolean ; -- Return whether this is an instance of AbortPresent function Abort_Absent_P_As_Bool (Node : Bare_Abort_Absent ) return Boolean ; function Abort_Present_P_As_Bool (Node : Bare_Abort_Present ) return Boolean ; function Dispatcher_Abstract_Node_P_As_Bool (Node : Bare_Abstract_Node ) return Boolean ; -- Return whether this is an instance of AbstractPresent function Abstract_Absent_P_As_Bool (Node : Bare_Abstract_Absent ) return Boolean ; function Abstract_Present_P_As_Bool (Node : Bare_Abstract_Present ) return Boolean ; function Assoc_List_P_Unpacked_Params (Node : Bare_Assoc_List ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Single_Actual_Array_Access ; -- Given the list of ParamAssoc, that can in certain case designate several -- actual parameters at once, create an unpacked list of SingleActual -- instances. function Assoc_List_P_Zip_With_Params (Node : Bare_Assoc_List ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Param_Actual_Array_Access ; -- Returns an array of pairs, associating formal parameters to actual -- expressions. The formals to match are retrieved by resolving the call which -- this AssocList represents the actuals of. function Dispatcher_Aliased_Node_P_As_Bool (Node : Bare_Aliased_Node ) return Boolean ; -- Return whether this is an instance of AliasedPresent function Aliased_Absent_P_As_Bool (Node : Bare_Aliased_Absent ) return Boolean ; function Aliased_Present_P_As_Bool (Node : Bare_Aliased_Present ) return Boolean ; function Dispatcher_All_Node_P_As_Bool (Node : Bare_All_Node ) return Boolean ; -- Return whether this is an instance of AllPresent function All_Absent_P_As_Bool (Node : Bare_All_Absent ) return Boolean ; function All_Present_P_As_Bool (Node : Bare_All_Present ) return Boolean ; function Dispatcher_Array_Indices_P_Ndims (Node : Bare_Array_Indices ) return Integer ; -- Number of dimensions described in this node. function Dispatcher_Array_Indices_P_Constrain_Index_Expr (Node : Bare_Array_Indices ; Index_Expr : Internal_Entity_Expr ; Dim : Integer ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Add a constraint on an expression passed as the index of an array access -- expression. -- -- For example:: -- -- type A is array (Integer range 1 .. 10) of Integer; -- -- A_Inst : A; -- -- A_Inst (2); -- ^ Will add constraint on lit that it needs to be of -- type -- Integer. function Dispatcher_Array_Indices_P_Index_Type (Node : Bare_Array_Indices ; Dim : Integer ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Dispatcher_Array_Indices_P_Is_Static (Node : Bare_Array_Indices ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return True iff all index types are static. procedure Initialize_Fields_For_Constrained_Array_Indices (Self : Bare_Constrained_Array_Indices ; Constrained_Array_Indices_F_List : Bare_Constraint_List ); function Constrained_Array_Indices_F_List (Node : Bare_Constrained_Array_Indices) return Bare_Constraint_List; function Constrained_Array_Indices_P_Ndims (Node : Bare_Constrained_Array_Indices ) return Integer ; function Constrained_Array_Indices_P_Constrain_Index_Expr (Node : Bare_Constrained_Array_Indices ; Index_Expr : Internal_Entity_Expr ; Dim : Integer ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Constrained_Array_Indices_P_Xref_Equation (Node : Bare_Constrained_Array_Indices ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Constrained_Array_Indices_P_Index_Type (Node : Bare_Constrained_Array_Indices ; Dim : Integer ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Constrained_Array_Indices_P_Is_Static (Node : Bare_Constrained_Array_Indices ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; procedure Initialize_Fields_For_Unconstrained_Array_Indices (Self : Bare_Unconstrained_Array_Indices ; Unconstrained_Array_Indices_F_Types : Bare_Unconstrained_Array_Index_List ); function Unconstrained_Array_Indices_F_Types (Node : Bare_Unconstrained_Array_Indices) return Bare_Unconstrained_Array_Index_List; function Unconstrained_Array_Indices_P_Ndims (Node : Bare_Unconstrained_Array_Indices ) return Integer ; function Unconstrained_Array_Indices_P_Constrain_Index_Expr (Node : Bare_Unconstrained_Array_Indices ; Index_Expr : Internal_Entity_Expr ; Dim : Integer ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Unconstrained_Array_Indices_P_Index_Type (Node : Bare_Unconstrained_Array_Indices ; Dim : Integer ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Unconstrained_Array_Indices_P_Xref_Equation (Node : Bare_Unconstrained_Array_Indices ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Unconstrained_Array_Indices_P_Is_Static (Node : Bare_Unconstrained_Array_Indices ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; procedure Initialize_Fields_For_Aspect_Assoc (Self : Bare_Aspect_Assoc ; Aspect_Assoc_F_Id : Bare_Name ; Aspect_Assoc_F_Expr : Bare_Expr ); function Aspect_Assoc_F_Id (Node : Bare_Aspect_Assoc) return Bare_Name; function Aspect_Assoc_F_Expr (Node : Bare_Aspect_Assoc) return Bare_Expr; function Aspect_Assoc_P_Xref_Entry_Point (Node : Bare_Aspect_Assoc ) return Boolean ; function Aspect_Assoc_P_Xref_Equation (Node : Bare_Aspect_Assoc ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Aspect_Assoc_P_Aspect_Name (Node : Bare_Aspect_Assoc ; N : Internal_Entity_Name ) return Character_Type_Array_Access ; -- Return the string representation of the given name, which must be a Name -- that can appear in an aspect association id. function Aspect_Clause_P_Xref_Entry_Point (Node : Bare_Aspect_Clause ) return Boolean ; procedure Initialize_Fields_For_At_Clause (Self : Bare_At_Clause ; At_Clause_F_Name : Bare_Base_Id ; At_Clause_F_Expr : Bare_Expr ); function At_Clause_F_Name (Node : Bare_At_Clause) return Bare_Base_Id; function At_Clause_F_Expr (Node : Bare_At_Clause) return Bare_Expr; function At_Clause_P_Xref_Equation (Node : Bare_At_Clause ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Attribute_Def_Clause (Self : Bare_Attribute_Def_Clause ; Attribute_Def_Clause_F_Attribute_Expr : Bare_Name ; Attribute_Def_Clause_F_Expr : Bare_Expr ); function Attribute_Def_Clause_F_Attribute_Expr (Node : Bare_Attribute_Def_Clause) return Bare_Name; function Attribute_Def_Clause_F_Expr (Node : Bare_Attribute_Def_Clause) return Bare_Expr; function Attribute_Def_Clause_P_Xref_Equation (Node : Bare_Attribute_Def_Clause ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Enum_Rep_Clause (Self : Bare_Enum_Rep_Clause ; Enum_Rep_Clause_F_Type_Name : Bare_Name ; Enum_Rep_Clause_F_Aggregate : Bare_Base_Aggregate ); function Enum_Rep_Clause_F_Type_Name (Node : Bare_Enum_Rep_Clause) return Bare_Name; function Enum_Rep_Clause_F_Aggregate (Node : Bare_Enum_Rep_Clause) return Bare_Base_Aggregate; function Enum_Rep_Clause_P_Xref_Equation (Node : Bare_Enum_Rep_Clause ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Record_Rep_Clause (Self : Bare_Record_Rep_Clause ; Record_Rep_Clause_F_Name : Bare_Name ; Record_Rep_Clause_F_At_Expr : Bare_Expr ; Record_Rep_Clause_F_Components : Bare_Ada_Node_List ); function Record_Rep_Clause_F_Name (Node : Bare_Record_Rep_Clause) return Bare_Name; function Record_Rep_Clause_F_At_Expr (Node : Bare_Record_Rep_Clause) return Bare_Expr; function Record_Rep_Clause_F_Components (Node : Bare_Record_Rep_Clause) return Bare_Ada_Node_List; function Record_Rep_Clause_P_Xref_Equation (Node : Bare_Record_Rep_Clause ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Aspect_Spec (Self : Bare_Aspect_Spec ; Aspect_Spec_F_Aspect_Assocs : Bare_Aspect_Assoc_List ); function Aspect_Spec_F_Aspect_Assocs (Node : Bare_Aspect_Spec) return Bare_Aspect_Assoc_List; function Dispatcher_Base_Assoc_P_Assoc_Expr (Node : Bare_Base_Assoc ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr ; -- Returns the expression side of this assoc node. procedure Initialize_Fields_For_Contract_Case_Assoc (Self : Bare_Contract_Case_Assoc ; Contract_Case_Assoc_F_Guard : Bare_Ada_Node ; Contract_Case_Assoc_F_Consequence : Bare_Expr ); function Contract_Case_Assoc_F_Guard (Node : Bare_Contract_Case_Assoc) return Bare_Ada_Node; function Contract_Case_Assoc_F_Consequence (Node : Bare_Contract_Case_Assoc) return Bare_Expr; function Contract_Case_Assoc_P_Assoc_Expr (Node : Bare_Contract_Case_Assoc ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr ; procedure Initialize_Fields_For_Pragma_Argument_Assoc (Self : Bare_Pragma_Argument_Assoc ; Pragma_Argument_Assoc_F_Name : Bare_Name ; Pragma_Argument_Assoc_F_Expr : Bare_Expr ); function Pragma_Argument_Assoc_F_Name (Node : Bare_Pragma_Argument_Assoc) return Bare_Name; function Pragma_Argument_Assoc_F_Expr (Node : Bare_Pragma_Argument_Assoc) return Bare_Expr; function Pragma_Argument_Assoc_P_Assoc_Expr (Node : Bare_Pragma_Argument_Assoc ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr ; function Dispatcher_Base_Formal_Param_Holder_P_Abstract_Formal_Params (Node : Bare_Base_Formal_Param_Holder ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; -- Return the list of abstract formal parameters for this holder. function Base_Formal_Param_Holder_P_Unpacked_Formal_Params (Node : Bare_Base_Formal_Param_Holder ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Single_Formal_Array_Access ; -- Couples (identifier, param spec) for all parameters function Base_Formal_Param_Holder_P_Match_Param_List (Node : Bare_Base_Formal_Param_Holder ; Params : Internal_Entity_Assoc_List ; Is_Dottable_Subp : Boolean ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Param_Match_Array_Access ; function Base_Formal_Param_Holder_P_Nb_Min_Params (Node : Bare_Base_Formal_Param_Holder ) return Integer ; -- Return the minimum number of parameters this subprogram can be called while -- still being a legal call. function Base_Formal_Param_Holder_P_Nb_Max_Params (Node : Bare_Base_Formal_Param_Holder ) return Integer ; -- Return the maximum number of parameters this subprogram can be called while -- still being a legal call. function Base_Formal_Param_Holder_P_Paramless (Node : Bare_Base_Formal_Param_Holder ; Dottable_Subp : Boolean ; Can_Be : Boolean := True ) return Boolean ; -- Utility function. Given a subprogram spec and whether the subprogram was -- referenced using the dot notation, determine if it can be called without -- parameters (and hence without a callexpr). function Base_Formal_Param_Holder_P_Is_Matching_Param_List (Node : Bare_Base_Formal_Param_Holder ; Params : Internal_Entity_Assoc_List ; Is_Dottable_Subp : Boolean ; Env : Lexical_Env ) return Boolean ; -- Return whether a AssocList is a match for this SubpSpec, i.e. whether the -- argument count (and designators, if any) match. function Base_Formal_Param_Holder_P_Param_Types (Node : Bare_Base_Formal_Param_Holder ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; -- Returns the type of each parameter of Self. function Base_Formal_Param_Holder_P_Real_Type (Node : Bare_Base_Formal_Param_Holder ; Typ : Internal_Entity_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the real type denoted by ``typ``, taking into account that ``typ`` -- might be the type of a derived primitive. In that case, return the derived -- primitive type. function Base_Formal_Param_Holder_P_Real_Designated_Type (Node : Bare_Base_Formal_Param_Holder ; Typ : Internal_Entity_Type_Expr ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Given a type expression that is part of this subprogram specification (for -- example, appearing in a parameter specification), return the real type it -- designates, taking into account the fact that Self might be the -- specification of an inherited subprogram. Overall, we can distinguish the -- following cases: -- -- - Self is a primitive subprogram inherited from a base type and ``typ`` -- designates that base type, in which case we should return the inheriting -- type. -- -- - Self is a primitive subprogram inherited from a base type but ``typ`` -- does not designate that base type, in which case we must compute the actual -- designated type by taking into account the rebindings associated with the -- base type. This is done by traversing the inheritance hierarchy starting -- from the inheriting type up to the inherited type and extracting the -- rebindings that we got along the way. -- -- - Self is not an inherited primitive subprogram, in which case we simply -- return the designated type using the normal path. -- -- The first two points are illustrated with the following example. -- -- .. code:: -- -- generic type G is private; package Pkg is type T is null record; -- -- function Foo (Self : T) return G; -- A end Pkg; -- -- package My_Pkg is new Pkg (Integer); -- B -- -- type My_T is new My_Pkg.T; -- -- X : My_T := (null record); Y : Integer := Foo (X); -- -- C -- -- Resolving the reference to `Foo` at line C gets us the function declaration -- at line A with the appropriate metadata indicating it is a primitive -- subprogram of T inherited by My_T. -- -- Calling this property on the ``T`` node from the ``Self : T`` parameter -- specification is an instance of the first case. We should obviously return -- ``My_T`` in that case. -- -- Calling it on ``G`` from the return type specification is an instance of -- the second case. We traverse up the inheritance hierarchy starting from -- ``My_T`` and get to ``T [B]``, where [B] indicates the rebindings -- corresponding to the instantiation at line B. We can now use those -- rebindings to compute the actual designated type (the type designated by -- ``G [B]``) which correctly yields ``Integer``. -- -- This property is used during the construction of xref equations for call -- expressions in order to match the right parameter and return types. function Base_Formal_Param_Holder_P_Call_Argument_Equation (Node : Bare_Base_Formal_Param_Holder ; Param : Internal_Entity_Base_Formal_Param_Decl ; Arg : Internal_Entity_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Generate the equation that binds the type_var of this expression given its -- corresponding parameter in the context of a subprogram call. This takes -- into account the fact that the called subprogram might be an inherited -- primitive. function Base_Formal_Param_Holder_P_Match_Formal_Params (Node : Bare_Base_Formal_Param_Holder ; Other : Internal_Entity_Base_Formal_Param_Holder ; Match_Names : Boolean := True ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Check whether self's params match other's. function Dispatcher_Base_Formal_Param_Holder_P_Match_Other (Node : Bare_Base_Formal_Param_Holder ; Other : Internal_Entity_Base_Formal_Param_Holder ; Match_Names : Boolean := True ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Base method of any BaseFormalParamHolder that checks whether the other -- given BaseFormalParamHolder matches. In practice, this will call -- match_formal_params, except for BaseSubpSpecs for which it will call -- match_signature. function Base_Formal_Param_Holder_P_Match_Other (Node : Bare_Base_Formal_Param_Holder ; Other : Internal_Entity_Base_Formal_Param_Holder ; Match_Names : Boolean := True ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Base method of any BaseFormalParamHolder that checks whether the other -- given BaseFormalParamHolder matches. In practice, this will call -- match_formal_params, except for BaseSubpSpecs for which it will call -- match_signature. function Dispatcher_Base_Subp_Spec_P_Name (Node : Bare_Base_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Bare_Defining_Name ; function Dispatcher_Base_Subp_Spec_P_Returns (Node : Bare_Base_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; -- Syntax property. Return the type expression node corresponding to the -- return of this subprogram spec. function Dispatcher_Base_Subp_Spec_P_Params (Node : Bare_Base_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Param_Spec_Array_Access ; -- Returns the array of parameters specification for this subprogram spec. function Base_Subp_Spec_P_Abstract_Formal_Params (Node : Bare_Base_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; function Base_Subp_Spec_P_Match_Return_Type (Node : Bare_Base_Subp_Spec ; Other : Internal_Entity_Base_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subp_Spec_P_Match_Signature (Node : Bare_Base_Subp_Spec ; Other : Internal_Entity_Base_Subp_Spec ; Match_Name : Boolean ; Use_Entity_Info : Boolean := True ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether SubpSpec's signature matches Self's. -- -- Note that the comparison for types isn't just a name comparison: it -- compares the canonical types. -- -- If match_name is False, then the name of subprogram will not be checked. -- -- If use_entity_info is True and Entity's metadata has values for fields -- `primitive` and `primitive_real_type` (e.g. if it was retrieved from a -- primitive_env), those will be taken into account and match_signature will -- return True if `other` overrides `Entity`. function Base_Subp_Spec_P_Match_Other (Node : Bare_Base_Subp_Spec ; Other : Internal_Entity_Base_Formal_Param_Holder ; Match_Names : Boolean := True ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subp_Spec_P_Defining_Env (Node : Bare_Base_Subp_Spec ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Helper for BasicDecl.defining_env. function Base_Subp_Spec_P_Potential_Dottable_Type (Node : Bare_Base_Subp_Spec ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- If self meets the criteria for being a subprogram callable via the dot -- notation, return the type of dottable elements. function Base_Subp_Spec_P_Candidate_Type_For_Primitive (Node : Bare_Base_Subp_Spec ; Type_Expr : Internal_Entity_Type_Expr ; Canonicalize : Boolean := True ) return Internal_Entity_Base_Type_Decl ; -- If the given type expression designates a type of which Self is a -- primitive, return that designated type. Otherwise return null. -- -- If ``canonicalize`` is true, then the returned type will be canonicalized -- first. Else, the most complete part of the type will be returned. function Base_Subp_Spec_P_Get_Primitive_Subp_Types (Node : Bare_Base_Subp_Spec ; Canonicalize : Boolean := True ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; -- Return the types of which this subprogram is a primitive of. If -- ``canonicalize`` is true, then the returned types will be canonicalized. function Base_Subp_Spec_P_Get_Primitive_Subp_First_Type (Node : Bare_Base_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the first type of which this subprogram is a primitive of. function Base_Subp_Spec_P_Get_Primitive_Subp_Tagged_Type (Node : Bare_Base_Subp_Spec ; Canonicalize : Boolean := True ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- If this subprogram is a primitive for a tagged type, then return this type. -- If ``canonicalize`` is true, then the returned types will be canonicalized. function Base_Subp_Spec_P_Decl_Spec (Node : Bare_Base_Subp_Spec ; Follow_Generic : Boolean ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Subp_Spec ; -- If this subp spec is that of the body of an entity, this property returns -- the subp spec of the declaration of that entity. It returns itself -- otherwise. -- -- If ``follow_generic`` is set to False, we explicitly return null if this -- spec is part of a generic subprogram declaration. See -- ``primitive_decl_spec``. function Base_Subp_Spec_P_Primitive_Decl_Spec (Node : Bare_Base_Subp_Spec ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Subp_Spec ; -- Return the subp spec of the declaration of this potential primitive. Since -- a generic subprogram cannot be a primitive, we explicitly set -- ``follow_generic`` to False to filter out those early. function Base_Subp_Spec_P_Primitive_Subp_Types (Node : Bare_Base_Subp_Spec ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; -- Return the types of which this subprogram is a primitive of. function Base_Subp_Spec_P_Primitive_Subp_First_Type (Node : Bare_Base_Subp_Spec ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the first type of which this subprogram is a primitive of. function Base_Subp_Spec_P_Primitive_Subp_Tagged_Type (Node : Bare_Base_Subp_Spec ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- If this subprogram is a primitive for a tagged type, then return this type. function Base_Subp_Spec_P_Dottable_Subp_Of (Node : Bare_Base_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; -- Returns whether the subprogram containing this spec is a subprogram -- callable via the dot notation. function Base_Subp_Spec_P_Return_Type (Node : Bare_Base_Subp_Spec ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Returns the return type of Self, if applicable (e.g. if Self is a -- subprogram). Else, returns null. function Base_Subp_Spec_P_Xref_Entry_Point (Node : Bare_Base_Subp_Spec ) return Boolean ; function Base_Subp_Spec_P_Xref_Equation (Node : Bare_Base_Subp_Spec ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Entry_Spec (Self : Bare_Entry_Spec ; Entry_Spec_F_Entry_Name : Bare_Defining_Name ; Entry_Spec_F_Family_Type : Bare_Ada_Node ; Entry_Spec_F_Entry_Params : Bare_Params ); function Entry_Spec_F_Entry_Name (Node : Bare_Entry_Spec) return Bare_Defining_Name; function Entry_Spec_F_Family_Type (Node : Bare_Entry_Spec) return Bare_Ada_Node; function Entry_Spec_F_Entry_Params (Node : Bare_Entry_Spec) return Bare_Params; function Entry_Spec_P_Name (Node : Bare_Entry_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Bare_Defining_Name ; function Entry_Spec_P_Params (Node : Bare_Entry_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Param_Spec_Array_Access ; function Entry_Spec_P_Returns (Node : Bare_Entry_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; function Enum_Subp_Spec_P_Enum_Decl (Node : Bare_Enum_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Enum_Literal_Decl ; function Enum_Subp_Spec_P_Name (Node : Bare_Enum_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Bare_Defining_Name ; function Enum_Subp_Spec_P_Returns (Node : Bare_Enum_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; function Enum_Subp_Spec_P_Params (Node : Bare_Enum_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Param_Spec_Array_Access ; procedure Initialize_Fields_For_Subp_Spec (Self : Bare_Subp_Spec ; Subp_Spec_F_Subp_Kind : Bare_Subp_Kind ; Subp_Spec_F_Subp_Name : Bare_Defining_Name ; Subp_Spec_F_Subp_Params : Bare_Params ; Subp_Spec_F_Subp_Returns : Bare_Type_Expr ); function Subp_Spec_F_Subp_Kind (Node : Bare_Subp_Spec) return Bare_Subp_Kind; function Subp_Spec_F_Subp_Name (Node : Bare_Subp_Spec) return Bare_Defining_Name; function Subp_Spec_F_Subp_Params (Node : Bare_Subp_Spec) return Bare_Params; function Subp_Spec_F_Subp_Returns (Node : Bare_Subp_Spec) return Bare_Type_Expr; function Subp_Spec_P_Name (Node : Bare_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Bare_Defining_Name ; function Subp_Spec_P_Params (Node : Bare_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Param_Spec_Array_Access ; function Subp_Spec_P_Returns (Node : Bare_Subp_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; procedure Initialize_Fields_For_Component_List (Self : Bare_Component_List ; Component_List_F_Components : Bare_Ada_Node_List ; Component_List_F_Variant_Part : Bare_Variant_Part ); function Component_List_F_Components (Node : Bare_Component_List) return Bare_Ada_Node_List; function Component_List_F_Variant_Part (Node : Bare_Component_List) return Bare_Variant_Part; function Component_List_P_Type_Def (Node : Bare_Component_List ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Def ; function Component_List_P_Type_Decl (Node : Bare_Component_List ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Decl ; function Component_List_P_Parent_Component_List (Node : Bare_Component_List ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Component_List ; function Component_List_P_Abstract_Formal_Params_For_Assocs (Node : Bare_Component_List ; Assocs : Internal_Entity_Assoc_List ; Env : Lexical_Env ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; function Component_List_P_Abstract_Formal_Params_Impl (Node : Bare_Component_List ; Discriminants : Internal_Param_Match_Array_Access ; Include_Discriminants : Boolean := True ; Recurse : Boolean := True ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; function Component_List_P_Abstract_Formal_Params (Node : Bare_Component_List ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; function Component_List_P_Shapes (Node : Bare_Component_List ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Shape_Array_Access ; -- Return all the possible shapes that this component list spans. function Discriminant_Part_P_Abstract_Formal_Params (Node : Bare_Discriminant_Part ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; procedure Initialize_Fields_For_Known_Discriminant_Part (Self : Bare_Known_Discriminant_Part ; Known_Discriminant_Part_F_Discr_Specs : Bare_Discriminant_Spec_List ); function Known_Discriminant_Part_F_Discr_Specs (Node : Bare_Known_Discriminant_Part) return Bare_Discriminant_Spec_List; function Known_Discriminant_Part_P_Abstract_Formal_Params (Node : Bare_Known_Discriminant_Part ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; procedure Initialize_Fields_For_Entry_Completion_Formal_Params (Self : Bare_Entry_Completion_Formal_Params ; Entry_Completion_Formal_Params_F_Params : Bare_Params ); function Entry_Completion_Formal_Params_F_Params (Node : Bare_Entry_Completion_Formal_Params) return Bare_Params; function Entry_Completion_Formal_Params_P_Abstract_Formal_Params (Node : Bare_Entry_Completion_Formal_Params ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; procedure Initialize_Fields_For_Generic_Formal_Part (Self : Bare_Generic_Formal_Part ; Generic_Formal_Part_F_Decls : Bare_Ada_Node_List ); function Generic_Formal_Part_F_Decls (Node : Bare_Generic_Formal_Part) return Bare_Ada_Node_List; function Generic_Formal_Part_P_Abstract_Formal_Params (Node : Bare_Generic_Formal_Part ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; function Generic_Formal_Part_P_Use_Clauses_Envs (Node : Bare_Generic_Formal_Part ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Returns the envs for all the use clauses declared in this generic formal -- part. procedure Initialize_Fields_For_Base_Record_Def (Self : Bare_Base_Record_Def ; Base_Record_Def_F_Components : Bare_Component_List ); function Base_Record_Def_F_Components (Node : Bare_Base_Record_Def) return Bare_Component_List; function Base_Record_Def_P_Comps (Node : Bare_Base_Record_Def ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Component_List ; procedure Initialize_Fields_For_Null_Record_Def (Self : Bare_Null_Record_Def ; Base_Record_Def_F_Components : Bare_Component_List ); procedure Initialize_Fields_For_Record_Def (Self : Bare_Record_Def ; Base_Record_Def_F_Components : Bare_Component_List ); function Dispatcher_Basic_Assoc_P_Expr (Node : Bare_Basic_Assoc ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr ; function Dispatcher_Basic_Assoc_P_Names (Node : Bare_Basic_Assoc ) return Bare_Ada_Node_Array_Access ; function Basic_Assoc_P_Get_Params (Node : Bare_Basic_Assoc ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; -- Return the list of parameters that this association refers to. procedure Initialize_Fields_For_Aggregate_Assoc (Self : Bare_Aggregate_Assoc ; Aggregate_Assoc_F_Designators : Bare_Alternatives_List ; Aggregate_Assoc_F_R_Expr : Bare_Expr ); function Aggregate_Assoc_F_Designators (Node : Bare_Aggregate_Assoc) return Bare_Alternatives_List; function Aggregate_Assoc_F_R_Expr (Node : Bare_Aggregate_Assoc) return Bare_Expr; function Aggregate_Assoc_P_Expr (Node : Bare_Aggregate_Assoc ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr ; function Aggregate_Assoc_P_Names (Node : Bare_Aggregate_Assoc ) return Bare_Ada_Node_Array_Access ; function Aggregate_Assoc_P_Xref_Stop_Resolution (Node : Bare_Aggregate_Assoc ) return Boolean ; function Aggregate_Assoc_P_Base_Aggregate (Node : Bare_Aggregate_Assoc ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Aggregate ; function Aggregate_Assoc_P_Xref_Equation (Node : Bare_Aggregate_Assoc ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Aggregate_Assoc_P_Record_Assoc_Equation (Node : Bare_Aggregate_Assoc ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Equation for the case where this is an aggregate assoc for a record type. function Aggregate_Assoc_P_Array_Assoc_Equation (Node : Bare_Aggregate_Assoc ; Atd : Internal_Entity_Array_Type_Def ; Mra : Internal_Multidim_Aggregate_Info ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Equation for the case where this is an aggregate assoc for an array type. function Aggregate_Assoc_P_Globals_Assoc_Equation (Node : Bare_Aggregate_Assoc ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Equation for the case where this is an aggregate assoc for a Globals -- aspect. function Aggregate_Assoc_P_Depends_Assoc_Equation (Node : Bare_Aggregate_Assoc ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Equation for the case where this is an aggregate assoc for a Depends -- aspect. function Aggregate_Assoc_P_Test_Case_Assoc_Equation (Node : Bare_Aggregate_Assoc ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Equation for the case where this is an aggregate assoc for a Test_Case -- aspect. function Aggregate_Assoc_P_Refined_State_Assoc_Equation (Node : Bare_Aggregate_Assoc ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Equation for the case where this is an aggregate assoc inside an -- Refined_State aspect. Simply resolve all names present in it, as they must -- all refer to existing declarations. procedure Initialize_Fields_For_Multi_Dim_Array_Assoc (Self : Bare_Multi_Dim_Array_Assoc ; Aggregate_Assoc_F_Designators : Bare_Alternatives_List ; Aggregate_Assoc_F_R_Expr : Bare_Expr ); procedure Initialize_Fields_For_Discriminant_Assoc (Self : Bare_Discriminant_Assoc ; Discriminant_Assoc_F_Ids : Bare_Discriminant_Choice_List ; Discriminant_Assoc_F_Discr_Expr : Bare_Expr ); function Discriminant_Assoc_F_Ids (Node : Bare_Discriminant_Assoc) return Bare_Discriminant_Choice_List; function Discriminant_Assoc_F_Discr_Expr (Node : Bare_Discriminant_Assoc) return Bare_Expr; function Discriminant_Assoc_P_Expr (Node : Bare_Discriminant_Assoc ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr ; function Discriminant_Assoc_P_Names (Node : Bare_Discriminant_Assoc ) return Bare_Ada_Node_Array_Access ; procedure Initialize_Fields_For_Iterated_Assoc (Self : Bare_Iterated_Assoc ; Iterated_Assoc_F_Spec : Bare_For_Loop_Spec ; Iterated_Assoc_F_R_Expr : Bare_Expr ); function Iterated_Assoc_F_Spec (Node : Bare_Iterated_Assoc) return Bare_For_Loop_Spec; function Iterated_Assoc_F_R_Expr (Node : Bare_Iterated_Assoc) return Bare_Expr; function Iterated_Assoc_P_Expr (Node : Bare_Iterated_Assoc ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr ; function Iterated_Assoc_P_Names (Node : Bare_Iterated_Assoc ) return Bare_Ada_Node_Array_Access ; function Iterated_Assoc_P_Base_Aggregate (Node : Bare_Iterated_Assoc ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Aggregate ; function Iterated_Assoc_P_Xref_Stop_Resolution (Node : Bare_Iterated_Assoc ) return Boolean ; function Iterated_Assoc_P_Xref_Equation (Node : Bare_Iterated_Assoc ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Param_Assoc (Self : Bare_Param_Assoc ; Param_Assoc_F_Designator : Bare_Ada_Node ; Param_Assoc_F_R_Expr : Bare_Expr ); function Param_Assoc_F_Designator (Node : Bare_Param_Assoc) return Bare_Ada_Node; function Param_Assoc_F_R_Expr (Node : Bare_Param_Assoc) return Bare_Expr; function Param_Assoc_P_Expr (Node : Bare_Param_Assoc ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr ; function Param_Assoc_P_Names (Node : Bare_Param_Assoc ) return Bare_Ada_Node_Array_Access ; function Param_Assoc_P_Xref_Entry_Point (Node : Bare_Param_Assoc ) return Boolean ; function Param_Assoc_P_Xref_Equation (Node : Bare_Param_Assoc ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Param_Assoc_P_Is_Static_Attribute_Assoc (Node : Bare_Param_Assoc ) return Boolean ; function Basic_Decl_F_Aspects (Node : Bare_Basic_Decl) return Bare_Aspect_Spec; function Basic_Decl_P_Is_Ghost_Code (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this declaration is ghost code or not. See SPARK RM 6.9. function Basic_Decl_P_Env_Hook_Basic_Decl (Node : Bare_Basic_Decl ) return Boolean ; -- Helper for AdaNode.env_hook. Handle library-level unit decl nodes. function Basic_Decl_P_Populate_Body_Unit (Node : Bare_Basic_Decl ) return Boolean ; -- For library-level subprogram declarations, we always want to populate the -- unit containing the body, so that the lexical envs always contain the spec -- and the body, no matter which was initially requested. function Basic_Decl_P_Has_Top_Level_Env_Name_Impl (Node : Bare_Basic_Decl ; Allow_Bodies : Boolean ) return Boolean ; -- Helper for ``has_top_level_env_name``. See its docstring for more -- information. function Basic_Decl_P_Has_Top_Level_Env_Name (Node : Bare_Basic_Decl ) return Boolean ; -- Return True if this declaration is exposed to other compilation units. This -- is equivalent to asking if this declaration's env should be named. -- -- Find a few examples below. -- -- .. code:: -- -- package A is -- True package B is -- -- True procedure Foo; -- True end B; end A; -- -- package body A is -- True package B is -- -- True procedure Foo; -- True end B; end A; -- -- package body A is -- True package body B is -- -- True procedure Foo; -- False end B; end A; -- -- package body A is -- True package body B is -- -- True procedure Foo is null; -- True end B; end A; -- -- package body A is -- True procedure B is -- -- True procedure Foo is null; -- False begin ... end B; end A; -- -- procedure A is -- True procedure Foo; -- -- True begin ... end A; -- -- procedure A is -- True package body B is -- -- False procedure Foo is null; -- False end B; begin ... end A; -- -- procedure A is -- True package B is -- -- True end B; -- -- package body B is -- True end B; begin end A; function Basic_Decl_P_Env_Spec_Fully_Qualified_Name_Impl (Node : Bare_Basic_Decl ; Self_Env : Lexical_Env ) return Character_Type_Array_Access ; -- Helper to implement ``env_spec_fully_qualified_name``. function Basic_Decl_P_Env_Spec_Fully_Qualified_Name (Node : Bare_Basic_Decl ) return Character_Type_Array_Access ; -- Return a the fully qualified name of this declaration to be used by env -- specs. This should not be used elsewhere, as it does some assumption about -- envs that are not True anymore after envs are populated. function Basic_Decl_P_Top_Level_Env_Name (Node : Bare_Basic_Decl ) return Character_Type_Array_Access ; -- Return the name that this BasicDecl should use to create its lexical -- environment. An empty name is returned if it shouldn't use a named env. function Dispatcher_Basic_Decl_P_Child_Decl_Initial_Env_Name (Node : Bare_Basic_Decl ; Private_Part : Boolean := False ) return Symbol_Type ; -- If this is a child declaration, return the lexical environment name of its -- parent declaration. Otherwise return an empty string. -- -- If ``private_part`` is True, return the env name of the private part of its -- parent. function Basic_Decl_P_Child_Decl_Initial_Env (Node : Bare_Basic_Decl ; Private_Part : Boolean := False ) return Internal_DesignatedEnv ; -- Return the initial env for this basic declaration. This is used to set the -- parent environment of a child declaration to its actual parent in terms of -- Ada semantics. -- -- If ``private_part`` is True, return the env of the private part of its -- parent. function Basic_Decl_P_Basic_Decl_Env_Assocs (Node : Bare_Basic_Decl ; Dest_Env : Internal_DesignatedEnv ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc_Array_Access ; -- Return an array of env assocs that should be added in the environment -- designated by ``dest_env``. In the general case, it simply adds an entry -- for Self using this declaration's name as key. However, if Self corresponds -- to the declaration of a `"="` operator, we also generate an order to add an -- entry for the `"/="` operator, as described in RM 4.5.2 25.a. function Basic_Decl_P_Child_Decl_Env_Assocs (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc_Array_Access ; -- Return the env association that describes where to register this basic -- declaration. For a child declaration in particular, this orders adding -- itself inside its parent declaration's environment. -- -- .. note:: This intercepts user-defined "=" operators so as to introduce an -- implicit "/=" operator, as per RM 4.5.2 25.a. function Basic_Decl_P_Is_Formal (Node : Bare_Basic_Decl ) return Boolean ; -- Whether this decl is the nested decl of a generic formal declaration. function Dispatcher_Basic_Decl_P_Previous_Part_For_Decl (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the previous part for this decl, if applicable. -- -- .. note:: It is not named previous_part, because BaseTypeDecl has a more -- precise version of previous_part that returns a BaseTypeDecl. Probably, -- we want to rename the specific versions, and have the root property be -- named previous_part. (TODO R925-008) function Basic_Decl_P_Canonical_Part (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the canonical part for this decl. In the case of decls composed of -- several parts, the canonical part will be the first part. function Basic_Decl_P_All_Previous_Parts (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; -- Return all previous parts of this entity, where the first part is at the -- beginning of the array. function Basic_Decl_P_All_Next_Parts (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; -- Return all next parts of this entity, where the last part is at the end of -- the array. function Basic_Decl_P_All_Parts (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; -- Return all parts that define this entity, sorted from first part to last -- part. function Dispatcher_Basic_Decl_P_Is_Static_Decl (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this declaration is static. function Basic_Decl_P_Unshed_Rebindings (Node : Bare_Basic_Decl ; Rebindings : Env_Rebindings ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Put ``rebindings`` back on ``Entity`` if ``Entity`` is rebound somewhere in -- the chain of rebindings. Ensure coherency, e.g. that if Entity already has -- some rebindings, the one that we add are a superset of the one it already -- has. function Dispatcher_Basic_Decl_P_Is_Imported (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether this declaration is imported from another language. function Dispatcher_Basic_Decl_P_Is_Library_Item (Node : Bare_Basic_Decl ) return Boolean ; -- Return whether this is a top-level element. function Basic_Decl_P_Decl_Private_Part (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Private_Part ; function Dispatcher_Basic_Decl_P_Declarative_Parts (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Declarative_Part_Array_Access ; -- Return the declarative parts directly associated to this BasicDecl, if any. function Basic_Decl_P_Immediate_Declarative_Region (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Dispatcher_Basic_Decl_P_Get_Aspect_Assoc (Node : Bare_Basic_Decl ; Name : Symbol_Type ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Aspect_Assoc ; -- Return the aspect with name ``name`` for this entity. function Basic_Decl_P_Get_Aspect_Spec_Expr (Node : Bare_Basic_Decl ; Name : Symbol_Type ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr ; -- Return the expression associated to the aspect with name ``name`` for this -- entity. function Basic_Decl_P_Library_Item_Pragmas (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Pragma_Node_List ; -- If this entity is a library item, return the compilation unit pragmas. function Basic_Decl_P_Get_Aspect_Impl (Node : Bare_Basic_Decl ; Name : Symbol_Type ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Aspect ; -- Return the aspect with the name ``name`` associated to this specific entity -- part. function Basic_Decl_P_Get_Aspect (Node : Bare_Basic_Decl ; Name : Symbol_Type ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Aspect ; -- Return the aspect with name ``name`` associated to this entity. -- -- Aspects are properties of entities that can be specified by the Ada -- program, either via aspect specifications, pragmas, or attributes. -- -- This will return the syntactic node corresponding to attribute directly. -- -- Note: for some aspects (e.g. Inline), Libadalang will check if they are -- defined on any part of the entity. function Basic_Decl_P_Has_Aspect (Node : Bare_Basic_Decl ; Name : Symbol_Type ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Returns whether the boolean aspect named ``name`` is set on the entity -- represented by this node. -- -- "Aspect" is used as in RM terminology (see RM 13). function Basic_Decl_P_Is_Valid_Pragma_For_Name (Node : Bare_Basic_Decl ; Name : Symbol_Type ; Decl : Internal_Entity ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Helper property for ``get_pragma``. Used to check that ``decl`` is a pragma -- declaration that has the given name and is a valid pragma for this -- declaration. function Basic_Decl_P_Get_Pragma (Node : Bare_Basic_Decl ; Name : Symbol_Type ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Pragma_Node ; -- Return the pragma with name ``name`` associated to this entity. function Basic_Decl_P_Get_Representation_Clause (Node : Bare_Basic_Decl ; Name : Symbol_Type ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Attribute_Def_Clause ; -- Return the representation clause associated to this type decl that defines -- the given attribute name. function Basic_Decl_P_Get_At_Clause (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_At_Clause ; -- Return the at clause associated to this declaration. function Basic_Decl_P_Is_Compilation_Unit_Root (Node : Bare_Basic_Decl ) return Boolean ; -- Whether a BasicDecl is the root decl for its unit. function Basic_Decl_P_Populate_Dependent_Units (Node : Bare_Basic_Decl ) return Bare_Compilation_Unit_Array_Access ; function Basic_Decl_P_Should_Ref_Generic_Formals (Node : Bare_Basic_Decl ) return Boolean ; -- Helper property used to determine whether we should add a referenced_env to -- the generic formal part of a given entity. function Basic_Decl_P_Is_In_Public_Part (Node : Bare_Basic_Decl ) return Boolean ; function Dispatcher_Basic_Decl_P_Is_In_Private_Part (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Basic_Decl_P_Is_Visible (Node : Bare_Basic_Decl ; From_Node : Internal_Entity ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this declaration is visible from the point of view of the -- given ``origin`` node. -- -- .. ATTENTION:: Only package-level (public or private) declarations are -- supported for now. function Basic_Decl_P_Subp_Decl_Match_Signature (Node : Bare_Basic_Decl ; Other : Internal_Entity_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Basic_Decl_P_Base_Subp_Declarations (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; -- If Self declares a primitive subprogram of some tagged type T, return the -- set of all subprogram declarations that it overrides (including itself). -- -- NOTE: for the moment this only works for tagged types. Remains to be seen -- if we need to extend it. function Basic_Decl_P_Root_Subp_Declarations (Node : Bare_Basic_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; -- If Self declares a primitive subprogram of some tagged type T, return the -- root subprogram declarations that it overrides. There can be several, as in -- the following scenario: -- -- - package Root defines the root tagged type T and subprogram Foo. -- -- - package Itf defines interface I and abstract subprogram Foo. -- -- - package D defines "type U is new Root.T and Itf.I" and an overriding -- subprogram Foo. -- -- Here, root_subp_declarations of Foo defined in package D will return both -- Foo from package Root and Foo from package Itf. function Basic_Decl_P_Find_All_Overrides (Node : Bare_Basic_Decl ; Units : Internal_Unit_Array_Access ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; -- If Self is the declaration of a primitive of some type T, return the list -- of all subprogram that override this subprogram among the given units. function Dispatcher_Basic_Decl_P_Defining_Names (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; -- Get all the names of this basic declaration. function Basic_Decl_P_Defining_Name (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name ; -- Get the name of this declaration. If this declaration has several names, it -- will return the first one. function Dispatcher_Basic_Decl_P_Defining_Env (Node : Bare_Basic_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Return a lexical environment that contains entities that are accessible as -- suffixes when Self is a prefix. function Basic_Decl_P_Identity_Type (Node : Bare_Basic_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Dispatcher_Basic_Decl_P_Array_Ndims (Node : Bare_Basic_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Integer ; function Basic_Decl_P_Is_Array (Node : Bare_Basic_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Dispatcher_Basic_Decl_P_Expr_Type (Node : Bare_Basic_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the type declaration corresponding to this basic declaration has -- when it is used in an expression context. For example, for this basic -- declaration:: -- -- type Int is range 0 .. 100; -- -- A : Int := 12; -- -- the declaration of the Int type will be returned. For this declaration:: -- -- type F is delta 0.01 digits 10; -- -- function B return F; -- -- expr_type will return the declaration of the type F. function Dispatcher_Basic_Decl_P_Type_Expression (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; -- Return the type expression for this BasicDecl if applicable, a null -- otherwise. function Basic_Decl_P_Subp_Spec_Or_Null (Node : Bare_Basic_Decl ; Follow_Generic : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Subp_Spec ; -- If Self is a Subp, returns the specification of this subprogram. -- -- If ``follow_generic`` is True, will also work for instances of -- ``GenericSubpDecl``. function Basic_Decl_P_Formal_Param_Holder_Or_Null (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Holder ; function Basic_Decl_P_Is_Subprogram (Node : Bare_Basic_Decl ) return Boolean ; -- Return True if self is a subprogram node in the general sense (which is, an -- entity that can be called). This includes separates and entries. -- -- .. attention: This is a purely syntactic query and will return True for -- everything that is a syntactic entity that can be called like a -- subprogram in some contexts, even generic formal subprograms for -- example. function Basic_Decl_P_Is_Stream_Subprogram_For_Type (Node : Bare_Basic_Decl ; Typ : Internal_Entity_Base_Type_Decl ; Return_Obj : Boolean ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Basic_Decl_P_Can_Be_Paramless (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return true if entity can be a paramless subprogram entity, when used in an -- expression context. function Basic_Decl_P_Is_Paramless (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return true if entity is a paramless subprogram entity, when used in an -- expression context. function Dispatcher_Basic_Decl_P_Constrain_Prefix (Node : Bare_Basic_Decl ; Prefix : Bare_Expr ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- This method is used when self is a candidate suffix in a dotted expression, -- to express the potential constraint that the suffix could express on the -- prefix. -- -- For example, given this code:: -- -- 1 type P is record 2 A, B : Integer; 3 end record; 4 5 P_Inst : P; 7 8 -- P_Inst.A; ^^^^^^^^ -- -- A references the A ComponentDecl at line 2, and the constraint that we want -- to express on the prefix (P_Inst), is that it needs to be of type P. function Basic_Decl_P_Relative_Name (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Single_Tok_Node ; -- Return the relative name for Self. If Self's defining name is ``A.B.C``, -- return C as a node. function Basic_Decl_P_Relative_Name_Text (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Symbol_Type ; -- Return the relative name for Self, as text. function Basic_Decl_P_Name_Symbol (Node : Bare_Basic_Decl ) return Symbol_Type ; function Basic_Decl_P_Basic_Decl_Next_Part_For_Decl (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Implementation of next_part_for_decl for basic decls, that can be reused by -- subclasses when they override next_part_for_decl. function Dispatcher_Basic_Decl_P_Next_Part_For_Decl (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the next part of this declaration, if applicable. -- -- .. note:: It is not named next_part, because BaseTypeDecl has a more -- precise version of next_part that returns a BaseTypeDecl. Probably, we -- want to rename the specific versions, and have the root property be -- named next_part. (TODO R925-008) function Basic_Decl_P_Body_Part_For_Decl (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Body_Node ; -- Return the body corresponding to this declaration, if applicable. -- -- .. note:: It is not named body_part, subclasses have more precise versions -- named body_part and returning a more precise result. Probably, we want -- to rename the specific versions, and have the root property be named -- body_part. (TODO R925-008) function Basic_Decl_P_Fully_Qualified_Name_Impl (Node : Bare_Basic_Decl ; Include_Profile : Boolean := False ; Dn : Internal_Entity_Defining_Name := No_Entity_Defining_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access_Array_Access ; -- Return the fully qualified name corresponding to this declaration, as an -- array of symbols. -- -- If ``dn`` is null, take the first defining name for the declaration. Else, -- assume that dn is one of the defining names for this declaration. function Basic_Decl_P_Fully_Qualified_Name_String_Array (Node : Bare_Basic_Decl ; Include_Profile : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access_Array_Access ; -- Return the fully qualified name corresponding to this declaration, as an -- array of symbols. function Basic_Decl_P_Fully_Qualified_Name_Array (Node : Bare_Basic_Decl ; Include_Profile : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Symbol_Type_Array_Access ; -- Return the fully qualified name corresponding to this declaration, as an -- array of symbols. function Basic_Decl_P_Fully_Qualified_Name (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; -- Return the fully qualified name corresponding to this declaration. function Basic_Decl_P_Canonical_Fully_Qualified_Name_Impl (Node : Bare_Basic_Decl ; Include_Profile : Boolean := False ; Dn : Internal_Entity_Defining_Name := No_Entity_Defining_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; -- Implementation of canonical_fully_qualified_name. function Basic_Decl_P_Canonical_Fully_Qualified_Name (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; -- Return a canonical representation of the fully qualified name corresponding -- to this declaration. function Basic_Decl_P_Unique_Identifying_Name_Impl (Node : Bare_Basic_Decl ; Dn : Internal_Entity_Defining_Name := No_Entity_Defining_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; -- Implementation for unique_identifying_name. function Basic_Decl_P_Unique_Identifying_Name (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; -- Return a unique identifying name for this declaration, provided this -- declaration is a public declaration. In the case of subprograms, this will -- include the profile. -- -- .. attention:: This will only return a unique name for public declarations. -- Notably, anything nested in an unnamed declare block won't be handled -- correctly. function Basic_Decl_P_Custom_Id_Text (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; function Basic_Decl_P_Does_Aspects_Make_Preelaborable (Node : Bare_Basic_Decl ; From_Body : Boolean ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Implementation helper for ``CompilationUnit.is_preelaborable``. -- -- Return whether ``Entity`` has aspects that make it preelaborable. -- -- If ``from_body``, consider that ``Entity`` is a spec and that we are -- computing whether its body is preelaborable. function Basic_Decl_P_Wrap_Public_Reference (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return a public-friendly view of this entity. For now this only needs to -- handle the case where Self is a ``GenericSubpInternal``, in which case we -- prefer to return its parent ``GenericSubpInstantiation`` node. -- -- .. attention:: Properties typically use ``wrap_public_reference`` to -- sanitize their return value for users. Sometimes however, those -- properties end up being used by internal properties for practical -- reasons, meaning those properties will work on biased values, which -- could become problematic. Moreover, as of yet this property only exists -- to handle the ``GenericSubpInternal`` case, which could actually be -- addressed cleanly in at least two different ways: -- -- - By adding interfaces to langkit, so that a ``GenericSubpInstantiation`` -- could be both a ``GenericInstantiation`` and a ``BasicSubpDecl``. -- -- - By also working with ``GenericSubpInstantiation`` nodes internally. This -- mostly means getting rid of ``GenericSubpInternal`` nodes in the envs. function Basic_Decl_P_Child_Decl_Initial_Env_Name (Node : Bare_Basic_Decl ; Private_Part : Boolean := False ) return Symbol_Type ; -- If this is a child declaration, return the lexical environment name of its -- parent declaration. Otherwise return an empty string. -- -- If ``private_part`` is True, return the env name of the private part of its -- parent. function Basic_Decl_P_Previous_Part_For_Decl (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the previous part for this decl, if applicable. -- -- .. note:: It is not named previous_part, because BaseTypeDecl has a more -- precise version of previous_part that returns a BaseTypeDecl. Probably, -- we want to rename the specific versions, and have the root property be -- named previous_part. (TODO R925-008) function Basic_Decl_P_Is_Static_Decl (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this declaration is static. function Basic_Decl_P_Is_Imported (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether this declaration is imported from another language. function Basic_Decl_P_Is_Library_Item (Node : Bare_Basic_Decl ) return Boolean ; -- Return whether this is a top-level element. function Basic_Decl_P_Declarative_Parts (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Declarative_Part_Array_Access ; -- Return the declarative parts directly associated to this BasicDecl, if any. function Basic_Decl_P_Get_Aspect_Assoc (Node : Bare_Basic_Decl ; Name : Symbol_Type ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Aspect_Assoc ; -- Return the aspect with name ``name`` for this entity. function Basic_Decl_P_Is_In_Private_Part (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Basic_Decl_P_Defining_Env (Node : Bare_Basic_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Return a lexical environment that contains entities that are accessible as -- suffixes when Self is a prefix. function Basic_Decl_P_Array_Ndims (Node : Bare_Basic_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Integer ; function Basic_Decl_P_Expr_Type (Node : Bare_Basic_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the type declaration corresponding to this basic declaration has -- when it is used in an expression context. For example, for this basic -- declaration:: -- -- type Int is range 0 .. 100; -- -- A : Int := 12; -- -- the declaration of the Int type will be returned. For this declaration:: -- -- type F is delta 0.01 digits 10; -- -- function B return F; -- -- expr_type will return the declaration of the type F. function Basic_Decl_P_Type_Expression (Node : Bare_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; -- Return the type expression for this BasicDecl if applicable, a null -- otherwise. function Basic_Decl_P_Constrain_Prefix (Node : Bare_Basic_Decl ; Prefix : Bare_Expr ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- This method is used when self is a candidate suffix in a dotted expression, -- to express the potential constraint that the suffix could express on the -- prefix. -- -- For example, given this code:: -- -- 1 type P is record 2 A, B : Integer; 3 end record; 4 5 P_Inst : P; 7 8 -- P_Inst.A; ^^^^^^^^ -- -- A references the A ComponentDecl at line 2, and the constraint that we want -- to express on the prefix (P_Inst), is that it needs to be of type P. function Basic_Decl_P_Next_Part_For_Decl (Node : Bare_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the next part of this declaration, if applicable. -- -- .. note:: It is not named next_part, because BaseTypeDecl has a more -- precise version of next_part that returns a BaseTypeDecl. Probably, we -- want to rename the specific versions, and have the root property be -- named next_part. (TODO R925-008) procedure Initialize_Fields_For_Abstract_State_Decl (Self : Bare_Abstract_State_Decl ; Abstract_State_Decl_F_Name : Bare_Defining_Name ; Abstract_State_Decl_F_Aspects : Bare_Aspect_Spec ); function Abstract_State_Decl_F_Name (Node : Bare_Abstract_State_Decl) return Bare_Defining_Name; function Abstract_State_Decl_P_Defining_Names (Node : Bare_Abstract_State_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Abstract_State_Decl_P_Type_Expression (Node : Bare_Abstract_State_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; function Env_Mappings_228 (Node : Bare_Abstract_State_Decl ) return Internal_Env_Assoc ; procedure Abstract_State_Decl_Pre_Env_Actions (Self : Bare_Abstract_State_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Anonymous_Expr_Decl (Self : Bare_Anonymous_Expr_Decl ; Anonymous_Expr_Decl_F_Expr : Bare_Expr ); function Anonymous_Expr_Decl_F_Expr (Node : Bare_Anonymous_Expr_Decl) return Bare_Expr; function Anonymous_Expr_Decl_P_Defining_Names (Node : Bare_Anonymous_Expr_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Anonymous_Expr_Decl_P_Defining_Env (Node : Bare_Anonymous_Expr_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Anonymous_Expr_Decl_P_Type_Expression_Internal (Node : Bare_Anonymous_Expr_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; -- Internal memoized property that actually retrieves the type expression. -- This is done in a memoized property because it involves non-trivial -- computation. function Anonymous_Expr_Decl_P_Type_Expression (Node : Bare_Anonymous_Expr_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; function Anonymous_Expr_Decl_P_Is_Static_Decl (Node : Bare_Anonymous_Expr_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Dispatcher_Base_Formal_Param_Decl_P_Is_Mandatory (Node : Bare_Base_Formal_Param_Decl ) return Boolean ; function Base_Formal_Param_Decl_P_Formal_Type (Node : Bare_Base_Formal_Param_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the type for this formal. function Base_Formal_Param_Decl_P_Parent_Decl (Node : Bare_Base_Formal_Param_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Base_Formal_Param_Decl_P_Get_Param (Node : Bare_Base_Formal_Param_Decl ; Part : Internal_Entity_Basic_Decl ; Param : Internal_Entity_Defining_Name := No_Entity_Defining_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name ; function Base_Formal_Param_Decl_P_Decl_Param (Node : Bare_Base_Formal_Param_Decl ; Param : Internal_Entity_Defining_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name ; -- If self is a ParamSpec of a subprogram body, go fetch the equivalent spec -- in the subprogram decl. function Base_Formal_Param_Decl_P_Next_Part_For_Decl (Node : Bare_Base_Formal_Param_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Base_Formal_Param_Decl_P_Previous_Part_For_Decl (Node : Bare_Base_Formal_Param_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Base_Formal_Param_Decl_P_Is_Mandatory (Node : Bare_Base_Formal_Param_Decl ) return Boolean ; procedure Initialize_Fields_For_Component_Decl (Self : Bare_Component_Decl ; Component_Decl_F_Ids : Bare_Defining_Name_List ; Component_Decl_F_Component_Def : Bare_Component_Def ; Component_Decl_F_Default_Expr : Bare_Expr ; Component_Decl_F_Aspects : Bare_Aspect_Spec ); function Component_Decl_F_Ids (Node : Bare_Component_Decl) return Bare_Defining_Name_List; function Component_Decl_F_Component_Def (Node : Bare_Component_Decl) return Bare_Component_Def; function Component_Decl_F_Default_Expr (Node : Bare_Component_Decl) return Bare_Expr; function Component_Decl_P_Defining_Env (Node : Bare_Component_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- See BasicDecl.defining_env function Component_Decl_P_Defining_Names (Node : Bare_Component_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Component_Decl_P_Array_Ndims (Node : Bare_Component_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Integer ; function Component_Decl_P_Type_Expression (Node : Bare_Component_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; function Component_Decl_P_Constrain_Prefix (Node : Bare_Component_Decl ; Prefix : Bare_Expr ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Component_Decl_P_Container_Type (Node : Bare_Component_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the defining container type for this component declaration. function Component_Decl_P_Xref_Equation (Node : Bare_Component_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Component_Decl_P_Xref_Entry_Point (Node : Bare_Component_Decl ) return Boolean ; function Env_Mappings_1 (Node : Bare_Component_Decl ) return Internal_Env_Assoc_Array_Access ; procedure Component_Decl_Pre_Env_Actions (Self : Bare_Component_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Discriminant_Spec (Self : Bare_Discriminant_Spec ; Discriminant_Spec_F_Ids : Bare_Defining_Name_List ; Discriminant_Spec_F_Type_Expr : Bare_Type_Expr ; Discriminant_Spec_F_Default_Expr : Bare_Expr ); function Discriminant_Spec_F_Ids (Node : Bare_Discriminant_Spec) return Bare_Defining_Name_List; function Discriminant_Spec_F_Type_Expr (Node : Bare_Discriminant_Spec) return Bare_Type_Expr; function Discriminant_Spec_F_Default_Expr (Node : Bare_Discriminant_Spec) return Bare_Expr; function Discriminant_Spec_P_Defining_Names (Node : Bare_Discriminant_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Discriminant_Spec_P_Defining_Env (Node : Bare_Discriminant_Spec ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Discriminant_Spec_P_Type_Expression (Node : Bare_Discriminant_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; function Discriminant_Spec_P_Xref_Entry_Point (Node : Bare_Discriminant_Spec ) return Boolean ; function Discriminant_Spec_P_Xref_Equation (Node : Bare_Discriminant_Spec ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Env_Mappings_0 (Node : Bare_Discriminant_Spec ) return Internal_Env_Assoc_Array_Access ; procedure Discriminant_Spec_Pre_Env_Actions (Self : Bare_Discriminant_Spec; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Generic_Formal (Self : Bare_Generic_Formal ; Generic_Formal_F_Decl : Bare_Basic_Decl ); function Generic_Formal_F_Decl (Node : Bare_Generic_Formal) return Bare_Basic_Decl; function Generic_Formal_P_Defining_Names (Node : Bare_Generic_Formal ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Generic_Formal_P_Type_Expression (Node : Bare_Generic_Formal ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; function Generic_Formal_P_Xref_Entry_Point (Node : Bare_Generic_Formal ) return Boolean ; function Generic_Formal_P_Xref_Equation (Node : Bare_Generic_Formal ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Generic_Formal_Obj_Decl (Self : Bare_Generic_Formal_Obj_Decl ; Generic_Formal_F_Decl : Bare_Basic_Decl ); procedure Initialize_Fields_For_Generic_Formal_Package (Self : Bare_Generic_Formal_Package ; Generic_Formal_F_Decl : Bare_Basic_Decl ); procedure Initialize_Fields_For_Generic_Formal_Subp_Decl (Self : Bare_Generic_Formal_Subp_Decl ; Generic_Formal_F_Decl : Bare_Basic_Decl ); procedure Initialize_Fields_For_Generic_Formal_Type_Decl (Self : Bare_Generic_Formal_Type_Decl ; Generic_Formal_F_Decl : Bare_Basic_Decl ); procedure Initialize_Fields_For_Param_Spec (Self : Bare_Param_Spec ; Param_Spec_F_Ids : Bare_Defining_Name_List ; Param_Spec_F_Has_Aliased : Bare_Aliased_Node ; Param_Spec_F_Mode : Bare_Mode ; Param_Spec_F_Type_Expr : Bare_Type_Expr ; Param_Spec_F_Default_Expr : Bare_Expr ; Param_Spec_F_Aspects : Bare_Aspect_Spec ); function Param_Spec_F_Ids (Node : Bare_Param_Spec) return Bare_Defining_Name_List; function Param_Spec_F_Has_Aliased (Node : Bare_Param_Spec) return Bare_Aliased_Node; function Param_Spec_F_Mode (Node : Bare_Param_Spec) return Bare_Mode; function Param_Spec_F_Type_Expr (Node : Bare_Param_Spec) return Bare_Type_Expr; function Param_Spec_F_Default_Expr (Node : Bare_Param_Spec) return Bare_Expr; function Param_Spec_P_Is_Mandatory (Node : Bare_Param_Spec ) return Boolean ; function Param_Spec_P_Defining_Names (Node : Bare_Param_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Param_Spec_P_Type_Expression (Node : Bare_Param_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; function Param_Spec_P_Defining_Env (Node : Bare_Param_Spec ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Param_Spec_P_Xref_Equation (Node : Bare_Param_Spec ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Param_Spec_P_Xref_Entry_Point (Node : Bare_Param_Spec ) return Boolean ; function Env_Mappings_23 (Node : Bare_Param_Spec ) return Internal_Env_Assoc_Array_Access ; procedure Param_Spec_Pre_Env_Actions (Self : Bare_Param_Spec; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Base_Package_Decl (Self : Bare_Base_Package_Decl ; Base_Package_Decl_F_Package_Name : Bare_Defining_Name ; Base_Package_Decl_F_Aspects : Bare_Aspect_Spec ; Base_Package_Decl_F_Public_Part : Bare_Public_Part ; Base_Package_Decl_F_Private_Part : Bare_Private_Part ; Base_Package_Decl_F_End_Name : Bare_End_Name ); function Base_Package_Decl_F_Package_Name (Node : Bare_Base_Package_Decl) return Bare_Defining_Name; function Base_Package_Decl_F_Public_Part (Node : Bare_Base_Package_Decl) return Bare_Public_Part; function Base_Package_Decl_F_Private_Part (Node : Bare_Base_Package_Decl) return Bare_Private_Part; function Base_Package_Decl_F_End_Name (Node : Bare_Base_Package_Decl) return Bare_End_Name; function Base_Package_Decl_P_Defining_Names (Node : Bare_Base_Package_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Base_Package_Decl_P_Defining_Env (Node : Bare_Base_Package_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Base_Package_Decl_P_Body_Part (Node : Bare_Base_Package_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Package_Body ; -- Return the PackageBody corresponding to this node. function Base_Package_Decl_P_Declarative_Parts (Node : Bare_Base_Package_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Declarative_Part_Array_Access ; function Base_Package_Decl_P_Env_Names (Node : Bare_Base_Package_Decl ) return Symbol_Type_Array_Access ; -- Return the env names that this package defines. Make sure to include the -- ``.__privatepart`` env name if this package doesn't have a private part, as -- some construct will always try to register themselves in the private part -- and therefore expect it to always be defined. procedure Initialize_Fields_For_Generic_Package_Internal (Self : Bare_Generic_Package_Internal ; Base_Package_Decl_F_Package_Name : Bare_Defining_Name ; Base_Package_Decl_F_Aspects : Bare_Aspect_Spec ; Base_Package_Decl_F_Public_Part : Bare_Public_Part ; Base_Package_Decl_F_Private_Part : Bare_Private_Part ; Base_Package_Decl_F_End_Name : Bare_End_Name ); function Generic_Package_Internal_P_Is_Library_Item (Node : Bare_Generic_Package_Internal ) return Boolean ; -- Return whether this is a top-level element. function Env_Trans_Parent_116 (Node : Bare_Generic_Package_Internal ) return Boolean ; function Env_Names_117 (Node : Bare_Generic_Package_Internal ) return Symbol_Type_Array_Access ; procedure Generic_Package_Internal_Pre_Env_Actions (Self : Bare_Generic_Package_Internal; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Package_Decl (Self : Bare_Package_Decl ; Base_Package_Decl_F_Package_Name : Bare_Defining_Name ; Base_Package_Decl_F_Aspects : Bare_Aspect_Spec ; Base_Package_Decl_F_Public_Part : Bare_Public_Part ; Base_Package_Decl_F_Private_Part : Bare_Private_Part ; Base_Package_Decl_F_End_Name : Bare_End_Name ); function Env_Do_47 (Node : Bare_Package_Decl ) return Boolean ; function Initial_Env_48 (Node : Bare_Package_Decl ) return Internal_DesignatedEnv ; function Env_Mappings_49 (Node : Bare_Package_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc_Array_Access ; function Env_Trans_Parent_50 (Node : Bare_Package_Decl ) return Boolean ; function Env_Names_51 (Node : Bare_Package_Decl ) return Symbol_Type_Array_Access ; function Env_Do_52 (Node : Bare_Package_Decl ) return Bare_Compilation_Unit_Array_Access ; function Ref_Env_Nodes_53 (Node : Bare_Package_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_54 (Node : Bare_Package_Decl ) return Boolean ; function Ref_Env_Nodes_55 (Node : Bare_Package_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_56 (Node : Bare_Package_Decl ) return Boolean ; procedure Package_Decl_Pre_Env_Actions (Self : Bare_Package_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Base_Type_Decl (Self : Bare_Base_Type_Decl ; Base_Type_Decl_F_Name : Bare_Defining_Name ); function Base_Type_Decl_F_Name (Node : Bare_Base_Type_Decl) return Bare_Defining_Name; function Base_Type_Decl_P_Defining_Names (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Base_Type_Decl_P_Base_Subtype (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- If this type decl is a subtype decl, return the base subtype. If not, -- return ``Self``. function Base_Type_Decl_P_Anonymous_Access_Type (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Base_Type_Decl_P_Anonymous_Access_Type_Or_Null (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Base_Type_Decl_P_Private_Completion (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the private completion for this type, if there is one. function Base_Type_Decl_P_Model_Of_Type (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the type for which this type is a model, if applicable. function Base_Type_Decl_P_Modeled_Type (Node : Bare_Base_Type_Decl ; From_Unit : Internal_Unit ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return model type for this type if applicable. function Base_Type_Decl_P_Is_View_Of_Type (Node : Bare_Base_Type_Decl ; Comp_View : Internal_Entity_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Predicate that will return true if comp_view is a more complete view of -- type typ, or if it is the same view of type typ. function Base_Type_Decl_P_Is_Array_Or_Rec (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Type_Decl_P_Is_Inherited_Primitive (Node : Bare_Base_Type_Decl ; P : Internal_Entity_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Assuming that P is a primitive of Self, return whether the given primitive -- P is inherited from one of Self's parents. function Base_Type_Decl_P_Get_Record_Representation_Clause (Node : Bare_Base_Type_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Record_Rep_Clause ; -- Return the record representation clause associated to this type decl, if -- applicable (i.e. this type decl defines a record type). function Base_Type_Decl_P_Get_Enum_Representation_Clause (Node : Bare_Base_Type_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Enum_Rep_Clause ; -- Return the enum representation clause associated to this type decl, if -- applicable (i.e. this type decl defines an enum type). function Dispatcher_Base_Type_Decl_P_Primitives_Env (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Dispatcher_Base_Type_Decl_P_Is_Record_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this type is a record type. -- -- .. ATTENTION:: Private tagged types extending public tagged records are not -- considered as record types. function Base_Type_Decl_P_Is_Array_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this type is an array type. function Base_Type_Decl_P_Find_Derived_Types (Node : Bare_Base_Type_Decl ; Root : Internal_Entity ; Origin : Bare_Ada_Node ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Decl_Array_Access ; -- Find types derived from self in the given ``root`` and its children. function Dispatcher_Base_Type_Decl_P_Is_Task_Type (Node : Bare_Base_Type_Decl ) return Boolean ; -- Whether type is a task type function Dispatcher_Base_Type_Decl_P_Is_Real_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a real type or not. function Dispatcher_Base_Type_Decl_P_Is_Float_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a float type or not. function Dispatcher_Base_Type_Decl_P_Is_Fixed_Point (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a fixed point type or not. function Dispatcher_Base_Type_Decl_P_Is_Enum_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is an enum type function Dispatcher_Base_Type_Decl_P_Is_Classwide (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Dispatcher_Base_Type_Decl_P_Is_Access_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether Self is an access type or not function Base_Type_Decl_P_Is_Implicit_Deref (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether Self is an implicitly dereferenceable type or not function Dispatcher_Base_Type_Decl_P_Has_Ud_Indexing (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether self has user defined indexing or not function Dispatcher_Base_Type_Decl_P_Constant_Indexing_Fns (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; -- For a type with user defined indexing, return the set of all -- Constant_Indexing functions. function Dispatcher_Base_Type_Decl_P_Variable_Indexing_Fns (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; -- For a type with user defined indexing, return the set of all -- Variable_Indexing functions. function Dispatcher_Base_Type_Decl_P_Get_Imp_Deref (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr ; -- If self has an Implicit_Dereference aspect, return its expression function Dispatcher_Base_Type_Decl_P_Access_Def (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Access_Def ; function Dispatcher_Base_Type_Decl_P_Is_Char_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a character type or not function Dispatcher_Base_Type_Decl_P_Classwide_Type (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Classwide_Type_Decl ; function Base_Type_Decl_P_Scalar_Base_Type (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Discrete_Base_Subtype_Decl ; function Base_Type_Decl_P_Is_Universal_Type (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this type is one of the two universal types (universal -- integer or universal real). -- -- .. note:: Returns False if Self is null. function Base_Type_Decl_P_Is_Not_Universal_Type (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this type is *not* one of the two universal types (universal -- integer or universal real). -- -- .. note:: Returns False if Self is null. function Base_Type_Decl_P_Is_Access_Type_Predicate (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Predicate to use by logic equation. Return True iff this is an access type, -- but checks first that this type is not null, in which case it returns -- False. function Base_Type_Decl_P_Array_Ndims (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Integer ; function Dispatcher_Base_Type_Decl_P_Discrete_Range (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Discrete_Range ; -- Return the discrete range for this type decl, if applicable. function Base_Type_Decl_P_Static_Predicate (Node : Bare_Base_Type_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr ; -- Return the expression from the Static_Predicate or the Predicate aspect -- defined on this type. function Base_Type_Decl_P_Satisfies_Type_Predicates (Node : Bare_Base_Type_Decl ; Value : Big_Integer_Type ; Imprecise_Fallback : Boolean := False ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return true if the given value satisfies all of this type's static -- predicates, including its parent predicates (in case this is a derived -- type) and its base type predicate (if this is a subtype declaration). -- Return true if no type predicates are defined for this type. function Base_Type_Decl_P_Is_Iterator_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Dispatcher_Base_Type_Decl_P_Is_Discrete_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a discrete type or not. function Dispatcher_Base_Type_Decl_P_Is_Int_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is an integer type or not. function Base_Type_Decl_P_Is_Str_Type_Or_Null (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Dispatcher_Base_Type_Decl_P_Accessed_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- If this type is an access type, or a type with an Implicit_Dereference -- aspect, return the type of a dereference of an instance of this type. function Base_Type_Decl_P_Accessed_Type_No_Call (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Like ``BaseTypeDecl.accessed_type``, but does not perform an implicit call -- if Self represents an access-to-subprogram. function Base_Type_Decl_P_Final_Accessed_Type (Node : Bare_Base_Type_Decl ; First_Call : Boolean := True ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Call accessed_type recursively until we get the most nested accessed type. -- For example, for the following code:: -- -- type A is access Integer; type AA is access A; type AAA is access AA; -- -- ``AAA``'s final_accessed_type is Integer. function Base_Type_Decl_P_Is_Access_To (Node : Bare_Base_Type_Decl ; Typ : Internal_Entity_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Type_Decl_P_Is_Subp_Access_Of (Node : Bare_Base_Type_Decl ; Entity : Internal_Entity_Basic_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Returns whether self is an access type whose accessed type matches other. function Base_Type_Decl_P_Is_Generic_Formal (Node : Bare_Base_Type_Decl ) return Boolean ; -- Return whether this type declaration is a generic formal. function Dispatcher_Base_Type_Decl_P_Is_Tagged_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is tagged or not function Dispatcher_Base_Type_Decl_P_Base_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the base type entity for this derived type declaration function Dispatcher_Base_Type_Decl_P_Base_Types (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; -- Return the list of base types for Self. function Dispatcher_Base_Type_Decl_P_Base_Interfaces (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; function Base_Type_Decl_P_Find_All_Derived_Types (Node : Bare_Base_Type_Decl ; Units : Internal_Unit_Array_Access ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Decl_Array_Access ; -- Return the list of all types that inherit (directly or inderictly) from -- Self among the given units. function Dispatcher_Base_Type_Decl_P_Record_Def (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Record_Def ; function Dispatcher_Base_Type_Decl_P_Array_Def (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Type_Def ; function Base_Type_Decl_P_Array_Def_With_Deref (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Type_Def ; -- Return the array definition corresponding to type `Self` in the context of -- array-indexing, e.g. implicitly dereferencing if `Self` is an access. function Base_Type_Decl_P_Is_Array_Def_With_Deref (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Type_Decl_P_Comp_Type (Node : Bare_Base_Type_Decl ; Is_Subscript : Boolean := False ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the component type of `Self`, if applicable. The component type is -- the type you'll get if you call a value whose type is `Self`. So it can -- either be: -- -- 1. The component type for an array. 2. The return type for an access to -- function. function Base_Type_Decl_P_Index_Type (Node : Bare_Base_Type_Decl ; Dim : Integer ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the index type for dimension ``dim`` for this type, if applicable. -- -- .. WARNING:: ``dim`` is 0-based, so the first ``index_type`` is at index 0. function Base_Type_Decl_P_Expr_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Base_Type_Decl_P_Is_Derived_Type (Node : Bare_Base_Type_Decl ; Other_Type : Internal_Entity_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether Self is derived from other_type. function Dispatcher_Base_Type_Decl_P_Is_Iterable_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether Self is a type that is iterable in a for .. of loop function Dispatcher_Base_Type_Decl_P_Is_Interface_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return True iff this type declaration is an interface definition. function Dispatcher_Base_Type_Decl_P_Iterable_Comp_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Base_Type_Decl_P_Matching_Prefix_Type (Node : Bare_Base_Type_Decl ; Container_Type : Internal_Entity_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Given a dotted expression A.B, where container_type is the container type -- for B, and Self is a potential type for A, returns whether Self is a valid -- type for A in the dotted expression. function Base_Type_Decl_P_Matching_Access_Type (Node : Bare_Base_Type_Decl ; Expected_Type : Internal_Entity_Base_Type_Decl ; For_Assignment : Boolean ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether self is a matching access type for expected_type. function Base_Type_Decl_P_Matching_Formal_Prim_Type (Node : Bare_Base_Type_Decl ; Formal_Type : Internal_Entity_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Type_Decl_P_Matching_Formal_Type_Inverted (Node : Bare_Base_Type_Decl ; Formal_Type : Internal_Entity_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Type_Decl_P_Matching_Formal_Type (Node : Bare_Base_Type_Decl ; Formal_Type : Internal_Entity_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Type_Decl_P_Matching_Formal_Type_Impl (Node : Bare_Base_Type_Decl ; Formal_Type : Internal_Entity_Base_Type_Decl ; Accept_Derived : Boolean := False ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Type_Decl_P_Matching_Assign_Type (Node : Bare_Base_Type_Decl ; Expected_Type : Internal_Entity_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Type_Decl_P_Matching_Type (Node : Bare_Base_Type_Decl ; Expected_Type : Internal_Entity_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether ``self`` matches ``expected_type``. function Base_Type_Decl_P_Matching_Allocator_Type (Node : Bare_Base_Type_Decl ; Allocated_Type : Internal_Entity_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Dispatcher_Base_Type_Decl_P_Canonical_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the canonical type declaration for this type declaration. For -- subtypes, it will return the base type declaration. function Base_Type_Decl_P_Base_Subtype_Or_Null (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Base_Type_Decl_P_Classwide_Type_Node (Node : Bare_Base_Type_Decl ) return Bare_Classwide_Type_Decl ; function Base_Type_Decl_P_Scalar_Base_Subtype_Node (Node : Bare_Base_Type_Decl ) return Bare_Discrete_Base_Subtype_Decl ; -- Helper for scalar_base_subtype. Return the interned node for the subtype -- entity. function Base_Type_Decl_P_Scalar_Base_Subtype (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Discrete_Base_Subtype_Decl ; -- Return the base subtype for this type. Note that this is only legal for -- scalar types. function Dispatcher_Base_Type_Decl_P_Previous_Part (Node : Bare_Base_Type_Decl ; Go_To_Incomplete : Boolean := True ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Returns the previous part for this type decl. function Base_Type_Decl_P_Next_Part (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Returns the next part for this type decl. function Base_Type_Decl_P_Full_View (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the full completion of this type. function Base_Type_Decl_P_Is_Definite_Subtype (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Returns whether this is a definite subtype. -- -- For convenience, this will return ``False`` for incomplete types, even -- though the correct answer is more akin to "non applicable". function Dispatcher_Base_Type_Decl_P_Is_Private (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether node is a private view of corresponding type. function Dispatcher_Base_Type_Decl_P_Discriminants_List (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; -- Return the list of all discriminants of this type. If this type has no -- discriminant or only unknown discriminants, an empty list is returned. function Dispatcher_Base_Type_Decl_P_Root_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the type that is at the root of the derivation hierarchy (ignoring -- secondary interfaces derivations for tagged types) function Base_Type_Decl_P_Next_Part_For_Decl (Node : Bare_Base_Type_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Base_Type_Decl_P_Shapes (Node : Bare_Base_Type_Decl ; Include_Discriminants : Boolean := True ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Shape_Array_Access ; -- Must be called on a record (sub-)type declaration. Return all the possible -- shapes that a value of this record type can take. For example, consider the -- following record definition: -- -- .. code:: -- -- type R (A : Integer; B : Integer) is record X : Integer; case A is when 1 -- .. 10 => Y_1 : Integer; case B is when 1 .. 10 => Z_1 : Integer; when -- others => null; end case; when 11 .. 20 => Y_2 : Integer; case B is when 1 -- .. 10 => Z_2 : Integer; when others => null; end case; when others => null; -- end case; end record; -- -- For this instance, this property will return the following results: -- -- .. code:: -- -- [ [X, Y_1, Z_1], [X, Y_1], [X, Y_2, Z_2], [X, Y_2], [X] ] -- -- .. ATTENTION:: This property is inaccurate when called on a record -- extension which defines components under a certain condition C, and this -- same condition is used to define some components in the parent record: -- in that case, any feasible shape will in practice contain either both -- the components defined under condition C in the child record and the -- parent record, or none of them. -- -- However, due to the simplified algorithm we use here to compute the -- feasible shapes, we will also return shapes that include the components of -- the child record but not the parent record, and conversely. function Base_Type_Decl_F_Dottable_Subps_Env (Node : Bare_Base_Type_Decl ) return Lexical_Env ; -- The environment that contains all subprograms that can be called with the -- dot-notation on values of this type. function Base_Type_Decl_P_Dottable_Subps (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Inner_Env_Assoc_Array_Access ; -- Return the list of all subprograms that can be called with the dot- -- notation on values of this type. We look for them in the public part, -- private part and body part of the package this type is declared in. function Base_Type_Decl_P_Find_Base_Type_Rebindings (Node : Bare_Base_Type_Decl ; Target : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Env_Rebindings ; -- Given Self & a target type node, browse the inheritance hierarchy of Self -- until the target is found, and return its associated rebindings. For -- example, consider the following snippet. -- -- .. code:: -- -- package My_Vectors is new Ada.Containers.Vectors (...); -- -- type My_Vector is new My_Vectors.Vector; -- -- Calling this property on ``My_Vector`` with the target type -- ``Ada.Containers.Vectors.Vector`` will return the rebindings corresponding -- to the instantiation in the first line of the snippet (package My_Vectors). function Env_Mappings_2 (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Base_Type_Decl_P_Primitives_Env (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Base_Type_Decl_P_Is_Record_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this type is a record type. -- -- .. ATTENTION:: Private tagged types extending public tagged records are not -- considered as record types. function Base_Type_Decl_P_Is_Task_Type (Node : Bare_Base_Type_Decl ) return Boolean ; -- Whether type is a task type function Base_Type_Decl_P_Is_Real_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a real type or not. function Base_Type_Decl_P_Is_Float_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a float type or not. function Base_Type_Decl_P_Is_Fixed_Point (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a fixed point type or not. function Base_Type_Decl_P_Is_Enum_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is an enum type function Base_Type_Decl_P_Is_Classwide (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Type_Decl_P_Is_Access_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether Self is an access type or not function Base_Type_Decl_P_Has_Ud_Indexing (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether self has user defined indexing or not function Base_Type_Decl_P_Constant_Indexing_Fns (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; -- For a type with user defined indexing, return the set of all -- Constant_Indexing functions. function Base_Type_Decl_P_Variable_Indexing_Fns (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; -- For a type with user defined indexing, return the set of all -- Variable_Indexing functions. function Base_Type_Decl_P_Get_Imp_Deref (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr ; -- If self has an Implicit_Dereference aspect, return its expression function Base_Type_Decl_P_Access_Def (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Access_Def ; function Base_Type_Decl_P_Is_Char_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a character type or not function Base_Type_Decl_P_Classwide_Type (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Classwide_Type_Decl ; function Base_Type_Decl_P_Discrete_Range (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Discrete_Range ; -- Return the discrete range for this type decl, if applicable. function Base_Type_Decl_P_Is_Discrete_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a discrete type or not. function Base_Type_Decl_P_Is_Int_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is an integer type or not. function Base_Type_Decl_P_Accessed_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- If this type is an access type, or a type with an Implicit_Dereference -- aspect, return the type of a dereference of an instance of this type. function Base_Type_Decl_P_Is_Tagged_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is tagged or not function Base_Type_Decl_P_Base_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the base type entity for this derived type declaration function Base_Type_Decl_P_Base_Types (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; -- Return the list of base types for Self. function Base_Type_Decl_P_Base_Interfaces (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; function Base_Type_Decl_P_Record_Def (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Record_Def ; function Base_Type_Decl_P_Array_Def (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Type_Def ; function Base_Type_Decl_P_Is_Iterable_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether Self is a type that is iterable in a for .. of loop function Base_Type_Decl_P_Is_Interface_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return True iff this type declaration is an interface definition. function Base_Type_Decl_P_Iterable_Comp_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Base_Type_Decl_P_Canonical_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the canonical type declaration for this type declaration. For -- subtypes, it will return the base type declaration. function Base_Type_Decl_P_Previous_Part (Node : Bare_Base_Type_Decl ; Go_To_Incomplete : Boolean := True ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Returns the previous part for this type decl. function Base_Type_Decl_P_Is_Private (Node : Bare_Base_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether node is a private view of corresponding type. function Base_Type_Decl_P_Root_Type (Node : Bare_Base_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the type that is at the root of the derivation hierarchy (ignoring -- secondary interfaces derivations for tagged types) procedure Base_Type_Decl_Pre_Env_Actions (Self : Bare_Base_Type_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Base_Subtype_Decl (Self : Bare_Base_Subtype_Decl ; Base_Type_Decl_F_Name : Bare_Defining_Name ); function Base_Subtype_Decl_P_From_Type_Bound (Node : Bare_Base_Subtype_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Dispatcher_Base_Subtype_Decl_P_Get_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Get the type for this subtype. function Base_Subtype_Decl_P_Primitives_Env (Node : Bare_Base_Subtype_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Base_Subtype_Decl_P_Array_Ndims (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Integer ; function Base_Subtype_Decl_P_Defining_Env (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Base_Subtype_Decl_P_Canonical_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Base_Subtype_Decl_P_Record_Def (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Record_Def ; function Base_Subtype_Decl_P_Accessed_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Base_Subtype_Decl_P_Is_Int_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Is_Discrete_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Is_Real_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Is_Float_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Is_Fixed_Point (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Is_Enum_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Is_Access_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Access_Def (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Access_Def ; function Base_Subtype_Decl_P_Is_Char_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Is_Tagged_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Base_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Base_Subtype_Decl_P_Base_Types (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; function Base_Subtype_Decl_P_Array_Def (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Type_Def ; function Base_Subtype_Decl_P_Is_Classwide (Node : Bare_Base_Subtype_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Discriminants_List (Node : Bare_Base_Subtype_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; function Base_Subtype_Decl_P_Is_Iterable_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Iterable_Comp_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Base_Subtype_Decl_P_Is_Record_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Is_Private (Node : Bare_Base_Subtype_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Root_Type (Node : Bare_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Base_Subtype_Decl_P_Has_Ud_Indexing (Node : Bare_Base_Subtype_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Base_Subtype_Decl_P_Constant_Indexing_Fns (Node : Bare_Base_Subtype_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; function Base_Subtype_Decl_P_Variable_Indexing_Fns (Node : Bare_Base_Subtype_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; procedure Initialize_Fields_For_Discrete_Base_Subtype_Decl (Self : Bare_Discrete_Base_Subtype_Decl ; Base_Type_Decl_F_Name : Bare_Defining_Name ); function Discrete_Base_Subtype_Decl_P_Is_Static_Decl (Node : Bare_Discrete_Base_Subtype_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Discrete_Base_Subtype_Decl_P_Get_Type (Node : Bare_Discrete_Base_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; procedure Initialize_Fields_For_Subtype_Decl (Self : Bare_Subtype_Decl ; Base_Type_Decl_F_Name : Bare_Defining_Name ; Subtype_Decl_F_Subtype : Bare_Subtype_Indication ; Subtype_Decl_F_Aspects : Bare_Aspect_Spec ); function Subtype_Decl_F_Subtype (Node : Bare_Subtype_Decl) return Bare_Subtype_Indication; function Subtype_Decl_P_Get_Type (Node : Bare_Subtype_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Subtype_Decl_P_Discrete_Range (Node : Bare_Subtype_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Discrete_Range ; function Subtype_Decl_P_Xref_Equation (Node : Bare_Subtype_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Subtype_Decl_P_Is_Static_Decl (Node : Bare_Subtype_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Subtype_Decl_P_Xref_Entry_Point (Node : Bare_Subtype_Decl ) return Boolean ; procedure Initialize_Fields_For_Classwide_Type_Decl (Self : Bare_Classwide_Type_Decl ; Base_Type_Decl_F_Name : Bare_Defining_Name ); function Classwide_Type_Decl_P_Typedecl (Node : Bare_Classwide_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Classwide_Type_Decl_P_Is_Classwide (Node : Bare_Classwide_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Classwide_Type_Decl_P_Is_Tagged_Type (Node : Bare_Classwide_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Classwide_Type_Decl_P_Base_Type (Node : Bare_Classwide_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Classwide_Type_Decl_P_Base_Interfaces (Node : Bare_Classwide_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; function Classwide_Type_Decl_P_Record_Def (Node : Bare_Classwide_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Record_Def ; function Classwide_Type_Decl_P_Classwide_Type (Node : Bare_Classwide_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Classwide_Type_Decl ; function Classwide_Type_Decl_P_Is_Iterable_Type (Node : Bare_Classwide_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Classwide_Type_Decl_P_Iterable_Comp_Type (Node : Bare_Classwide_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Classwide_Type_Decl_P_Defining_Env (Node : Bare_Classwide_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Classwide_Type_Decl_P_Is_Private (Node : Bare_Classwide_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Classwide_Type_Decl_P_Is_In_Private_Part (Node : Bare_Classwide_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Classwide_Type_Decl_P_Get_Aspect_Assoc (Node : Bare_Classwide_Type_Decl ; Name : Symbol_Type ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Aspect_Assoc ; function Classwide_Type_Decl_P_Is_Interface_Type (Node : Bare_Classwide_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Classwide_Type_Decl_P_Discriminants_List (Node : Bare_Classwide_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; function Classwide_Type_Decl_P_Previous_Part (Node : Bare_Classwide_Type_Decl ; Go_To_Incomplete : Boolean := True ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Classwide_Type_Decl_P_Canonical_Type (Node : Bare_Classwide_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; procedure Initialize_Fields_For_Incomplete_Type_Decl (Self : Bare_Incomplete_Type_Decl ; Base_Type_Decl_F_Name : Bare_Defining_Name ; Incomplete_Type_Decl_F_Discriminants : Bare_Discriminant_Part ); function Incomplete_Type_Decl_F_Discriminants (Node : Bare_Incomplete_Type_Decl) return Bare_Discriminant_Part; function Incomplete_Type_Decl_P_Find_Next_Part_In (Node : Bare_Incomplete_Type_Decl ; Decl_Part : Internal_Entity_Declarative_Part ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Searches for the next part of Self inside the given declarative part. Since -- Self is an IncompleteTypeDecl, the next part will necessarily be the first -- type declaration of the same name that is not Self. function Incomplete_Type_Decl_P_Defining_Env (Node : Bare_Incomplete_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Incomplete_Type_Decl_P_Discriminants_List (Node : Bare_Incomplete_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; function Env_Mappings_226 (Node : Bare_Incomplete_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_227 (Node : Bare_Incomplete_Type_Decl ) return Boolean ; procedure Incomplete_Type_Decl_Pre_Env_Actions (Self : Bare_Incomplete_Type_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Incomplete_Tagged_Type_Decl (Self : Bare_Incomplete_Tagged_Type_Decl ; Base_Type_Decl_F_Name : Bare_Defining_Name ; Incomplete_Type_Decl_F_Discriminants : Bare_Discriminant_Part ; Incomplete_Tagged_Type_Decl_F_Has_Abstract : Bare_Abstract_Node ); function Incomplete_Tagged_Type_Decl_F_Has_Abstract (Node : Bare_Incomplete_Tagged_Type_Decl) return Bare_Abstract_Node; function Incomplete_Tagged_Type_Decl_P_Is_Tagged_Type (Node : Bare_Incomplete_Tagged_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; procedure Initialize_Fields_For_Protected_Type_Decl (Self : Bare_Protected_Type_Decl ; Base_Type_Decl_F_Name : Bare_Defining_Name ; Protected_Type_Decl_F_Discriminants : Bare_Discriminant_Part ; Protected_Type_Decl_F_Aspects : Bare_Aspect_Spec ; Protected_Type_Decl_F_Interfaces : Bare_Parent_List ; Protected_Type_Decl_F_Definition : Bare_Protected_Def ); function Protected_Type_Decl_F_Discriminants (Node : Bare_Protected_Type_Decl) return Bare_Discriminant_Part; function Protected_Type_Decl_F_Interfaces (Node : Bare_Protected_Type_Decl) return Bare_Parent_List; function Protected_Type_Decl_F_Definition (Node : Bare_Protected_Type_Decl) return Bare_Protected_Def; function Protected_Type_Decl_P_Discriminants_List (Node : Bare_Protected_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; function Protected_Type_Decl_P_Defining_Env (Node : Bare_Protected_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Protected_Type_Decl_P_Next_Part_For_Decl (Node : Bare_Protected_Type_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Protected_Type_Decl_P_Xref_Entry_Point (Node : Bare_Protected_Type_Decl ) return Boolean ; function Protected_Type_Decl_P_Xref_Equation (Node : Bare_Protected_Type_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Protected_Type_Decl_P_Declarative_Parts (Node : Bare_Protected_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Declarative_Part_Array_Access ; function Protected_Type_Decl_P_Env_Names (Node : Bare_Protected_Type_Decl ) return Symbol_Type_Array_Access ; function Env_Mappings_12 (Node : Bare_Protected_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_13 (Node : Bare_Protected_Type_Decl ) return Boolean ; function Env_Names_14 (Node : Bare_Protected_Type_Decl ) return Symbol_Type_Array_Access ; procedure Protected_Type_Decl_Pre_Env_Actions (Self : Bare_Protected_Type_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Task_Type_Decl (Self : Bare_Task_Type_Decl ; Base_Type_Decl_F_Name : Bare_Defining_Name ; Task_Type_Decl_F_Discriminants : Bare_Discriminant_Part ; Task_Type_Decl_F_Aspects : Bare_Aspect_Spec ; Task_Type_Decl_F_Definition : Bare_Task_Def ); function Task_Type_Decl_F_Discriminants (Node : Bare_Task_Type_Decl) return Bare_Discriminant_Part; function Task_Type_Decl_F_Definition (Node : Bare_Task_Type_Decl) return Bare_Task_Def; function Task_Type_Decl_P_Is_Task_Type (Node : Bare_Task_Type_Decl ) return Boolean ; function Task_Type_Decl_P_Env_Names (Node : Bare_Task_Type_Decl ) return Symbol_Type_Array_Access ; function Task_Type_Decl_P_Defining_Env (Node : Bare_Task_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Task_Type_Decl_P_Discriminants_List (Node : Bare_Task_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; function Task_Type_Decl_P_Xref_Entry_Point (Node : Bare_Task_Type_Decl ) return Boolean ; function Task_Type_Decl_P_Xref_Equation (Node : Bare_Task_Type_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Task_Type_Decl_P_Declarative_Parts (Node : Bare_Task_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Declarative_Part_Array_Access ; function Env_Mappings_8 (Node : Bare_Task_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_9 (Node : Bare_Task_Type_Decl ) return Boolean ; function Env_Names_10 (Node : Bare_Task_Type_Decl ) return Symbol_Type_Array_Access ; procedure Task_Type_Decl_Pre_Env_Actions (Self : Bare_Task_Type_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Single_Task_Type_Decl (Self : Bare_Single_Task_Type_Decl ; Base_Type_Decl_F_Name : Bare_Defining_Name ; Task_Type_Decl_F_Discriminants : Bare_Discriminant_Part ; Task_Type_Decl_F_Aspects : Bare_Aspect_Spec ; Task_Type_Decl_F_Definition : Bare_Task_Def ); function Env_Trans_Parent_11 (Node : Bare_Single_Task_Type_Decl ) return Boolean ; procedure Single_Task_Type_Decl_Pre_Env_Actions (Self : Bare_Single_Task_Type_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Type_Decl (Self : Bare_Type_Decl ; Base_Type_Decl_F_Name : Bare_Defining_Name ; Type_Decl_F_Discriminants : Bare_Discriminant_Part ; Type_Decl_F_Type_Def : Bare_Type_Def ; Type_Decl_F_Aspects : Bare_Aspect_Spec ); function Type_Decl_F_Discriminants (Node : Bare_Type_Decl) return Bare_Discriminant_Part; function Type_Decl_F_Type_Def (Node : Bare_Type_Decl) return Bare_Type_Def; function Type_Decl_P_Is_Iterable_Type (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether Self is a type that is iterable in a for .. of loop function Type_Decl_P_Iterable_Comp_Type (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Type_Decl_P_Discrete_Range (Node : Bare_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Discrete_Range ; function Type_Decl_P_Discriminants_List (Node : Bare_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; function Type_Decl_F_Direct_Primitives_Env (Node : Bare_Type_Decl ) return Lexical_Env ; -- The environment that contains all subprograms that are direct primitives of -- this type, that is, primitives that are not inherited. function Type_Decl_F_Direct_Primitive_Subps (Node : Bare_Type_Decl ) return Internal_Inner_Env_Assoc_Array_Access ; -- Return the list of all subprograms that are direct primitives of this type. -- We look for them in the public part and private part of the package this -- type is declared in. function Type_Decl_P_Array_Ndims (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Integer ; function Type_Decl_P_Is_Real_Type (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Decl_P_Is_Float_Type (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Decl_P_Is_Fixed_Point (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Decl_P_Is_Int_Type (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Decl_P_Is_Access_Type (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Decl_P_Is_Static_Decl (Node : Bare_Type_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Decl_P_Accessed_Type (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Type_Decl_P_Access_Def (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Access_Def ; function Type_Decl_P_Is_Tagged_Type (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Decl_P_Base_Type (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Type_Decl_P_Base_Interfaces (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; function Type_Decl_P_Is_Char_Type (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Decl_P_Is_Enum_Type (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Decl_P_Is_Private (Node : Bare_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Decl_P_Array_Def (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Type_Def ; function Type_Decl_P_Root_Type (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Type_Decl_P_Defining_Env (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Type_Decl_P_Record_Def (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Record_Def ; function Type_Decl_P_Xref_Entry_Point (Node : Bare_Type_Decl ) return Boolean ; function Type_Decl_P_Xref_Equation (Node : Bare_Type_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Type_Decl_P_Is_Discrete_Type (Node : Bare_Type_Decl ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Decl_P_Own_Primitives_Env (Node : Bare_Type_Decl ; With_Rebindings : Env_Rebindings ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Return the environment containing the primitives for Self, rebound using -- the given rebindings. function Type_Decl_P_Own_Primitives_Envs (Node : Bare_Type_Decl ; With_Rebindings : Env_Rebindings ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env_Array_Access ; -- Return the environments containing the primitives for Self and its previous -- parts, if there are some. All returned environments are rebound using the -- given rebindings. function Type_Decl_P_Primitives_Envs (Node : Bare_Type_Decl ; With_Rebindings : Env_Rebindings ; Stop_At : Internal_Entity_Base_Type_Decl_Array_Access ; Include_Self : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env_Array_Access ; -- Return the environments containing the primitives for Self (if -- ``include_self`` is True) and all its base types up to ``stop_at``: upon -- rewinding the base type chain, if we stumble on one of the types included -- in the ``stop_at`` set, we stop the recusion of that branch. All returned -- environments are rebound using the given rebindings. function Type_Decl_P_Compute_Primitives_Env (Node : Bare_Type_Decl ; Include_Self : Boolean := True ; Stop_At : Internal_Entity_Base_Type_Decl_Array_Access := No_Internal_Entity_Base_Type_Decl_Array_Type ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Return a environment containing all primitives accessible to Self, with the -- adjusted `primitive_real_type` metadata field. function Type_Decl_P_Parent_Primitives_Env (Node : Bare_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Type_Decl_P_Refined_Parent_Primitives_Env (Node : Bare_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Return a lexical environment containing the primitives inherited by this -- type. This makes sure not to re-include primitives which have already been -- inherited by the previous part of this type, so as to: -- -- - Not overload lexical envs with useless entries (when one has view on this -- part, it necessarily has view on its previous part). -- -- - But most importantly, to fix a visibility issue arising when resolving a -- reference to a subprogram overriden in the public part of a package if the -- type has a refined declaration in its private part, in which case the -- inherited subprogram would take precedence over the overriden one (see -- testcase precise_override_2, U817-024). -- -- This change fixes this issue because, by construction, if the overriden -- subprogram lies in the public part, it means the public type declaration -- already has a view on the inherited subprogram, which means we won't -- include it in the environment computed here for the private view. function Type_Decl_P_Primitives_Env (Node : Bare_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Type_Decl_P_Get_Primitives (Node : Bare_Type_Decl ; Only_Inherited : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; -- Return the list of all primitive operations that are available on this -- type. If `only_inherited` is True, it will only return the primitives that -- are implicitly inherited by this type, discarding those explicitly defined -- on this type. function Type_Decl_P_Get_Imp_Deref (Node : Bare_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr ; function Type_Decl_P_Has_Ud_Indexing (Node : Bare_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Decl_P_Constant_Indexing_Fns (Node : Bare_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; function Type_Decl_P_Variable_Indexing_Fns (Node : Bare_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; function Env_Mappings_3 (Node : Bare_Type_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_4 (Node : Bare_Type_Decl ) return Boolean ; function Ref_Env_Nodes_5 (Node : Bare_Type_Decl ) return Bare_Ada_Node_Array_Access ; function Env_Dest_6 (Node : Bare_Type_Decl ) return Lexical_Env ; function Ref_Cond_7 (Node : Bare_Type_Decl ) return Boolean ; procedure Type_Decl_Pre_Env_Actions (Self : Bare_Type_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Type_Decl_Post_Env_Actions (Self : Bare_Type_Decl; State : in out PLE_Node_State); procedure Initialize_Fields_For_Anonymous_Type_Decl (Self : Bare_Anonymous_Type_Decl ; Base_Type_Decl_F_Name : Bare_Defining_Name ; Type_Decl_F_Discriminants : Bare_Discriminant_Part ; Type_Decl_F_Type_Def : Bare_Type_Def ; Type_Decl_F_Aspects : Bare_Aspect_Spec ); function Anonymous_Type_Decl_P_Access_Def_Matches (Node : Bare_Anonymous_Type_Decl ; Other : Internal_Entity_Base_Type_Decl ; For_Assignment : Boolean ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Returns whether: -- -- 1. Self and other are both access types. 2. Their access def matches -- structurally. If for_assignment is True, matching_assign_type is used -- instead of matching_type to compare the two access defs. function Anonymous_Type_Decl_P_Xref_Entry_Point (Node : Bare_Anonymous_Type_Decl ) return Boolean ; procedure Initialize_Fields_For_Synth_Anonymous_Type_Decl (Self : Bare_Synth_Anonymous_Type_Decl ; Base_Type_Decl_F_Name : Bare_Defining_Name ; Type_Decl_F_Discriminants : Bare_Discriminant_Part ; Type_Decl_F_Type_Def : Bare_Type_Def ; Type_Decl_F_Aspects : Bare_Aspect_Spec ); function Basic_Subp_Decl_P_Defining_Names (Node : Bare_Basic_Subp_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Basic_Subp_Decl_P_Defining_Env (Node : Bare_Basic_Subp_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Basic_Subp_Decl_P_Type_Expression (Node : Bare_Basic_Subp_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; -- The expr type of a subprogram declaration is the return type of the -- subprogram if the subprogram is a function. function Basic_Subp_Decl_P_Get_Body_In_Env (Node : Bare_Basic_Subp_Decl ; Env : Lexical_Env ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Body_Node ; function Basic_Subp_Decl_P_Next_Part_For_Decl (Node : Bare_Basic_Subp_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Basic_Subp_Decl_P_Constrain_Prefix (Node : Bare_Basic_Subp_Decl ; Prefix : Bare_Expr ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Basic_Subp_Decl_P_Expr_Type (Node : Bare_Basic_Subp_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Basic_Subp_Decl_P_Env_Names (Node : Bare_Basic_Subp_Decl ) return Symbol_Type_Array_Access ; function Dispatcher_Basic_Subp_Decl_P_Subp_Decl_Spec (Node : Bare_Basic_Subp_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Subp_Spec ; -- Return the specification for this subprogram function Env_Do_24 (Node : Bare_Basic_Subp_Decl ) return Boolean ; function Initial_Env_25 (Node : Bare_Basic_Subp_Decl ) return Internal_DesignatedEnv ; function Env_Mappings_26 (Node : Bare_Basic_Subp_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc_Array_Access ; function Env_Trans_Parent_27 (Node : Bare_Basic_Subp_Decl ) return Boolean ; function Env_Names_28 (Node : Bare_Basic_Subp_Decl ) return Symbol_Type_Array_Access ; function Env_Do_29 (Node : Bare_Basic_Subp_Decl ) return Bare_Compilation_Unit_Array_Access ; function Ref_Env_Nodes_30 (Node : Bare_Basic_Subp_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_31 (Node : Bare_Basic_Subp_Decl ) return Boolean ; function Ref_Env_Nodes_32 (Node : Bare_Basic_Subp_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_33 (Node : Bare_Basic_Subp_Decl ) return Boolean ; function Env_Do_34 (Node : Bare_Basic_Subp_Decl ) return Boolean ; procedure Basic_Subp_Decl_Pre_Env_Actions (Self : Bare_Basic_Subp_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Basic_Subp_Decl_Post_Env_Actions (Self : Bare_Basic_Subp_Decl; State : in out PLE_Node_State); procedure Initialize_Fields_For_Classic_Subp_Decl (Self : Bare_Classic_Subp_Decl ; Classic_Subp_Decl_F_Overriding : Bare_Overriding_Node ; Classic_Subp_Decl_F_Subp_Spec : Bare_Subp_Spec ); function Classic_Subp_Decl_F_Overriding (Node : Bare_Classic_Subp_Decl) return Bare_Overriding_Node; function Classic_Subp_Decl_F_Subp_Spec (Node : Bare_Classic_Subp_Decl) return Bare_Subp_Spec; function Classic_Subp_Decl_P_Subp_Decl_Spec (Node : Bare_Classic_Subp_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Subp_Spec ; function Classic_Subp_Decl_P_Body_Part (Node : Bare_Classic_Subp_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Subp_Body ; -- Return the BaseSubpBody corresponding to this node. procedure Initialize_Fields_For_Abstract_Subp_Decl (Self : Bare_Abstract_Subp_Decl ; Classic_Subp_Decl_F_Overriding : Bare_Overriding_Node ; Classic_Subp_Decl_F_Subp_Spec : Bare_Subp_Spec ; Abstract_Subp_Decl_F_Aspects : Bare_Aspect_Spec ); procedure Initialize_Fields_For_Formal_Subp_Decl (Self : Bare_Formal_Subp_Decl ; Classic_Subp_Decl_F_Overriding : Bare_Overriding_Node ; Classic_Subp_Decl_F_Subp_Spec : Bare_Subp_Spec ; Formal_Subp_Decl_F_Default_Expr : Bare_Expr ; Formal_Subp_Decl_F_Aspects : Bare_Aspect_Spec ); function Formal_Subp_Decl_F_Default_Expr (Node : Bare_Formal_Subp_Decl) return Bare_Expr; function Formal_Subp_Decl_P_Defining_Names (Node : Bare_Formal_Subp_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Formal_Subp_Decl_P_Xref_Equation (Node : Bare_Formal_Subp_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Formal_Subp_Decl_P_Designated_Subprogram_From (Node : Bare_Formal_Subp_Decl ; Inst : Internal_Entity_Generic_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the first visible subprogram that can match this formal subp in the -- context of an instantiation. This is used to find the matching subprogram -- in an instantiation for a formal subp with a box expr. procedure Initialize_Fields_For_Abstract_Formal_Subp_Decl (Self : Bare_Abstract_Formal_Subp_Decl ; Classic_Subp_Decl_F_Overriding : Bare_Overriding_Node ; Classic_Subp_Decl_F_Subp_Spec : Bare_Subp_Spec ; Formal_Subp_Decl_F_Default_Expr : Bare_Expr ; Formal_Subp_Decl_F_Aspects : Bare_Aspect_Spec ); procedure Initialize_Fields_For_Concrete_Formal_Subp_Decl (Self : Bare_Concrete_Formal_Subp_Decl ; Classic_Subp_Decl_F_Overriding : Bare_Overriding_Node ; Classic_Subp_Decl_F_Subp_Spec : Bare_Subp_Spec ; Formal_Subp_Decl_F_Default_Expr : Bare_Expr ; Formal_Subp_Decl_F_Aspects : Bare_Aspect_Spec ); procedure Initialize_Fields_For_Subp_Decl (Self : Bare_Subp_Decl ; Classic_Subp_Decl_F_Overriding : Bare_Overriding_Node ; Classic_Subp_Decl_F_Subp_Spec : Bare_Subp_Spec ; Subp_Decl_F_Aspects : Bare_Aspect_Spec ); procedure Initialize_Fields_For_Entry_Decl (Self : Bare_Entry_Decl ; Entry_Decl_F_Overriding : Bare_Overriding_Node ; Entry_Decl_F_Spec : Bare_Entry_Spec ; Entry_Decl_F_Aspects : Bare_Aspect_Spec ); function Entry_Decl_F_Overriding (Node : Bare_Entry_Decl) return Bare_Overriding_Node; function Entry_Decl_F_Spec (Node : Bare_Entry_Decl) return Bare_Entry_Spec; function Entry_Decl_P_Subp_Decl_Spec (Node : Bare_Entry_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Subp_Spec ; function Entry_Decl_P_Defining_Names (Node : Bare_Entry_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Entry_Decl_P_Body_Part (Node : Bare_Entry_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Entry_Body ; -- Return the entry body associated to this entry declaration. function Entry_Decl_P_Has_Family (Node : Bare_Entry_Decl ) return Boolean ; -- Return whether this actually declares a family of entries. function Entry_Decl_P_Family_Type (Node : Bare_Entry_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the type designated by the family type, if relevant. Note that the -- family type may be an anonymous range, in which case this property returns -- None. function Env_Mappings_130 (Node : Bare_Entry_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_131 (Node : Bare_Entry_Decl ) return Boolean ; procedure Entry_Decl_Pre_Env_Actions (Self : Bare_Entry_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Enum_Literal_Decl (Self : Bare_Enum_Literal_Decl ; Enum_Literal_Decl_F_Name : Bare_Defining_Name ); function Enum_Literal_Decl_F_Name (Node : Bare_Enum_Literal_Decl) return Bare_Defining_Name; function Enum_Literal_Decl_P_Is_Static_Decl (Node : Bare_Enum_Literal_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Enum_Literal_Decl_P_Enum_Type (Node : Bare_Enum_Literal_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Decl ; -- Return the enum type corresponding to this enum literal. function Enum_Literal_Decl_P_Defining_Names (Node : Bare_Enum_Literal_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Enum_Literal_Decl_P_Synth_Type_Expr (Node : Bare_Enum_Literal_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Enum_Lit_Synth_Type_Expr ; function Enum_Literal_Decl_P_Subp_Decl_Spec (Node : Bare_Enum_Literal_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Subp_Spec ; function Env_Mappings_128 (Node : Bare_Enum_Literal_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_129 (Node : Bare_Enum_Literal_Decl ) return Boolean ; procedure Enum_Literal_Decl_Pre_Env_Actions (Self : Bare_Enum_Literal_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Generic_Subp_Internal (Self : Bare_Generic_Subp_Internal ; Generic_Subp_Internal_F_Subp_Spec : Bare_Subp_Spec ; Generic_Subp_Internal_F_Aspects : Bare_Aspect_Spec ); function Generic_Subp_Internal_F_Subp_Spec (Node : Bare_Generic_Subp_Internal) return Bare_Subp_Spec; function Generic_Subp_Internal_P_Subp_Decl_Spec (Node : Bare_Generic_Subp_Internal ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Subp_Spec ; function Generic_Subp_Internal_P_Remove_Rebindings (Node : Bare_Generic_Subp_Internal ; Base : Env_Rebindings ; Suffix : Env_Rebindings ) return Env_Rebindings ; -- If the rebindings in ``base`` end with ``suffix``, ``base`` is returned -- without it. Otherwise ``base`` is returned as-is. function Generic_Subp_Internal_P_Get_Instantiation (Node : Bare_Generic_Subp_Internal ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Generic_Subp_Instantiation ; -- Return the generic subprogram instantiation node from which this -- GenericSubpInternal node is derived. -- -- .. ATTENTION:: If this GenericSubpInternal is not part of an instantiation, -- but has been fetched through the formal generic subprogram, this will -- return None. function Env_Trans_Parent_104 (Node : Bare_Generic_Subp_Internal ) return Boolean ; function Env_Names_105 (Node : Bare_Generic_Subp_Internal ) return Symbol_Type_Array_Access ; procedure Generic_Subp_Internal_Pre_Env_Actions (Self : Bare_Generic_Subp_Internal; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); function Body_Node_P_Env_Hook_Body (Node : Bare_Body_Node ) return Boolean ; -- Helper for the AdaNode.env_hook. Handle library-level unit body nodes. function Body_Node_P_Subunit_Decl_Env (Node : Bare_Body_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Body_Node_P_In_Scope (Node : Bare_Body_Node ; Origin : Bare_Ada_Node ) return Boolean ; -- Return True if ``origin`` is directly in the scope of this body. function Body_Node_P_Body_Decl_Scope (Node : Bare_Body_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Return the scope of this body's decl. function Body_Node_P_Body_Initial_Env_Name (Node : Bare_Body_Node ) return Symbol_Type ; -- A package or subprogram body has a named parent env only if it is a -- compilation unit root, in which case it will be the name of its -- corresponding declaration. function Body_Node_P_Body_Initial_Env (Node : Bare_Body_Node ) return Internal_DesignatedEnv ; -- Return the initial env for a body. It's always the current environment -- except for compilation unit roots for which we use the environment of their -- corresponding declaration. function Dispatcher_Body_Node_P_Previous_Part_Env_Name (Node : Bare_Body_Node ) return Symbol_Type ; -- Return the name of the lexical env of the previous part of this body. For a -- subunit, the previous part is its stub, otherwise it's the body's -- declaration. If that declaration has a named env, it will be registered -- with the same top_level_env_name as this body. function Dispatcher_Body_Node_P_Previous_Part_Link_Env_Assoc (Node : Bare_Body_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; -- Return the env association that describes where to add a `__nextpart` entry -- for this body, if it corresponds to a non-overloadable entity (i.e. not a -- subprogram). -- -- Note that entry navigation is handled a bit differently and in particular -- we don't need a `__nextpart` link for them. Hence this property is never -- called from EntryBody env specs. function Body_Node_P_Subp_Previous_Part (Node : Bare_Body_Node ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the decl corresponding to this body. Specialized implementation for -- subprogram bodies. function Body_Node_P_Entry_Previous_Part (Node : Bare_Body_Node ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Entry_Decl ; -- Return the EntryDecl corresponding to this node. function Body_Node_P_Package_Previous_Part (Node : Bare_Body_Node ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the BasePackageDecl corresponding to this node. -- -- If the case of generic package declarations, this returns the -- ``package_decl`` field instead of the ``GenericPackageDecl`` itself. function Body_Node_P_Task_Previous_Part (Node : Bare_Body_Node ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the task decl corresponding to this node. function Body_Node_P_Protected_Previous_Part (Node : Bare_Body_Node ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the ProtectedDecl corresponding to this node. function Body_Node_P_Unbound_Previous_Part (Node : Bare_Body_Node ; Env : Lexical_Env ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the previous part for this body. Might be a declaration or a body -- stub. function Body_Node_P_Previous_Part_Internal (Node : Bare_Body_Node ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the previous part for this body. Might be a declaration or a body -- stub. -- -- .. note:: This internal property was introduced by T812-020 in order to -- break an infinite recursion. function Body_Node_P_Previous_Part (Node : Bare_Body_Node ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the previous part for this body. Might be a declaration or a body -- stub. function Body_Node_P_Decl_Part (Node : Bare_Body_Node ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the decl corresponding to this node if applicable. function Body_Node_P_Safe_Generic_Decl_Part (Node : Bare_Body_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Generic_Decl ; -- Return the generic declaration corresponding to this body, if relevant. -- This property is designed to be usable from within env specs. function Body_Node_P_Next_Part_For_Decl (Node : Bare_Body_Node ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- By default, bodies don't have a next part. This is not true for body stubs, -- hence this property is overriden there. function Body_Node_P_Is_Subunit (Node : Bare_Body_Node ) return Boolean ; function Body_Node_P_Subunit_Root (Node : Bare_Body_Node ) return Internal_Entity_Basic_Decl ; -- If self is a subunit, return the body in which it is rooted. function Body_Node_P_Body_Scope (Node : Bare_Body_Node ; Follow_Private : Boolean ; Force_Decl : Boolean := False ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Return the scope for this body. If follow_private, then returns the private -- part if possible. -- -- If force_decl, then returns the corresponding declaration's scope, rather -- than the parent body's scope. function Body_Node_P_Previous_Part_Env_Name (Node : Bare_Body_Node ) return Symbol_Type ; -- Return the name of the lexical env of the previous part of this body. For a -- subunit, the previous part is its stub, otherwise it's the body's -- declaration. If that declaration has a named env, it will be registered -- with the same top_level_env_name as this body. function Body_Node_P_Previous_Part_Link_Env_Assoc (Node : Bare_Body_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; -- Return the env association that describes where to add a `__nextpart` entry -- for this body, if it corresponds to a non-overloadable entity (i.e. not a -- subprogram). -- -- Note that entry navigation is handled a bit differently and in particular -- we don't need a `__nextpart` link for them. Hence this property is never -- called from EntryBody env specs. procedure Initialize_Fields_For_Base_Subp_Body (Self : Bare_Base_Subp_Body ; Base_Subp_Body_F_Overriding : Bare_Overriding_Node ; Base_Subp_Body_F_Subp_Spec : Bare_Subp_Spec ); function Base_Subp_Body_F_Overriding (Node : Bare_Base_Subp_Body) return Bare_Overriding_Node; function Base_Subp_Body_F_Subp_Spec (Node : Bare_Base_Subp_Body) return Bare_Subp_Spec; function Base_Subp_Body_P_Defining_Names (Node : Bare_Base_Subp_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Base_Subp_Body_P_Defining_Env (Node : Bare_Base_Subp_Body ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Base_Subp_Body_P_Type_Expression (Node : Bare_Base_Subp_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; function Base_Subp_Body_P_Expr_Type (Node : Bare_Base_Subp_Body ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Base_Subp_Body_P_Initial_Env_Name (Node : Bare_Base_Subp_Body ; Follow_Private : Boolean := False ) return Symbol_Type ; function Base_Subp_Body_P_Previous_Part_Env_Name (Node : Bare_Base_Subp_Body ) return Symbol_Type ; -- Return the name of the lexical env of the previous part of this subprogram -- body. Due to overloading, do not return anything in case we are not a -- library item or subunit. function Env_Do_133 (Node : Bare_Base_Subp_Body ) return Boolean ; function Initial_Env_134 (Node : Bare_Base_Subp_Body ) return Internal_DesignatedEnv ; function Env_Mappings_135 (Node : Bare_Base_Subp_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc_Array_Access ; function Env_Trans_Parent_136 (Node : Bare_Base_Subp_Body ) return Boolean ; function Env_Mappings_137 (Node : Bare_Base_Subp_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Do_138 (Node : Bare_Base_Subp_Body ) return Bare_Compilation_Unit_Array_Access ; function Ref_Env_Nodes_139 (Node : Bare_Base_Subp_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_140 (Node : Bare_Base_Subp_Body ) return Boolean ; function Ref_Env_Nodes_141 (Node : Bare_Base_Subp_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_142 (Node : Bare_Base_Subp_Body ) return Boolean ; function Ref_Env_Nodes_143 (Node : Bare_Base_Subp_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_144 (Node : Bare_Base_Subp_Body ) return Boolean ; function Ref_Env_Nodes_145 (Node : Bare_Base_Subp_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_146 (Node : Bare_Base_Subp_Body ) return Boolean ; function Ref_Env_Nodes_147 (Node : Bare_Base_Subp_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_148 (Node : Bare_Base_Subp_Body ) return Boolean ; procedure Base_Subp_Body_Pre_Env_Actions (Self : Bare_Base_Subp_Body; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Expr_Function (Self : Bare_Expr_Function ; Base_Subp_Body_F_Overriding : Bare_Overriding_Node ; Base_Subp_Body_F_Subp_Spec : Bare_Subp_Spec ; Expr_Function_F_Expr : Bare_Expr ; Expr_Function_F_Aspects : Bare_Aspect_Spec ); function Expr_Function_F_Expr (Node : Bare_Expr_Function) return Bare_Expr; function Expr_Function_P_Xref_Equation (Node : Bare_Expr_Function ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Expr_Function_P_Xref_Entry_Point (Node : Bare_Expr_Function ) return Boolean ; procedure Initialize_Fields_For_Null_Subp_Decl (Self : Bare_Null_Subp_Decl ; Base_Subp_Body_F_Overriding : Bare_Overriding_Node ; Base_Subp_Body_F_Subp_Spec : Bare_Subp_Spec ; Null_Subp_Decl_F_Aspects : Bare_Aspect_Spec ); procedure Initialize_Fields_For_Subp_Body (Self : Bare_Subp_Body ; Base_Subp_Body_F_Overriding : Bare_Overriding_Node ; Base_Subp_Body_F_Subp_Spec : Bare_Subp_Spec ; Subp_Body_F_Aspects : Bare_Aspect_Spec ; Subp_Body_F_Decls : Bare_Declarative_Part ; Subp_Body_F_Stmts : Bare_Handled_Stmts ; Subp_Body_F_End_Name : Bare_End_Name ); function Subp_Body_F_Decls (Node : Bare_Subp_Body) return Bare_Declarative_Part; function Subp_Body_F_Stmts (Node : Bare_Subp_Body) return Bare_Handled_Stmts; function Subp_Body_F_End_Name (Node : Bare_Subp_Body) return Bare_End_Name; function Subp_Body_P_Declarative_Parts (Node : Bare_Subp_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Declarative_Part_Array_Access ; procedure Initialize_Fields_For_Subp_Renaming_Decl (Self : Bare_Subp_Renaming_Decl ; Base_Subp_Body_F_Overriding : Bare_Overriding_Node ; Base_Subp_Body_F_Subp_Spec : Bare_Subp_Spec ; Subp_Renaming_Decl_F_Renames : Bare_Renaming_Clause ; Subp_Renaming_Decl_F_Aspects : Bare_Aspect_Spec ); function Subp_Renaming_Decl_F_Renames (Node : Bare_Subp_Renaming_Decl) return Bare_Renaming_Clause; function Subp_Renaming_Decl_P_Xref_Entry_Point (Node : Bare_Subp_Renaming_Decl ) return Boolean ; function Subp_Renaming_Decl_P_Xref_Equation (Node : Bare_Subp_Renaming_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Body_Stub_P_Next_Part_For_Decl (Node : Bare_Body_Stub ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Body_Stub_P_Syntactic_Fully_Qualified_Name (Node : Bare_Body_Stub ) return Symbol_Type_Array_Access ; -- Return the syntactic fully qualified name to refer to this body. -- -- Note that this can raise a Property_Error when the stub is in an illegal -- place (too nested, in a declare block, etc.). function Body_Stub_P_Env_Names (Node : Bare_Body_Stub ) return Symbol_Type_Array_Access ; -- All body stubs allow for a named environment, which is registered with a -- `__stub` appended to the body's top_level_env_name. function Body_Stub_P_Previous_Part_Link_Env_Assoc (Node : Bare_Body_Stub ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; procedure Initialize_Fields_For_Package_Body_Stub (Self : Bare_Package_Body_Stub ; Package_Body_Stub_F_Name : Bare_Defining_Name ; Package_Body_Stub_F_Aspects : Bare_Aspect_Spec ); function Package_Body_Stub_F_Name (Node : Bare_Package_Body_Stub) return Bare_Defining_Name; function Package_Body_Stub_P_Defining_Names (Node : Bare_Package_Body_Stub ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Env_Mappings_220 (Node : Bare_Package_Body_Stub ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_221 (Node : Bare_Package_Body_Stub ) return Boolean ; function Env_Names_222 (Node : Bare_Package_Body_Stub ) return Symbol_Type_Array_Access ; procedure Package_Body_Stub_Pre_Env_Actions (Self : Bare_Package_Body_Stub; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Protected_Body_Stub (Self : Bare_Protected_Body_Stub ; Protected_Body_Stub_F_Name : Bare_Defining_Name ; Protected_Body_Stub_F_Aspects : Bare_Aspect_Spec ); function Protected_Body_Stub_F_Name (Node : Bare_Protected_Body_Stub) return Bare_Defining_Name; function Protected_Body_Stub_P_Defining_Names (Node : Bare_Protected_Body_Stub ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Env_Mappings_214 (Node : Bare_Protected_Body_Stub ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_215 (Node : Bare_Protected_Body_Stub ) return Boolean ; function Env_Names_216 (Node : Bare_Protected_Body_Stub ) return Symbol_Type_Array_Access ; procedure Protected_Body_Stub_Pre_Env_Actions (Self : Bare_Protected_Body_Stub; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Subp_Body_Stub (Self : Bare_Subp_Body_Stub ; Subp_Body_Stub_F_Overriding : Bare_Overriding_Node ; Subp_Body_Stub_F_Subp_Spec : Bare_Subp_Spec ; Subp_Body_Stub_F_Aspects : Bare_Aspect_Spec ); function Subp_Body_Stub_F_Overriding (Node : Bare_Subp_Body_Stub) return Bare_Overriding_Node; function Subp_Body_Stub_F_Subp_Spec (Node : Bare_Subp_Body_Stub) return Bare_Subp_Spec; function Subp_Body_Stub_P_Defining_Names (Node : Bare_Subp_Body_Stub ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Subp_Body_Stub_P_Type_Expression (Node : Bare_Subp_Body_Stub ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; function Env_Mappings_217 (Node : Bare_Subp_Body_Stub ) return Internal_Env_Assoc ; function Env_Trans_Parent_218 (Node : Bare_Subp_Body_Stub ) return Boolean ; function Env_Names_219 (Node : Bare_Subp_Body_Stub ) return Symbol_Type_Array_Access ; procedure Subp_Body_Stub_Pre_Env_Actions (Self : Bare_Subp_Body_Stub; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Task_Body_Stub (Self : Bare_Task_Body_Stub ; Task_Body_Stub_F_Name : Bare_Defining_Name ; Task_Body_Stub_F_Aspects : Bare_Aspect_Spec ); function Task_Body_Stub_F_Name (Node : Bare_Task_Body_Stub) return Bare_Defining_Name; function Task_Body_Stub_P_Defining_Names (Node : Bare_Task_Body_Stub ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Env_Mappings_223 (Node : Bare_Task_Body_Stub ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_224 (Node : Bare_Task_Body_Stub ) return Boolean ; function Env_Names_225 (Node : Bare_Task_Body_Stub ) return Symbol_Type_Array_Access ; procedure Task_Body_Stub_Pre_Env_Actions (Self : Bare_Task_Body_Stub; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Entry_Body (Self : Bare_Entry_Body ; Entry_Body_F_Entry_Name : Bare_Defining_Name ; Entry_Body_F_Index_Spec : Bare_Entry_Index_Spec ; Entry_Body_F_Params : Bare_Entry_Completion_Formal_Params ; Entry_Body_F_Aspects : Bare_Aspect_Spec ; Entry_Body_F_Barrier : Bare_Expr ; Entry_Body_F_Decls : Bare_Declarative_Part ; Entry_Body_F_Stmts : Bare_Handled_Stmts ; Entry_Body_F_End_Name : Bare_End_Name ); function Entry_Body_F_Entry_Name (Node : Bare_Entry_Body) return Bare_Defining_Name; function Entry_Body_F_Index_Spec (Node : Bare_Entry_Body) return Bare_Entry_Index_Spec; function Entry_Body_F_Params (Node : Bare_Entry_Body) return Bare_Entry_Completion_Formal_Params; function Entry_Body_F_Barrier (Node : Bare_Entry_Body) return Bare_Expr; function Entry_Body_F_Decls (Node : Bare_Entry_Body) return Bare_Declarative_Part; function Entry_Body_F_Stmts (Node : Bare_Entry_Body) return Bare_Handled_Stmts; function Entry_Body_F_End_Name (Node : Bare_Entry_Body) return Bare_End_Name; function Entry_Body_P_Defining_Names (Node : Bare_Entry_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Entry_Body_P_Declarative_Parts (Node : Bare_Entry_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Declarative_Part_Array_Access ; function Entry_Body_P_Xref_Entry_Point (Node : Bare_Entry_Body ) return Boolean ; function Entry_Body_P_Xref_Equation (Node : Bare_Entry_Body ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Env_Do_209 (Node : Bare_Entry_Body ) return Boolean ; function Initial_Env_210 (Node : Bare_Entry_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_DesignatedEnv ; function Env_Mappings_211 (Node : Bare_Entry_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc_Array_Access ; function Env_Trans_Parent_212 (Node : Bare_Entry_Body ) return Boolean ; procedure Entry_Body_Pre_Env_Actions (Self : Bare_Entry_Body; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Package_Body (Self : Bare_Package_Body ; Package_Body_F_Package_Name : Bare_Defining_Name ; Package_Body_F_Aspects : Bare_Aspect_Spec ; Package_Body_F_Decls : Bare_Declarative_Part ; Package_Body_F_Stmts : Bare_Handled_Stmts ; Package_Body_F_End_Name : Bare_End_Name ); function Package_Body_F_Package_Name (Node : Bare_Package_Body) return Bare_Defining_Name; function Package_Body_F_Decls (Node : Bare_Package_Body) return Bare_Declarative_Part; function Package_Body_F_Stmts (Node : Bare_Package_Body) return Bare_Handled_Stmts; function Package_Body_F_End_Name (Node : Bare_Package_Body) return Bare_End_Name; function Package_Body_P_Defining_Names (Node : Bare_Package_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Package_Body_P_Defining_Env (Node : Bare_Package_Body ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Package_Body_P_Declarative_Parts (Node : Bare_Package_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Declarative_Part_Array_Access ; function Package_Body_P_Package_Decl_Uses_Clauses_Envs (Node : Bare_Package_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Return the environments for the use clauses of the package decl of this -- body. Used because they need to be explicitly referenced. function Env_Do_158 (Node : Bare_Package_Body ) return Boolean ; function Initial_Env_159 (Node : Bare_Package_Body ) return Internal_DesignatedEnv ; function Env_Mappings_160 (Node : Bare_Package_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_161 (Node : Bare_Package_Body ) return Boolean ; function Env_Do_162 (Node : Bare_Package_Body ) return Bare_Compilation_Unit_Array_Access ; function Ref_Env_Nodes_163 (Node : Bare_Package_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_164 (Node : Bare_Package_Body ) return Boolean ; function Ref_Env_Nodes_165 (Node : Bare_Package_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_166 (Node : Bare_Package_Body ) return Boolean ; function Ref_Env_Nodes_167 (Node : Bare_Package_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_168 (Node : Bare_Package_Body ) return Boolean ; function Ref_Env_Nodes_169 (Node : Bare_Package_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_170 (Node : Bare_Package_Body ) return Boolean ; function Ref_Env_Nodes_171 (Node : Bare_Package_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_172 (Node : Bare_Package_Body ) return Boolean ; function Ref_Env_Nodes_173 (Node : Bare_Package_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_174 (Node : Bare_Package_Body ) return Boolean ; function Ref_Env_Nodes_175 (Node : Bare_Package_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_176 (Node : Bare_Package_Body ) return Boolean ; procedure Package_Body_Pre_Env_Actions (Self : Bare_Package_Body; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Protected_Body (Self : Bare_Protected_Body ; Protected_Body_F_Name : Bare_Defining_Name ; Protected_Body_F_Aspects : Bare_Aspect_Spec ; Protected_Body_F_Decls : Bare_Declarative_Part ; Protected_Body_F_End_Name : Bare_End_Name ); function Protected_Body_F_Name (Node : Bare_Protected_Body) return Bare_Defining_Name; function Protected_Body_F_Decls (Node : Bare_Protected_Body) return Bare_Declarative_Part; function Protected_Body_F_End_Name (Node : Bare_Protected_Body) return Bare_End_Name; function Protected_Body_P_Defining_Names (Node : Bare_Protected_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Protected_Body_P_Declarative_Parts (Node : Bare_Protected_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Declarative_Part_Array_Access ; function Env_Do_193 (Node : Bare_Protected_Body ) return Boolean ; function Initial_Env_194 (Node : Bare_Protected_Body ) return Internal_DesignatedEnv ; function Env_Mappings_195 (Node : Bare_Protected_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_196 (Node : Bare_Protected_Body ) return Boolean ; function Env_Do_197 (Node : Bare_Protected_Body ) return Bare_Compilation_Unit_Array_Access ; function Ref_Env_Nodes_198 (Node : Bare_Protected_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_199 (Node : Bare_Protected_Body ) return Boolean ; function Ref_Env_Nodes_200 (Node : Bare_Protected_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_201 (Node : Bare_Protected_Body ) return Boolean ; function Ref_Env_Nodes_202 (Node : Bare_Protected_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_203 (Node : Bare_Protected_Body ) return Boolean ; function Ref_Env_Nodes_204 (Node : Bare_Protected_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_205 (Node : Bare_Protected_Body ) return Boolean ; function Ref_Env_Nodes_206 (Node : Bare_Protected_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Env_Nodes_207 (Node : Bare_Protected_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_208 (Node : Bare_Protected_Body ) return Boolean ; procedure Protected_Body_Pre_Env_Actions (Self : Bare_Protected_Body; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Task_Body (Self : Bare_Task_Body ; Task_Body_F_Name : Bare_Defining_Name ; Task_Body_F_Aspects : Bare_Aspect_Spec ; Task_Body_F_Decls : Bare_Declarative_Part ; Task_Body_F_Stmts : Bare_Handled_Stmts ; Task_Body_F_End_Name : Bare_End_Name ); function Task_Body_F_Name (Node : Bare_Task_Body) return Bare_Defining_Name; function Task_Body_F_Decls (Node : Bare_Task_Body) return Bare_Declarative_Part; function Task_Body_F_Stmts (Node : Bare_Task_Body) return Bare_Handled_Stmts; function Task_Body_F_End_Name (Node : Bare_Task_Body) return Bare_End_Name; function Task_Body_P_Defining_Names (Node : Bare_Task_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Task_Body_P_Task_Type_Decl_Scope (Node : Bare_Task_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Task_Body_P_Task_Type (Node : Bare_Task_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Task_Type_Decl ; function Env_Do_177 (Node : Bare_Task_Body ) return Boolean ; function Initial_Env_178 (Node : Bare_Task_Body ) return Internal_DesignatedEnv ; function Env_Mappings_179 (Node : Bare_Task_Body ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_180 (Node : Bare_Task_Body ) return Boolean ; function Env_Do_181 (Node : Bare_Task_Body ) return Bare_Compilation_Unit_Array_Access ; function Ref_Env_Nodes_182 (Node : Bare_Task_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_183 (Node : Bare_Task_Body ) return Boolean ; function Ref_Env_Nodes_184 (Node : Bare_Task_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_185 (Node : Bare_Task_Body ) return Boolean ; function Ref_Env_Nodes_186 (Node : Bare_Task_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_187 (Node : Bare_Task_Body ) return Boolean ; function Ref_Env_Nodes_188 (Node : Bare_Task_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_189 (Node : Bare_Task_Body ) return Boolean ; function Ref_Env_Nodes_190 (Node : Bare_Task_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Env_Nodes_191 (Node : Bare_Task_Body ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_192 (Node : Bare_Task_Body ) return Boolean ; procedure Task_Body_Pre_Env_Actions (Self : Bare_Task_Body; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Entry_Index_Spec (Self : Bare_Entry_Index_Spec ; Entry_Index_Spec_F_Id : Bare_Defining_Name ; Entry_Index_Spec_F_Subtype : Bare_Ada_Node ); function Entry_Index_Spec_F_Id (Node : Bare_Entry_Index_Spec) return Bare_Defining_Name; function Entry_Index_Spec_F_Subtype (Node : Bare_Entry_Index_Spec) return Bare_Ada_Node; function Entry_Index_Spec_P_Defining_Names (Node : Bare_Entry_Index_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Entry_Index_Spec_P_Defining_Env (Node : Bare_Entry_Index_Spec ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Entry_Index_Spec_P_Expr_Type (Node : Bare_Entry_Index_Spec ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Entry_Index_Spec_P_Xref_Equation (Node : Bare_Entry_Index_Spec ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Entry_Index_Spec_P_Xref_Entry_Point (Node : Bare_Entry_Index_Spec ) return Boolean ; function Env_Mappings_213 (Node : Bare_Entry_Index_Spec ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; procedure Entry_Index_Spec_Pre_Env_Actions (Self : Bare_Entry_Index_Spec; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); function Error_Decl_P_Defining_Names (Node : Bare_Error_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Error_Decl_P_Child_Decl_Initial_Env_Name (Node : Bare_Error_Decl ; Private_Part : Boolean := False ) return Symbol_Type ; -- Override for error decls, which cannot be child decls. procedure Initialize_Fields_For_Exception_Decl (Self : Bare_Exception_Decl ; Exception_Decl_F_Ids : Bare_Defining_Name_List ; Exception_Decl_F_Renames : Bare_Renaming_Clause ; Exception_Decl_F_Aspects : Bare_Aspect_Spec ); function Exception_Decl_F_Ids (Node : Bare_Exception_Decl) return Bare_Defining_Name_List; function Exception_Decl_F_Renames (Node : Bare_Exception_Decl) return Bare_Renaming_Clause; function Exception_Decl_P_Defining_Names (Node : Bare_Exception_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Exception_Decl_P_Next_Part_For_Decl (Node : Bare_Exception_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- An exception declaration never has a next part. function Exception_Decl_P_Xref_Entry_Point (Node : Bare_Exception_Decl ) return Boolean ; function Exception_Decl_P_Xref_Equation (Node : Bare_Exception_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Env_Mappings_57 (Node : Bare_Exception_Decl ) return Internal_Env_Assoc_Array_Access ; procedure Exception_Decl_Pre_Env_Actions (Self : Bare_Exception_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Exception_Handler (Self : Bare_Exception_Handler ; Exception_Handler_F_Exception_Name : Bare_Defining_Name ; Exception_Handler_F_Handled_Exceptions : Bare_Alternatives_List ; Exception_Handler_F_Stmts : Bare_Stmt_List ); function Exception_Handler_F_Exception_Name (Node : Bare_Exception_Handler) return Bare_Defining_Name; function Exception_Handler_F_Handled_Exceptions (Node : Bare_Exception_Handler) return Bare_Alternatives_List; function Exception_Handler_F_Stmts (Node : Bare_Exception_Handler) return Bare_Stmt_List; function Exception_Handler_P_Defining_Names (Node : Bare_Exception_Handler ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Exception_Handler_P_Expr_Type (Node : Bare_Exception_Handler ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Exception_Handler_P_Xref_Equation (Node : Bare_Exception_Handler ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Exception_Handler_P_Xref_Entry_Point (Node : Bare_Exception_Handler ) return Boolean ; function Env_Trans_Parent_149 (Node : Bare_Exception_Handler ) return Boolean ; function Env_Mappings_150 (Node : Bare_Exception_Handler ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc_Array_Access ; procedure Exception_Handler_Pre_Env_Actions (Self : Bare_Exception_Handler; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_For_Loop_Var_Decl (Self : Bare_For_Loop_Var_Decl ; For_Loop_Var_Decl_F_Id : Bare_Defining_Name ; For_Loop_Var_Decl_F_Id_Type : Bare_Subtype_Indication ); function For_Loop_Var_Decl_F_Id (Node : Bare_For_Loop_Var_Decl) return Bare_Defining_Name; function For_Loop_Var_Decl_F_Id_Type (Node : Bare_For_Loop_Var_Decl) return Bare_Subtype_Indication; function For_Loop_Var_Decl_P_Defining_Names (Node : Bare_For_Loop_Var_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function For_Loop_Var_Decl_P_Defining_Env (Node : Bare_For_Loop_Var_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function For_Loop_Var_Decl_P_Expr_Type (Node : Bare_For_Loop_Var_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Env_Mappings_132 (Node : Bare_For_Loop_Var_Decl ) return Internal_Env_Assoc ; procedure For_Loop_Var_Decl_Pre_Env_Actions (Self : Bare_For_Loop_Var_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Generic_Decl (Self : Bare_Generic_Decl ; Generic_Decl_F_Formal_Part : Bare_Generic_Formal_Part ); function Generic_Decl_F_Formal_Part (Node : Bare_Generic_Decl) return Bare_Generic_Formal_Part; function Dispatcher_Generic_Decl_P_Decl (Node : Bare_Generic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Generic_Decl_P_Get_Aspect_Assoc (Node : Bare_Generic_Decl ; Name : Symbol_Type ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Aspect_Assoc ; procedure Initialize_Fields_For_Generic_Package_Decl (Self : Bare_Generic_Package_Decl ; Generic_Decl_F_Formal_Part : Bare_Generic_Formal_Part ; Generic_Package_Decl_F_Package_Decl : Bare_Generic_Package_Internal ); function Generic_Package_Decl_F_Package_Decl (Node : Bare_Generic_Package_Decl) return Bare_Generic_Package_Internal; function Generic_Package_Decl_P_Defining_Env (Node : Bare_Generic_Package_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Generic_Package_Decl_P_Defining_Names (Node : Bare_Generic_Package_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Generic_Package_Decl_P_Body_Part (Node : Bare_Generic_Package_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Package_Body ; -- Return the PackageBody corresponding to this node, or null if there is -- none. function Generic_Package_Decl_P_Decl (Node : Bare_Generic_Package_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Env_Do_118 (Node : Bare_Generic_Package_Decl ) return Boolean ; function Initial_Env_119 (Node : Bare_Generic_Package_Decl ) return Internal_DesignatedEnv ; function Env_Mappings_120 (Node : Bare_Generic_Package_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc_Array_Access ; function Env_Trans_Parent_121 (Node : Bare_Generic_Package_Decl ) return Boolean ; function Env_Do_122 (Node : Bare_Generic_Package_Decl ) return Bare_Compilation_Unit_Array_Access ; function Ref_Env_Nodes_123 (Node : Bare_Generic_Package_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_124 (Node : Bare_Generic_Package_Decl ) return Boolean ; function Ref_Env_Nodes_125 (Node : Bare_Generic_Package_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_126 (Node : Bare_Generic_Package_Decl ) return Boolean ; procedure Generic_Package_Decl_Pre_Env_Actions (Self : Bare_Generic_Package_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Generic_Subp_Decl (Self : Bare_Generic_Subp_Decl ; Generic_Decl_F_Formal_Part : Bare_Generic_Formal_Part ; Generic_Subp_Decl_F_Subp_Decl : Bare_Generic_Subp_Internal ); function Generic_Subp_Decl_F_Subp_Decl (Node : Bare_Generic_Subp_Decl) return Bare_Generic_Subp_Internal; function Generic_Subp_Decl_P_Defining_Names (Node : Bare_Generic_Subp_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Generic_Subp_Decl_P_Body_Part (Node : Bare_Generic_Subp_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Subp_Body ; -- Return the BaseSubpBody corresponding to this node. function Generic_Subp_Decl_P_Decl (Node : Bare_Generic_Subp_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Generic_Subp_Decl_P_Is_Imported (Node : Bare_Generic_Subp_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Generic_Subp_Decl_P_Next_Part_For_Decl (Node : Bare_Generic_Subp_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Env_Do_106 (Node : Bare_Generic_Subp_Decl ) return Boolean ; function Initial_Env_107 (Node : Bare_Generic_Subp_Decl ) return Internal_DesignatedEnv ; function Env_Mappings_108 (Node : Bare_Generic_Subp_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc_Array_Access ; function Env_Trans_Parent_109 (Node : Bare_Generic_Subp_Decl ) return Boolean ; function Env_Do_110 (Node : Bare_Generic_Subp_Decl ) return Bare_Compilation_Unit_Array_Access ; function Ref_Env_Nodes_111 (Node : Bare_Generic_Subp_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_112 (Node : Bare_Generic_Subp_Decl ) return Boolean ; function Ref_Env_Nodes_113 (Node : Bare_Generic_Subp_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_114 (Node : Bare_Generic_Subp_Decl ) return Boolean ; function Env_Do_115 (Node : Bare_Generic_Subp_Decl ) return Boolean ; procedure Generic_Subp_Decl_Pre_Env_Actions (Self : Bare_Generic_Subp_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Generic_Subp_Decl_Post_Env_Actions (Self : Bare_Generic_Subp_Decl; State : in out PLE_Node_State); procedure Initialize_Fields_For_Generic_Instantiation (Self : Bare_Generic_Instantiation ); function Generic_Instantiation_F_Instantiation_Env (Node : Bare_Generic_Instantiation ) return Lexical_Env ; function Generic_Instantiation_P_Instantiation_Bindings (Node : Bare_Generic_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Inner_Env_Assoc_Array_Access ; function Generic_Instantiation_P_Instantiation_Bindings_Internal (Node : Bare_Generic_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Inner_Env_Assoc_Array_Access ; function Dispatcher_Generic_Instantiation_P_Generic_Entity_Name (Node : Bare_Generic_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Name ; -- Return the name of the generic entity designated by this generic -- instantiation. function Dispatcher_Generic_Instantiation_P_Generic_Inst_Params (Node : Bare_Generic_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Assoc_List ; -- Return the parameters of this generic instantiation function Generic_Instantiation_P_Is_Any_Formal (Node : Bare_Generic_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Generic_Instantiation_P_Nonbound_Generic_Decl (Node : Bare_Generic_Instantiation ) return Internal_Entity_Generic_Decl ; -- Return the formal package designated by the right hand part of this generic -- package instantiation. function Dispatcher_Generic_Instantiation_P_Designated_Generic_Decl (Node : Bare_Generic_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the generic decl entity designated by this instantiation, containing -- the generic context. This is equivalent to the expanded generic unit in -- GNAT. function Generic_Instantiation_F_Actual_Expr_Decls (Node : Bare_Generic_Instantiation ) return Bare_Anonymous_Expr_Decl_Array_Access ; function Generic_Instantiation_P_Xref_Entry_Point (Node : Bare_Generic_Instantiation ) return Boolean ; function Generic_Instantiation_P_Xref_Equation (Node : Bare_Generic_Instantiation ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Generic_Package_Instantiation (Self : Bare_Generic_Package_Instantiation ; Generic_Package_Instantiation_F_Name : Bare_Defining_Name ; Generic_Package_Instantiation_F_Generic_Pkg_Name : Bare_Name ; Generic_Package_Instantiation_F_Params : Bare_Assoc_List ; Generic_Package_Instantiation_F_Aspects : Bare_Aspect_Spec ); function Generic_Package_Instantiation_F_Name (Node : Bare_Generic_Package_Instantiation) return Bare_Defining_Name; function Generic_Package_Instantiation_F_Generic_Pkg_Name (Node : Bare_Generic_Package_Instantiation) return Bare_Name; function Generic_Package_Instantiation_F_Params (Node : Bare_Generic_Package_Instantiation) return Bare_Assoc_List; function Generic_Package_Instantiation_P_Generic_Entity_Name (Node : Bare_Generic_Package_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Name ; function Generic_Package_Instantiation_P_Generic_Inst_Params (Node : Bare_Generic_Package_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Assoc_List ; function Generic_Package_Instantiation_P_Designated_Package (Node : Bare_Generic_Package_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Package_Decl ; function Generic_Package_Instantiation_P_Designated_Generic_Decl (Node : Bare_Generic_Package_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Generic_Package_Instantiation_P_Defining_Env_Impl (Node : Bare_Generic_Package_Instantiation ; Inst_From_Formal : Boolean := False ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Specialized function for getting the defining env for this generic -- instantiation. -- -- If ``inst_from_formal`` is True, we know that this generic package -- instantiation is coming from a rebound formal package, and that we need -- visibility on the formals. function Generic_Package_Instantiation_P_Defining_Env (Node : Bare_Generic_Package_Instantiation ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Generic_Package_Instantiation_P_Initial_Env_Name (Node : Bare_Generic_Package_Instantiation ) return Symbol_Type ; function Generic_Package_Instantiation_P_Env_Names (Node : Bare_Generic_Package_Instantiation ) return Symbol_Type_Array_Access ; function Generic_Package_Instantiation_P_Defining_Names (Node : Bare_Generic_Package_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Env_Do_67 (Node : Bare_Generic_Package_Instantiation ) return Boolean ; function Initial_Env_68 (Node : Bare_Generic_Package_Instantiation ) return Internal_DesignatedEnv ; function Env_Mappings_69 (Node : Bare_Generic_Package_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_70 (Node : Bare_Generic_Package_Instantiation ) return Boolean ; function Env_Names_71 (Node : Bare_Generic_Package_Instantiation ) return Symbol_Type_Array_Access ; function Env_Do_72 (Node : Bare_Generic_Package_Instantiation ) return Bare_Compilation_Unit_Array_Access ; function Ref_Env_Nodes_73 (Node : Bare_Generic_Package_Instantiation ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_74 (Node : Bare_Generic_Package_Instantiation ) return Boolean ; function Ref_Env_Nodes_75 (Node : Bare_Generic_Package_Instantiation ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_76 (Node : Bare_Generic_Package_Instantiation ) return Boolean ; procedure Generic_Package_Instantiation_Pre_Env_Actions (Self : Bare_Generic_Package_Instantiation; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Generic_Subp_Instantiation (Self : Bare_Generic_Subp_Instantiation ; Generic_Subp_Instantiation_F_Overriding : Bare_Overriding_Node ; Generic_Subp_Instantiation_F_Kind : Bare_Subp_Kind ; Generic_Subp_Instantiation_F_Subp_Name : Bare_Defining_Name ; Generic_Subp_Instantiation_F_Generic_Subp_Name : Bare_Name ; Generic_Subp_Instantiation_F_Params : Bare_Assoc_List ; Generic_Subp_Instantiation_F_Aspects : Bare_Aspect_Spec ); function Generic_Subp_Instantiation_F_Overriding (Node : Bare_Generic_Subp_Instantiation) return Bare_Overriding_Node; function Generic_Subp_Instantiation_F_Kind (Node : Bare_Generic_Subp_Instantiation) return Bare_Subp_Kind; function Generic_Subp_Instantiation_F_Subp_Name (Node : Bare_Generic_Subp_Instantiation) return Bare_Defining_Name; function Generic_Subp_Instantiation_F_Generic_Subp_Name (Node : Bare_Generic_Subp_Instantiation) return Bare_Name; function Generic_Subp_Instantiation_F_Params (Node : Bare_Generic_Subp_Instantiation) return Bare_Assoc_List; function Generic_Subp_Instantiation_P_Defining_Names (Node : Bare_Generic_Subp_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Generic_Subp_Instantiation_P_Generic_Entity_Name (Node : Bare_Generic_Subp_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Name ; function Generic_Subp_Instantiation_P_Generic_Inst_Params (Node : Bare_Generic_Subp_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Assoc_List ; function Generic_Subp_Instantiation_P_Designated_Subp (Node : Bare_Generic_Subp_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity ; -- Return the subprogram decl designated by this instantiation. function Generic_Subp_Instantiation_P_Designated_Generic_Decl (Node : Bare_Generic_Subp_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Env_Do_58 (Node : Bare_Generic_Subp_Instantiation ) return Boolean ; function Initial_Env_59 (Node : Bare_Generic_Subp_Instantiation ) return Internal_DesignatedEnv ; function Env_Mappings_60 (Node : Bare_Generic_Subp_Instantiation ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_61 (Node : Bare_Generic_Subp_Instantiation ) return Boolean ; function Env_Do_62 (Node : Bare_Generic_Subp_Instantiation ) return Bare_Compilation_Unit_Array_Access ; function Ref_Env_Nodes_63 (Node : Bare_Generic_Subp_Instantiation ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_64 (Node : Bare_Generic_Subp_Instantiation ) return Boolean ; function Ref_Env_Nodes_65 (Node : Bare_Generic_Subp_Instantiation ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_66 (Node : Bare_Generic_Subp_Instantiation ) return Boolean ; procedure Generic_Subp_Instantiation_Pre_Env_Actions (Self : Bare_Generic_Subp_Instantiation; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); function Dispatcher_Generic_Renaming_Decl_P_Renaming_Name (Node : Bare_Generic_Renaming_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Name ; function Generic_Renaming_Decl_P_Resolve (Node : Bare_Generic_Renaming_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Generic_Decl ; -- Resolve the GenericDecl this renaming decl is pointing at function Generic_Renaming_Decl_P_Xref_Entry_Point (Node : Bare_Generic_Renaming_Decl ) return Boolean ; function Generic_Renaming_Decl_P_Xref_Equation (Node : Bare_Generic_Renaming_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Generic_Package_Renaming_Decl (Self : Bare_Generic_Package_Renaming_Decl ; Generic_Package_Renaming_Decl_F_Name : Bare_Defining_Name ; Generic_Package_Renaming_Decl_F_Renames : Bare_Name ; Generic_Package_Renaming_Decl_F_Aspects : Bare_Aspect_Spec ); function Generic_Package_Renaming_Decl_F_Name (Node : Bare_Generic_Package_Renaming_Decl) return Bare_Defining_Name; function Generic_Package_Renaming_Decl_F_Renames (Node : Bare_Generic_Package_Renaming_Decl) return Bare_Name; function Generic_Package_Renaming_Decl_P_Defining_Names (Node : Bare_Generic_Package_Renaming_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Generic_Package_Renaming_Decl_P_Defining_Env (Node : Bare_Generic_Package_Renaming_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Generic_Package_Renaming_Decl_P_Renaming_Name (Node : Bare_Generic_Package_Renaming_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Name ; function Env_Do_86 (Node : Bare_Generic_Package_Renaming_Decl ) return Boolean ; function Initial_Env_87 (Node : Bare_Generic_Package_Renaming_Decl ) return Internal_DesignatedEnv ; function Env_Mappings_88 (Node : Bare_Generic_Package_Renaming_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_89 (Node : Bare_Generic_Package_Renaming_Decl ) return Boolean ; function Env_Do_90 (Node : Bare_Generic_Package_Renaming_Decl ) return Bare_Compilation_Unit_Array_Access ; function Ref_Env_Nodes_91 (Node : Bare_Generic_Package_Renaming_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_92 (Node : Bare_Generic_Package_Renaming_Decl ) return Boolean ; function Ref_Env_Nodes_93 (Node : Bare_Generic_Package_Renaming_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_94 (Node : Bare_Generic_Package_Renaming_Decl ) return Boolean ; procedure Generic_Package_Renaming_Decl_Pre_Env_Actions (Self : Bare_Generic_Package_Renaming_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Generic_Subp_Renaming_Decl (Self : Bare_Generic_Subp_Renaming_Decl ; Generic_Subp_Renaming_Decl_F_Kind : Bare_Subp_Kind ; Generic_Subp_Renaming_Decl_F_Name : Bare_Defining_Name ; Generic_Subp_Renaming_Decl_F_Renames : Bare_Name ; Generic_Subp_Renaming_Decl_F_Aspects : Bare_Aspect_Spec ); function Generic_Subp_Renaming_Decl_F_Kind (Node : Bare_Generic_Subp_Renaming_Decl) return Bare_Subp_Kind; function Generic_Subp_Renaming_Decl_F_Name (Node : Bare_Generic_Subp_Renaming_Decl) return Bare_Defining_Name; function Generic_Subp_Renaming_Decl_F_Renames (Node : Bare_Generic_Subp_Renaming_Decl) return Bare_Name; function Generic_Subp_Renaming_Decl_P_Defining_Names (Node : Bare_Generic_Subp_Renaming_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Generic_Subp_Renaming_Decl_P_Renaming_Name (Node : Bare_Generic_Subp_Renaming_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Name ; function Env_Do_95 (Node : Bare_Generic_Subp_Renaming_Decl ) return Boolean ; function Initial_Env_96 (Node : Bare_Generic_Subp_Renaming_Decl ) return Internal_DesignatedEnv ; function Env_Mappings_97 (Node : Bare_Generic_Subp_Renaming_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_98 (Node : Bare_Generic_Subp_Renaming_Decl ) return Boolean ; function Env_Do_99 (Node : Bare_Generic_Subp_Renaming_Decl ) return Bare_Compilation_Unit_Array_Access ; function Ref_Env_Nodes_100 (Node : Bare_Generic_Subp_Renaming_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_101 (Node : Bare_Generic_Subp_Renaming_Decl ) return Boolean ; function Ref_Env_Nodes_102 (Node : Bare_Generic_Subp_Renaming_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_103 (Node : Bare_Generic_Subp_Renaming_Decl ) return Boolean ; procedure Generic_Subp_Renaming_Decl_Pre_Env_Actions (Self : Bare_Generic_Subp_Renaming_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Label_Decl (Self : Bare_Label_Decl ; Label_Decl_F_Name : Bare_Defining_Name ); function Label_Decl_F_Name (Node : Bare_Label_Decl) return Bare_Defining_Name; function Label_Decl_P_Defining_Names (Node : Bare_Label_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Env_Mappings_151 (Node : Bare_Label_Decl ) return Internal_Env_Assoc ; procedure Label_Decl_Pre_Env_Actions (Self : Bare_Label_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Named_Stmt_Decl (Self : Bare_Named_Stmt_Decl ; Named_Stmt_Decl_F_Name : Bare_Defining_Name ); function Named_Stmt_Decl_F_Name (Node : Bare_Named_Stmt_Decl) return Bare_Defining_Name; function Named_Stmt_Decl_P_Defining_Names (Node : Bare_Named_Stmt_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Named_Stmt_Decl_P_Defining_Env (Node : Bare_Named_Stmt_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; procedure Initialize_Fields_For_Number_Decl (Self : Bare_Number_Decl ; Number_Decl_F_Ids : Bare_Defining_Name_List ; Number_Decl_F_Expr : Bare_Expr ); function Number_Decl_F_Ids (Node : Bare_Number_Decl) return Bare_Defining_Name_List; function Number_Decl_F_Expr (Node : Bare_Number_Decl) return Bare_Expr; function Number_Decl_P_Defining_Names (Node : Bare_Number_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Number_Decl_P_Expr_Type (Node : Bare_Number_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Number_Decl_P_Xref_Entry_Point (Node : Bare_Number_Decl ) return Boolean ; function Number_Decl_P_Is_Static_Decl (Node : Bare_Number_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Number_Decl_P_Xref_Equation (Node : Bare_Number_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Env_Mappings_42 (Node : Bare_Number_Decl ) return Internal_Env_Assoc_Array_Access ; procedure Number_Decl_Pre_Env_Actions (Self : Bare_Number_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Object_Decl (Self : Bare_Object_Decl ; Object_Decl_F_Ids : Bare_Defining_Name_List ; Object_Decl_F_Has_Aliased : Bare_Aliased_Node ; Object_Decl_F_Has_Constant : Bare_Constant_Node ; Object_Decl_F_Mode : Bare_Mode ; Object_Decl_F_Type_Expr : Bare_Type_Expr ; Object_Decl_F_Default_Expr : Bare_Expr ; Object_Decl_F_Renaming_Clause : Bare_Renaming_Clause ; Object_Decl_F_Aspects : Bare_Aspect_Spec ); function Object_Decl_F_Ids (Node : Bare_Object_Decl) return Bare_Defining_Name_List; function Object_Decl_F_Has_Aliased (Node : Bare_Object_Decl) return Bare_Aliased_Node; function Object_Decl_F_Has_Constant (Node : Bare_Object_Decl) return Bare_Constant_Node; function Object_Decl_F_Mode (Node : Bare_Object_Decl) return Bare_Mode; function Object_Decl_F_Type_Expr (Node : Bare_Object_Decl) return Bare_Type_Expr; function Object_Decl_F_Default_Expr (Node : Bare_Object_Decl) return Bare_Expr; function Object_Decl_F_Renaming_Clause (Node : Bare_Object_Decl) return Bare_Renaming_Clause; function Object_Decl_P_Defining_Names (Node : Bare_Object_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Object_Decl_P_Defining_Env (Node : Bare_Object_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Object_Decl_P_Type_Expression (Node : Bare_Object_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Expr ; function Object_Decl_P_Is_Static_Decl (Node : Bare_Object_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Object_Decl_P_Xref_Equation (Node : Bare_Object_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Object_Decl_P_Public_Part_Decl (Node : Bare_Object_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- If this object decl is the constant completion of an object decl in the -- public part, return the object decl from the public part. function Object_Decl_P_Private_Part_Decl (Node : Bare_Object_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- If this object decl is the incomplete declaration of a constant in a public -- part, return its completion in the private part. function Object_Decl_P_Next_Part_For_Decl (Node : Bare_Object_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Object_Decl_P_Previous_Part_For_Decl (Node : Bare_Object_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Object_Decl_P_Xref_Entry_Point (Node : Bare_Object_Decl ) return Boolean ; function Env_Mappings_43 (Node : Bare_Object_Decl ) return Internal_Env_Assoc_Array_Access ; procedure Object_Decl_Pre_Env_Actions (Self : Bare_Object_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Extended_Return_Stmt_Object_Decl (Self : Bare_Extended_Return_Stmt_Object_Decl ; Object_Decl_F_Ids : Bare_Defining_Name_List ; Object_Decl_F_Has_Aliased : Bare_Aliased_Node ; Object_Decl_F_Has_Constant : Bare_Constant_Node ; Object_Decl_F_Mode : Bare_Mode ; Object_Decl_F_Type_Expr : Bare_Type_Expr ; Object_Decl_F_Default_Expr : Bare_Expr ; Object_Decl_F_Renaming_Clause : Bare_Renaming_Clause ; Object_Decl_F_Aspects : Bare_Aspect_Spec ); procedure Initialize_Fields_For_Package_Renaming_Decl (Self : Bare_Package_Renaming_Decl ; Package_Renaming_Decl_F_Name : Bare_Defining_Name ; Package_Renaming_Decl_F_Renames : Bare_Renaming_Clause ; Package_Renaming_Decl_F_Aspects : Bare_Aspect_Spec ); function Package_Renaming_Decl_F_Name (Node : Bare_Package_Renaming_Decl) return Bare_Defining_Name; function Package_Renaming_Decl_F_Renames (Node : Bare_Package_Renaming_Decl) return Bare_Renaming_Clause; function Package_Renaming_Decl_P_Renamed_Package (Node : Bare_Package_Renaming_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the declaration of the package that is renamed by Self. function Package_Renaming_Decl_P_Final_Renamed_Package (Node : Bare_Package_Renaming_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the declaration of the package that is ultimately renamed by Self, -- skipping through all intermediate package renamings. function Package_Renaming_Decl_P_Defining_Names (Node : Bare_Package_Renaming_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Package_Renaming_Decl_P_Defining_Env (Node : Bare_Package_Renaming_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Package_Renaming_Decl_P_Xref_Entry_Point (Node : Bare_Package_Renaming_Decl ) return Boolean ; function Package_Renaming_Decl_P_Xref_Equation (Node : Bare_Package_Renaming_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Env_Do_77 (Node : Bare_Package_Renaming_Decl ) return Boolean ; function Initial_Env_78 (Node : Bare_Package_Renaming_Decl ) return Internal_DesignatedEnv ; function Env_Mappings_79 (Node : Bare_Package_Renaming_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_80 (Node : Bare_Package_Renaming_Decl ) return Boolean ; function Env_Do_81 (Node : Bare_Package_Renaming_Decl ) return Bare_Compilation_Unit_Array_Access ; function Ref_Env_Nodes_82 (Node : Bare_Package_Renaming_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_83 (Node : Bare_Package_Renaming_Decl ) return Boolean ; function Ref_Env_Nodes_84 (Node : Bare_Package_Renaming_Decl ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_85 (Node : Bare_Package_Renaming_Decl ) return Boolean ; procedure Package_Renaming_Decl_Pre_Env_Actions (Self : Bare_Package_Renaming_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Single_Protected_Decl (Self : Bare_Single_Protected_Decl ; Single_Protected_Decl_F_Name : Bare_Defining_Name ; Single_Protected_Decl_F_Aspects : Bare_Aspect_Spec ; Single_Protected_Decl_F_Interfaces : Bare_Parent_List ; Single_Protected_Decl_F_Definition : Bare_Protected_Def ); function Single_Protected_Decl_F_Name (Node : Bare_Single_Protected_Decl) return Bare_Defining_Name; function Single_Protected_Decl_F_Interfaces (Node : Bare_Single_Protected_Decl) return Bare_Parent_List; function Single_Protected_Decl_F_Definition (Node : Bare_Single_Protected_Decl) return Bare_Protected_Def; function Single_Protected_Decl_P_Defining_Names (Node : Bare_Single_Protected_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Single_Protected_Decl_P_Defining_Env (Node : Bare_Single_Protected_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Single_Protected_Decl_P_Xref_Entry_Point (Node : Bare_Single_Protected_Decl ) return Boolean ; function Single_Protected_Decl_P_Xref_Equation (Node : Bare_Single_Protected_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Single_Protected_Decl_P_Env_Names (Node : Bare_Single_Protected_Decl ) return Symbol_Type_Array_Access ; function Single_Protected_Decl_P_Declarative_Parts (Node : Bare_Single_Protected_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Declarative_Part_Array_Access ; function Env_Mappings_39 (Node : Bare_Single_Protected_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Env_Assoc ; function Env_Trans_Parent_40 (Node : Bare_Single_Protected_Decl ) return Boolean ; function Env_Names_41 (Node : Bare_Single_Protected_Decl ) return Symbol_Type_Array_Access ; procedure Single_Protected_Decl_Pre_Env_Actions (Self : Bare_Single_Protected_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Single_Task_Decl (Self : Bare_Single_Task_Decl ; Single_Task_Decl_F_Task_Type : Bare_Single_Task_Type_Decl ); function Single_Task_Decl_F_Task_Type (Node : Bare_Single_Task_Decl) return Bare_Single_Task_Type_Decl; function Single_Task_Decl_P_Defining_Names (Node : Bare_Single_Task_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name_Array_Access ; function Single_Task_Decl_P_Expr_Type (Node : Bare_Single_Task_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Single_Task_Decl_P_Defining_Env (Node : Bare_Single_Task_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Single_Task_Decl_P_Env_Names (Node : Bare_Single_Task_Decl ) return Symbol_Type_Array_Access ; function Env_Mappings_36 (Node : Bare_Single_Task_Decl ) return Internal_Env_Assoc ; function Env_Trans_Parent_37 (Node : Bare_Single_Task_Decl ) return Boolean ; function Env_Names_38 (Node : Bare_Single_Task_Decl ) return Symbol_Type_Array_Access ; procedure Single_Task_Decl_Pre_Env_Actions (Self : Bare_Single_Task_Decl; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Case_Stmt_Alternative (Self : Bare_Case_Stmt_Alternative ; Case_Stmt_Alternative_F_Choices : Bare_Alternatives_List ; Case_Stmt_Alternative_F_Stmts : Bare_Stmt_List ); function Case_Stmt_Alternative_F_Choices (Node : Bare_Case_Stmt_Alternative) return Bare_Alternatives_List; function Case_Stmt_Alternative_F_Stmts (Node : Bare_Case_Stmt_Alternative) return Bare_Stmt_List; function Case_Stmt_Alternative_P_Xref_Entry_Point (Node : Bare_Case_Stmt_Alternative ) return Boolean ; function Case_Stmt_Alternative_P_Xref_Equation (Node : Bare_Case_Stmt_Alternative ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Compilation_Unit (Self : Bare_Compilation_Unit ; Compilation_Unit_F_Prelude : Bare_Ada_Node_List ; Compilation_Unit_F_Body : Bare_Ada_Node ; Compilation_Unit_F_Pragmas : Bare_Pragma_Node_List ); function Compilation_Unit_F_Prelude (Node : Bare_Compilation_Unit) return Bare_Ada_Node_List; function Compilation_Unit_F_Body (Node : Bare_Compilation_Unit) return Bare_Ada_Node; function Compilation_Unit_F_Pragmas (Node : Bare_Compilation_Unit) return Bare_Pragma_Node_List; function Compilation_Unit_P_Syntactic_Fully_Qualified_Name (Node : Bare_Compilation_Unit ) return Symbol_Type_Array_Access ; -- Return the syntactic fully qualified name of this compilation unit. function Compilation_Unit_P_Unit_Kind (Node : Bare_Compilation_Unit ) return Analysis_Unit_Kind ; -- Return the kind corresponding to this analysis unit. function Compilation_Unit_P_Withed_Units (Node : Bare_Compilation_Unit ) return Internal_Entity_Compilation_Unit_Array_Access ; -- Look for all "with" clauses at the top of this compilation unit and return -- all the compilation units designated by them. function Compilation_Unit_P_Imported_Units (Node : Bare_Compilation_Unit ) return Internal_Entity_Compilation_Unit_Array_Access ; -- Return all the compilation units that are directly imported by this one. -- This includes "with"ed units as well as the direct parent unit. function Compilation_Unit_P_Unit_Dependencies_Helper (Node : Bare_Compilation_Unit ; Visited : Internal_Entity_Compilation_Unit_Array_Access ; To_Visit : Internal_Entity_Compilation_Unit_Array_Access ) return Internal_Entity_Compilation_Unit_Array_Access ; -- Helper function for "unit_dependencies" that computes transitively the unit -- dependencies of the given ``to_visit`` units. The ``visited`` set of units -- is used to terminate the search once a fix-point has been reached, which is -- when all direct dependencies of ``to_visit`` are already included in the -- ``visited`` set. function Compilation_Unit_P_Unit_Dependencies (Node : Bare_Compilation_Unit ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Compilation_Unit_Array_Access ; -- Return the list of all the compilation units that are (direct and indirect) -- dependencies of this one. function Compilation_Unit_P_Decl (Node : Bare_Compilation_Unit ) return Bare_Basic_Decl ; -- Get the root basic decl defined in this compilation unit. function Compilation_Unit_P_Is_Preelaborable_Impl (Node : Bare_Compilation_Unit ; From_Body : Boolean ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Implementation helper for ``is_preelaborable``. -- -- Return whether ``Entity`` or its spec (if any) make it preelaborable. -- ``from_body`` has the same semantics as in -- ``does_aspects_make_preelaborate``. function Compilation_Unit_P_Is_Preelaborable (Node : Bare_Compilation_Unit ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether this compilation unit is preelaborable or not. function Compilation_Unit_P_Self_Restrictions (Node : Bare_Compilation_Unit ) return Symbol_Type_Array_Access ; -- Return the list of restrictions pragmas that appear in the prelude of this -- particular unit. We only check the prelude as it's the only place they are -- allowed to appear in. function Compilation_Unit_P_Other_Part (Node : Bare_Compilation_Unit ) return Internal_Entity_Compilation_Unit ; -- If this compilation unit is of kind UnitSpecification, return its -- corresponding body unit, and conversely. function Compilation_Unit_P_Has_Restriction (Node : Bare_Compilation_Unit ; Name : Symbol_Type ) return Boolean ; -- Whether this compilation unit is affected by the restriction with the given -- name. -- -- .. WARNING:: This property only supports the ``No_Elaboration_Code`` -- restriction for now. function Compilation_Unit_P_Is_Text_Io_Child (Node : Bare_Compilation_Unit ) return Boolean ; -- Returns whether this compilation unit defines a child package of -- Ada.Text_IO. procedure Initialize_Fields_For_Component_Clause (Self : Bare_Component_Clause ; Component_Clause_F_Id : Bare_Identifier ; Component_Clause_F_Position : Bare_Expr ; Component_Clause_F_Range : Bare_Range_Spec ); function Component_Clause_F_Id (Node : Bare_Component_Clause) return Bare_Identifier; function Component_Clause_F_Position (Node : Bare_Component_Clause) return Bare_Expr; function Component_Clause_F_Range (Node : Bare_Component_Clause) return Bare_Range_Spec; function Component_Clause_P_Xref_Entry_Point (Node : Bare_Component_Clause ) return Boolean ; function Component_Clause_P_Xref_Equation (Node : Bare_Component_Clause ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Component_Def (Self : Bare_Component_Def ; Component_Def_F_Has_Aliased : Bare_Aliased_Node ; Component_Def_F_Has_Constant : Bare_Constant_Node ; Component_Def_F_Type_Expr : Bare_Type_Expr ); function Component_Def_F_Has_Aliased (Node : Bare_Component_Def) return Bare_Aliased_Node; function Component_Def_F_Has_Constant (Node : Bare_Component_Def) return Bare_Constant_Node; function Component_Def_F_Type_Expr (Node : Bare_Component_Def) return Bare_Type_Expr; function Component_Def_P_Xref_Equation (Node : Bare_Component_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Dispatcher_Constant_Node_P_As_Bool (Node : Bare_Constant_Node ) return Boolean ; -- Return whether this is an instance of ConstantPresent function Constant_Absent_P_As_Bool (Node : Bare_Constant_Absent ) return Boolean ; function Constant_Present_P_As_Bool (Node : Bare_Constant_Present ) return Boolean ; function Constraint_P_Subtype (Node : Bare_Constraint ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Constraint_P_Is_Static (Node : Bare_Constraint ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; procedure Initialize_Fields_For_Delta_Constraint (Self : Bare_Delta_Constraint ; Delta_Constraint_F_Digits : Bare_Expr ; Delta_Constraint_F_Range : Bare_Range_Spec ); function Delta_Constraint_F_Digits (Node : Bare_Delta_Constraint) return Bare_Expr; function Delta_Constraint_F_Range (Node : Bare_Delta_Constraint) return Bare_Range_Spec; function Delta_Constraint_P_Xref_Equation (Node : Bare_Delta_Constraint ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Digits_Constraint (Self : Bare_Digits_Constraint ; Digits_Constraint_F_Digits : Bare_Expr ; Digits_Constraint_F_Range : Bare_Range_Spec ); function Digits_Constraint_F_Digits (Node : Bare_Digits_Constraint) return Bare_Expr; function Digits_Constraint_F_Range (Node : Bare_Digits_Constraint) return Bare_Range_Spec; function Digits_Constraint_P_Xref_Equation (Node : Bare_Digits_Constraint ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Discriminant_Constraint (Self : Bare_Discriminant_Constraint ; Discriminant_Constraint_F_Constraints : Bare_Assoc_List ); function Discriminant_Constraint_F_Constraints (Node : Bare_Discriminant_Constraint) return Bare_Assoc_List; function Discriminant_Constraint_P_Xref_Equation (Node : Bare_Discriminant_Constraint ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Index_Constraint (Self : Bare_Index_Constraint ; Index_Constraint_F_Constraints : Bare_Constraint_List ); function Index_Constraint_F_Constraints (Node : Bare_Index_Constraint) return Bare_Constraint_List; function Index_Constraint_P_Xref_Equation (Node : Bare_Index_Constraint ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Range_Constraint (Self : Bare_Range_Constraint ; Range_Constraint_F_Range : Bare_Range_Spec ); function Range_Constraint_F_Range (Node : Bare_Range_Constraint) return Bare_Range_Spec; function Range_Constraint_P_Xref_Equation (Node : Bare_Range_Constraint ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Declarative_Part (Self : Bare_Declarative_Part ; Declarative_Part_F_Decls : Bare_Ada_Node_List ); function Declarative_Part_F_Decls (Node : Bare_Declarative_Part) return Bare_Ada_Node_List; function Declarative_Part_P_Types_With_Models (Node : Bare_Declarative_Part ) return Internal_Entity_Base_Type_Decl_Array_Access ; function Declarative_Part_P_Use_Clauses_Envs (Node : Bare_Declarative_Part ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Returns the envs for all the use clauses declared in this declarative part. procedure Initialize_Fields_For_Private_Part (Self : Bare_Private_Part ; Declarative_Part_F_Decls : Bare_Ada_Node_List ); function Private_Part_P_Env_Names (Node : Bare_Private_Part ) return Symbol_Type_Array_Access ; -- A private part allows for a named env iff its parent package is a library -- item, in which case it will be ``.__privatepart`` appended to that -- package's top_level_env_name. function Private_Part_P_Immediate_Declarative_Region (Node : Bare_Private_Part ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Env_Mappings_44 (Node : Bare_Private_Part ) return Internal_Env_Assoc ; function Env_Trans_Parent_45 (Node : Bare_Private_Part ) return Boolean ; function Env_Names_46 (Node : Bare_Private_Part ) return Symbol_Type_Array_Access ; procedure Private_Part_Pre_Env_Actions (Self : Bare_Private_Part; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Public_Part (Self : Bare_Public_Part ; Declarative_Part_F_Decls : Bare_Ada_Node_List ); procedure Initialize_Fields_For_Elsif_Expr_Part (Self : Bare_Elsif_Expr_Part ; Elsif_Expr_Part_F_Cond_Expr : Bare_Expr ; Elsif_Expr_Part_F_Then_Expr : Bare_Expr ); function Elsif_Expr_Part_F_Cond_Expr (Node : Bare_Elsif_Expr_Part) return Bare_Expr; function Elsif_Expr_Part_F_Then_Expr (Node : Bare_Elsif_Expr_Part) return Bare_Expr; procedure Initialize_Fields_For_Elsif_Stmt_Part (Self : Bare_Elsif_Stmt_Part ; Elsif_Stmt_Part_F_Cond_Expr : Bare_Expr ; Elsif_Stmt_Part_F_Stmts : Bare_Stmt_List ); function Elsif_Stmt_Part_F_Cond_Expr (Node : Bare_Elsif_Stmt_Part) return Bare_Expr; function Elsif_Stmt_Part_F_Stmts (Node : Bare_Elsif_Stmt_Part) return Bare_Stmt_List; function Elsif_Stmt_Part_P_Xref_Entry_Point (Node : Bare_Elsif_Stmt_Part ) return Boolean ; function Elsif_Stmt_Part_P_Xref_Equation (Node : Bare_Elsif_Stmt_Part ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Expr (Self : Bare_Expr ); function Expr_P_Type_Val (Node : Bare_Expr ) return Internal_Entity ; function Expr_P_Expression_Type (Node : Bare_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the declaration corresponding to the type of this expression after -- name resolution. function Expr_P_Is_Dynamically_Tagged (Node : Bare_Expr ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Returns whether this expression is dynamically tagged (See RM 3.9.2). function Dispatcher_Expr_P_Potential_Actuals_For_Dispatch (Node : Bare_Expr ; Spec : Internal_Entity_Base_Subp_Spec ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Expected_Type_For_Expr_Array_Access ; -- Assuming Self is a call to a subprogram, return an array of pairs -- (expected_type, expression) for each expression in the call that could be -- used for performing a dynamic dispatch for this call. -- -- .. note:: Implementations should not check that the call is done in the RHS -- of an assign statement in order to take into account return type -- dispatching, as this logic does not depend on the node kind and is -- therefore factorized in ``is_dispatching_call_impl``. function Expr_P_Is_Dispatching_Call_Impl (Node : Bare_Expr ; Decl : Internal_Entity_Basic_Decl ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Common logic for the implementation of is_dispatching_call on the various -- node types. ``decl`` should be the declaration of the subprogram being -- called. function Dispatcher_Expr_P_Is_Dispatching_Call (Node : Bare_Expr ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Returns True if this Name corresponds to a dispatching call, including: -- -- - Calls done through subprogram access types. -- -- - Calls to dispatching subprograms, in the object-oriented sense. -- -- .. note:: This is an experimental feature. There might be some discrepancy -- with the GNAT concept of "dispatching call". -- -- .. note:: This should only be called on a Name and UnOp or a BinOp. function Expr_P_Is_Static_Expr (Node : Bare_Expr ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this expression is static according to the ARM definition of -- static. See RM 4.9. function Dispatcher_Expr_P_First_Corresponding_Decl (Node : Bare_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the first decl that is lexically named like self in self's scope. function Expr_P_Eval_As_Int (Node : Bare_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Big_Integer_Type ; -- Statically evaluates self, and returns the value of the evaluation as an -- integer. -- -- .. note:: In order for a call to this not to raise, the expression needs to -- be a static expression, as specified in the ARM section 4.9. You can -- verify whether an expression is static with the ``is_static_expr`` -- property. -- -- .. ATTENTION:: This is an experimental feature, so even if it is exposed to -- allow experiments, it is totally unsupported and the API and behavior -- are very likely to change in the future. function Expr_P_Eval_As_String (Node : Bare_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; -- Statically evaluates self, and returns the value of the evaluation as a -- string. -- -- .. note:: In order for a call to this not to raise, the expression needs to -- be a static expression, as specified in the ARM section 4.9. You can -- verify whether an expression is static with the ``is_static_expr`` -- property. -- -- .. ATTENTION:: This is an experimental feature, so even if it is exposed to -- allow experiments, it is totally unsupported and the API and behavior -- are very likely to change in the future. function Expr_P_Discrete_Range (Node : Bare_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Discrete_Range ; -- Return the discrete range for this expression, if applicable. function Dispatcher_Expr_P_Designated_Env_No_Overloading (Node : Bare_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; No_Visibility : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Returns the lexical environment designated by this name, assuming that this -- name cannot be overloaded. -- -- If ``no_visibility``, discard visibility checks. function Dispatcher_Expr_P_Designated_Env (Node : Bare_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; No_Visibility : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Returns the lexical environment designated by this name. -- -- If this name involves overloading, this will return a combination of the -- various candidate lexical environments. -- -- If ``no_visibility``, discard visibility checks. function Expr_P_Env_Elements (Node : Bare_Expr ; Env : Lexical_Env ; No_Visibility : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; function Dispatcher_Expr_P_Env_Elements_Impl (Node : Bare_Expr ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; -- Returns the list of annotated elements in the lexical environment that can -- statically be a match for expr before overloading analysis. function Expr_P_Matching_Nodes (Node : Bare_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; -- Return the list of AST nodes that can be a match for this expression before -- overloading analysis. function Expr_P_Potential_Actuals_For_Dispatch (Node : Bare_Expr ; Spec : Internal_Entity_Base_Subp_Spec ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Expected_Type_For_Expr_Array_Access ; -- Assuming Self is a call to a subprogram, return an array of pairs -- (expected_type, expression) for each expression in the call that could be -- used for performing a dynamic dispatch for this call. -- -- .. note:: Implementations should not check that the call is done in the RHS -- of an assign statement in order to take into account return type -- dispatching, as this logic does not depend on the node kind and is -- therefore factorized in ``is_dispatching_call_impl``. function Expr_P_Is_Dispatching_Call (Node : Bare_Expr ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Returns True if this Name corresponds to a dispatching call, including: -- -- - Calls done through subprogram access types. -- -- - Calls to dispatching subprograms, in the object-oriented sense. -- -- .. note:: This is an experimental feature. There might be some discrepancy -- with the GNAT concept of "dispatching call". -- -- .. note:: This should only be called on a Name and UnOp or a BinOp. function Expr_P_First_Corresponding_Decl (Node : Bare_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the first decl that is lexically named like self in self's scope. function Expr_P_Designated_Env_No_Overloading (Node : Bare_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; No_Visibility : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Returns the lexical environment designated by this name, assuming that this -- name cannot be overloaded. -- -- If ``no_visibility``, discard visibility checks. function Expr_P_Designated_Env (Node : Bare_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; No_Visibility : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Returns the lexical environment designated by this name. -- -- If this name involves overloading, this will return a combination of the -- various candidate lexical environments. -- -- If ``no_visibility``, discard visibility checks. function Expr_P_Env_Elements_Impl (Node : Bare_Expr ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; -- Returns the list of annotated elements in the lexical environment that can -- statically be a match for expr before overloading analysis. procedure Initialize_Fields_For_Abstract_State_Decl_Expr (Self : Bare_Abstract_State_Decl_Expr ; Abstract_State_Decl_Expr_F_State_Decl : Bare_Ada_Node ); function Abstract_State_Decl_Expr_F_State_Decl (Node : Bare_Abstract_State_Decl_Expr) return Bare_Ada_Node; function Abstract_State_Decl_Expr_P_Xref_Equation (Node : Bare_Abstract_State_Decl_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Allocator (Self : Bare_Allocator ; Allocator_F_Subpool : Bare_Name ; Allocator_F_Type_Or_Expr : Bare_Ada_Node ); function Allocator_F_Subpool (Node : Bare_Allocator) return Bare_Name; function Allocator_F_Type_Or_Expr (Node : Bare_Allocator) return Bare_Ada_Node; function Allocator_P_Get_Allocated_Type (Node : Bare_Allocator ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the allocated type for this allocator. function Allocator_P_Xref_Equation (Node : Bare_Allocator ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Base_Aggregate (Self : Bare_Base_Aggregate ; Base_Aggregate_F_Ancestor_Expr : Bare_Expr ; Base_Aggregate_F_Assocs : Bare_Assoc_List ); function Base_Aggregate_F_Ancestor_Expr (Node : Bare_Base_Aggregate) return Bare_Expr; function Base_Aggregate_F_Assocs (Node : Bare_Base_Aggregate) return Bare_Assoc_List; function Base_Aggregate_P_Xref_Equation (Node : Bare_Base_Aggregate ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Base_Aggregate_P_Multidim_Root_Aggregate (Node : Bare_Base_Aggregate ; R : Integer := 0 ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Multidim_Aggregate_Info ; -- Return the root parent aggregate if Self is part of a multidimensional -- array aggregate (either the root or a sub-aggregate). function Base_Aggregate_P_All_Discriminants (Node : Bare_Base_Aggregate ; Origin : Bare_Ada_Node ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; -- Return the list of all discriminants that must be associated by this -- aggregate. function Base_Aggregate_P_All_Components (Node : Bare_Base_Aggregate ; Origin : Bare_Ada_Node ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; -- Return the list of all components that must be associated by this -- aggregate. function Base_Aggregate_P_Matched_Discriminants (Node : Bare_Base_Aggregate ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Param_Match_Array_Access ; -- Return the list of all discriminants specified by this aggregate, together -- with the actual used for it. function Base_Aggregate_P_Matched_Components (Node : Bare_Base_Aggregate ; Origin : Bare_Ada_Node ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Param_Match_Array_Access ; -- Return the list of all components specified by this aggregate, together -- with the actual used for it. function Base_Aggregate_P_First_Unmatched_Formal (Node : Bare_Base_Aggregate ; Origin : Bare_Ada_Node ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Single_Formal ; -- Return the first discriminant or component that is not matched explicitly. procedure Initialize_Fields_For_Aggregate (Self : Bare_Aggregate ; Base_Aggregate_F_Ancestor_Expr : Bare_Expr ; Base_Aggregate_F_Assocs : Bare_Assoc_List ); procedure Initialize_Fields_For_Bracket_Aggregate (Self : Bare_Bracket_Aggregate ; Base_Aggregate_F_Ancestor_Expr : Bare_Expr ; Base_Aggregate_F_Assocs : Bare_Assoc_List ); procedure Initialize_Fields_For_Delta_Aggregate (Self : Bare_Delta_Aggregate ; Base_Aggregate_F_Ancestor_Expr : Bare_Expr ; Base_Aggregate_F_Assocs : Bare_Assoc_List ); procedure Initialize_Fields_For_Bracket_Delta_Aggregate (Self : Bare_Bracket_Delta_Aggregate ; Base_Aggregate_F_Ancestor_Expr : Bare_Expr ; Base_Aggregate_F_Assocs : Bare_Assoc_List ); procedure Initialize_Fields_For_Null_Record_Aggregate (Self : Bare_Null_Record_Aggregate ; Base_Aggregate_F_Ancestor_Expr : Bare_Expr ; Base_Aggregate_F_Assocs : Bare_Assoc_List ); procedure Initialize_Fields_For_Bin_Op (Self : Bare_Bin_Op ; Bin_Op_F_Left : Bare_Expr ; Bin_Op_F_Op : Bare_Op ; Bin_Op_F_Right : Bare_Expr ); function Bin_Op_F_Left (Node : Bare_Bin_Op) return Bare_Expr; function Bin_Op_F_Op (Node : Bare_Bin_Op) return Bare_Op; function Bin_Op_F_Right (Node : Bare_Bin_Op) return Bare_Expr; function Bin_Op_P_Xref_Equation (Node : Bare_Bin_Op ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Dispatcher_Bin_Op_P_No_Overload_Equation (Node : Bare_Bin_Op ; Origin : Bare_Ada_Node ) return Logic_Equation ; -- When no subprogram is found for this node's operator, use this property to -- construct the xref equation for this node. function Bin_Op_P_Potential_Actuals_For_Dispatch (Node : Bare_Bin_Op ; Spec : Internal_Entity_Base_Subp_Spec ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Expected_Type_For_Expr_Array_Access ; function Bin_Op_P_Is_Dispatching_Call (Node : Bare_Bin_Op ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Bin_Op_P_No_Overload_Equation (Node : Bare_Bin_Op ; Origin : Bare_Ada_Node ) return Logic_Equation ; -- When no subprogram is found for this node's operator, use this property to -- construct the xref equation for this node. procedure Initialize_Fields_For_Relation_Op (Self : Bare_Relation_Op ; Bin_Op_F_Left : Bare_Expr ; Bin_Op_F_Op : Bare_Op ; Bin_Op_F_Right : Bare_Expr ); function Relation_Op_P_No_Overload_Equation (Node : Bare_Relation_Op ; Origin : Bare_Ada_Node ) return Logic_Equation ; procedure Initialize_Fields_For_Box_Expr (Self : Bare_Box_Expr ); function Box_Expr_P_Xref_Equation (Node : Bare_Box_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Case_Expr_Alternative (Self : Bare_Case_Expr_Alternative ; Case_Expr_Alternative_F_Choices : Bare_Alternatives_List ; Case_Expr_Alternative_F_Expr : Bare_Expr ); function Case_Expr_Alternative_F_Choices (Node : Bare_Case_Expr_Alternative) return Bare_Alternatives_List; function Case_Expr_Alternative_F_Expr (Node : Bare_Case_Expr_Alternative) return Bare_Expr; procedure Initialize_Fields_For_Cond_Expr (Self : Bare_Cond_Expr ); function Dispatcher_Cond_Expr_P_Dependent_Exprs (Node : Bare_Cond_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr_Array_Access ; -- Return the dependent expressions for this conditional expression. procedure Initialize_Fields_For_Case_Expr (Self : Bare_Case_Expr ; Case_Expr_F_Expr : Bare_Expr ; Case_Expr_F_Cases : Bare_Case_Expr_Alternative_List ); function Case_Expr_F_Expr (Node : Bare_Case_Expr) return Bare_Expr; function Case_Expr_F_Cases (Node : Bare_Case_Expr) return Bare_Case_Expr_Alternative_List; function Case_Expr_P_Dependent_Exprs (Node : Bare_Case_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr_Array_Access ; function Case_Expr_P_Xref_Equation (Node : Bare_Case_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_If_Expr (Self : Bare_If_Expr ; If_Expr_F_Cond_Expr : Bare_Expr ; If_Expr_F_Then_Expr : Bare_Expr ; If_Expr_F_Alternatives : Bare_Elsif_Expr_Part_List ; If_Expr_F_Else_Expr : Bare_Expr ); function If_Expr_F_Cond_Expr (Node : Bare_If_Expr) return Bare_Expr; function If_Expr_F_Then_Expr (Node : Bare_If_Expr) return Bare_Expr; function If_Expr_F_Alternatives (Node : Bare_If_Expr) return Bare_Elsif_Expr_Part_List; function If_Expr_F_Else_Expr (Node : Bare_If_Expr) return Bare_Expr; function If_Expr_P_Dependent_Exprs (Node : Bare_If_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Expr_Array_Access ; function If_Expr_P_Xref_Equation (Node : Bare_If_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Contract_Cases (Self : Bare_Contract_Cases ; Contract_Cases_F_Contract_Cases : Bare_Contract_Case_Assoc_List ); function Contract_Cases_F_Contract_Cases (Node : Bare_Contract_Cases) return Bare_Contract_Case_Assoc_List; procedure Initialize_Fields_For_Decl_Expr (Self : Bare_Decl_Expr ; Decl_Expr_F_Decls : Bare_Basic_Decl_List ; Decl_Expr_F_Expr : Bare_Expr ); function Decl_Expr_F_Decls (Node : Bare_Decl_Expr) return Bare_Basic_Decl_List; function Decl_Expr_F_Expr (Node : Bare_Decl_Expr) return Bare_Expr; function Decl_Expr_P_Xref_Equation (Node : Bare_Decl_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Env_Trans_Parent_127 (Node : Bare_Decl_Expr ) return Boolean ; procedure Decl_Expr_Pre_Env_Actions (Self : Bare_Decl_Expr; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Membership_Expr (Self : Bare_Membership_Expr ; Membership_Expr_F_Expr : Bare_Expr ; Membership_Expr_F_Op : Bare_Op ; Membership_Expr_F_Membership_Exprs : Bare_Expr_Alternatives_List ); function Membership_Expr_F_Expr (Node : Bare_Membership_Expr) return Bare_Expr; function Membership_Expr_F_Op (Node : Bare_Membership_Expr) return Bare_Op; function Membership_Expr_F_Membership_Exprs (Node : Bare_Membership_Expr) return Bare_Expr_Alternatives_List; function Membership_Expr_P_Xref_Equation (Node : Bare_Membership_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Name (Self : Bare_Name ); function Name_P_Enclosing_Defining_Name (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name ; -- If this name is part of a defining name, return the enclosing defining name -- node. function Name_P_Is_Defining (Node : Bare_Name ) return Boolean ; -- Return True if this name is part of a defining name. function Dispatcher_Name_P_Parent_Scope (Node : Bare_Name ; Env : Lexical_Env ) return Lexical_Env ; -- Returns the lexical environment that is the scope in which the entity -- designated by this name is defined/used. function Name_P_Name_Is (Node : Bare_Name ; Sym : Symbol_Type ) return Boolean ; -- Helper. Check that this name matches ``sym``. function Name_P_Is_Direct_Call (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return True iff this name represents a call to a subprogram which is -- referred by its defining name. (i.e. not through a subprogram access). function Name_P_Is_Access_Call (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return True iff this name represents a call to subprogram through an access -- type. function Name_P_Is_Call (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Returns True if this Name corresponds to a call. function Name_P_Is_Dot_Call (Node : Bare_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Returns True if this Name corresponds to a dot notation call. function Name_P_Failsafe_Referenced_Def_Name (Node : Bare_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Refd_Def ; -- Failsafe version of ``referenced_defining_name``. Returns a ``RefdDef``, -- which can be precise, imprecise, or error. function Name_P_Referenced_Defining_Name (Node : Bare_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name ; -- Like ``referenced_decl``, but will return the defining identifier for the -- decl, rather than the basic declaration node itself. function Name_P_Gnat_Xref_Decl (Node : Bare_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name ; -- Implementation helper for DefiningName.gnat_xref. TODO: Get rid of that by -- inlining in DefiningName.gnat_xref. function Dispatcher_Name_P_All_Env_Els_Impl (Node : Bare_Name ; Seq : Boolean := True ; Seq_From : Bare_Ada_Node := No_Bare_Ada_Node ; Categories : Ref_Categories := (Inherited_Primitives => True, Nocat => True) ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; function Name_P_All_Env_Elements_Internal (Node : Bare_Name ; Seq : Boolean := True ; Seq_From : Bare_Ada_Node := No_Bare_Ada_Node ; Categories : Ref_Categories := (Inherited_Primitives => True, Nocat => True) ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; -- Internal property like all_env_elements, but accepting an additional -- ``categories`` parameter for internal uses. function Name_P_All_Env_Elements (Node : Bare_Name ; Seq : Boolean := True ; Seq_From : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; -- Return all elements in self's scope that are lexically named like Self. function Name_P_First_Corresponding_Decl (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; function Name_P_Bottom_Up_Name_Equation (Node : Bare_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Name_P_Innermost_Name (Node : Bare_Name ) return Bare_Name ; -- Helper property. Return the innermost name following the name chain. For -- example, given:: -- -- A (B) (C) (D) ^-----------^ Self ^-------^ Self.name ^---^ -- Self.name.name -- -- `Self.innermost_name` will return the node corresponding to -- `Self.name.name`. function Name_P_Parent_Name_Equation (Node : Bare_Name ; Typ : Internal_Entity_Base_Type_Decl ; Root : Bare_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Construct the xref equation for the chain of parent nested names. function Name_P_Subtype_Indication_Equation (Node : Bare_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Name_P_Can_Designate_Primitive (Node : Bare_Name ) return Boolean ; -- Return True if this name can refer to a primitive subprogram. This is used -- in env lookups to avoid visiting referenced primitive envs when it is not -- relevant. -- -- .. note:: This is not an optimisation, it actually prevents potential -- infinite recursions during lookups. function Name_P_Parent_Name (Node : Bare_Name ; Stop_At : Bare_Name ) return Bare_Name ; -- Will return the parent name until the stop point. function Name_P_Parent_Callexpr (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Call_Expr ; -- If this name qualifies the prefix in a call expression, this returns the -- corresponding CallExpr node. Return null otherwise. For example:: -- -- C (12, 15); ^ parent_callexpr = -- -- A.B.C (12, 15); ^ parent_callexpr = -- -- A.B.C (12, 15); ^ parent_callexpr = null -- -- C (12, 15); ^ parent_callexpr = null function Name_P_Is_Range_Attribute (Node : Bare_Name ) return Boolean ; -- Predicate that returns True if self is a range attribute ref. function Dispatcher_Name_P_Scope (Node : Bare_Name ; Env : Lexical_Env ) return Lexical_Env ; -- Lexical environment this identifier represents. This is similar to -- designated_env although it handles only cases for child units and it is -- used only during the environment population pass so it does not return -- orphan environments. function Name_P_Is_Simple_Name (Node : Bare_Name ) return Boolean ; -- Returns whether Self is a BaseId or a DottedName composed only of BaseIds. function Dispatcher_Name_P_Ref_Var (Node : Bare_Name ) return Logic_Var ; -- This property proxies the logic variable that points to the entity that -- this name refers to. For example, for a simple dotted name:: -- -- A.B -- -- The dotted name's ref var is the one of the SingleTokNode B. function Dispatcher_Name_P_Subp_Spec_Var (Node : Bare_Name ) return Logic_Var ; -- This logic variable holds the specification of the subprogram or subprogram -- access that is being called by this exact Name. function Dispatcher_Name_P_Defines_Subp_Spec_Var (Node : Bare_Name ) return Boolean ; function Name_P_Called_Subp_Spec (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Holder ; -- Return the subprogram specification of the subprogram or subprogram access -- that is being called by this exact Name, if relevant. function Name_P_Referenced_Decl (Node : Bare_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Return the declaration this node references after name resolution. If -- imprecise_fallback is True, errors raised during resolution of the xref -- equation are catched and a fallback mechanism is triggered, which tries to -- find the referenced declaration in an ad-hoc way. function Name_P_Failsafe_Referenced_Decl (Node : Bare_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Refd_Decl ; -- Failsafe version of ``referenced_decl``. Returns a ``RefdDecl``, which can -- be precise, imprecise, or error. function Name_P_Referenced_Decl_Internal (Node : Bare_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Refd_Decl ; -- Return the declaration this node references. Try not to run name res if -- already resolved. INTERNAL USE ONLY. function Dispatcher_Name_P_Designated_Type_Impl (Node : Bare_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Assuming this name designates a type, return this type. -- -- Since in Ada this can be resolved locally without any non-local analysis, -- this doesn't use logic equations. function Name_P_Name_Designated_Type (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Like SubtypeIndication.designated_type, but on names, since because of -- Ada's ambiguous grammar, some subtype indications will be parsed as names. function Name_P_Is_Static_Subtype (Node : Bare_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Returns whether Self denotes a static subtype or not. function Name_P_Name_Designated_Type_Env (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Name_P_Referenced_Unit (Node : Bare_Name ; Kind : Analysis_Unit_Kind ; Not_Found_Is_Error : Boolean := True ) return Internal_Unit ; -- Return the compilation unit referenced by this name and for the given unit -- kind, if there is one. function Name_P_Matches (Node : Bare_Name ; N : Bare_Name ) return Boolean ; -- Return whether two names match each other. -- -- This compares the symbol for Identifier and StringLiteral nodes. We -- consider that there is no match for all other node kinds. function Name_P_Name_Matches (Node : Bare_Name ; N : Internal_Entity_Name ) return Boolean ; -- Return whether two names match each other. -- -- This compares the symbol for Identifier and StringLiteral nodes. We -- consider that there is no match for all other node kinds. function Name_P_Use_Package_Name_Designated_Env (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Assuming Self is a name that is the direct child of a UsePackageClause's -- package name list, return the memoized designated environment for it. function Dispatcher_Name_P_Relative_Name (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Single_Tok_Node ; -- Returns the relative name of this instance. For example, for a prefix -- A.B.C, this will return C. function Dispatcher_Name_P_Name_Symbol (Node : Bare_Name ) return Symbol_Type ; function Dispatcher_Name_P_Base_Name (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Name ; -- Returns the base name of this instance. For example, for a prefix A.B.C, -- this will return A.B. function Name_P_Xref_No_Overloading (Node : Bare_Name ; Sequential : Boolean := True ; All_Els : Boolean := False ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Simple xref equation for names. Doesn't try to resolve overloads. If -- ``all_els`` is True, then the name will be bound to the domain of all -- elements that corresponds. Else, it will be bound to the first one. -- -- ``sequential`` determines whether the lookup will be sequential or not. function Name_P_Is_Prefix (Node : Bare_Name ) return Boolean ; -- Returns whether Self is the prefix in name. Is used to determine whether -- lookups on this name should be recursive or not, without having to pass -- down the information as a function parameter. function Name_P_Is_Suffix (Node : Bare_Name ) return Boolean ; -- Returns whether Self is the suffix in name. function Name_P_Is_Operator_Name (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether the name that Self designates is an operator. function Name_P_Is_Write_Reference (Node : Bare_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether this name is a write reference. -- -- For example, `X` is a write reference in the following cases: -- -- 1. `X := 2;` 2. `X (2) := 2;` 3. `P(F => X)` where F is declared `out` or -- `in out`. 4. `X'Access`. 5. `X.C := 2`, `R.X := 2` 6. `X.P` where the -- formal for X is declared `out` or `in out`. -- -- .. note:: This is an experimental feature. There might be some discrepancy -- with the GNAT concept of "write reference". function Name_P_Potential_Actuals_For_Dispatch (Node : Bare_Name ; Spec : Internal_Entity_Base_Subp_Spec ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Expected_Type_For_Expr_Array_Access ; -- Implementation for calls done via a CallExpr, a DottedName or an -- Identifier. The result includes the prefix of the call in case the dot- -- notation is used. function Name_P_Is_Dispatching_Call (Node : Bare_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Name_P_Is_Static_Call (Node : Bare_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Returns True if this Name corresponds to a static non-dispatching call. In -- other words, this will return True if and only if the target of the call is -- known statically. -- -- .. note:: This is an experimental feature. There might be some discrepancy -- with the GNAT concept of "static call". function Name_P_As_Single_Tok_Node_Array (Node : Bare_Name ) return Bare_Single_Tok_Node_Array_Access ; -- Return the array of SingleTokNode nodes that compose this name. -- -- Only simple name kinds are allowed: Identifer, DottedName and DefiningName. -- Any other kind will trigger a PropertyError. function Name_P_As_Symbol_Array (Node : Bare_Name ) return Symbol_Type_Array_Access ; -- Turn this name into an array of symbols. -- -- For instance, a node with name ``A.B.C`` is turned into ``['A', 'B', -- 'C']``. -- -- Only simple name kinds are allowed: Identifer, DottedName and DefiningName. -- Any other kind will trigger a PropertyError. function Dispatcher_Name_P_Canonical_Text (Node : Bare_Name ) return Symbol_Type ; -- Return a canonicalized version of this name's text. -- -- Only simple name kinds are allowed: Identifer, DottedName and DefiningName. -- Any other kind will trigger a PropertyError. function Name_P_Parent_Scope (Node : Bare_Name ; Env : Lexical_Env ) return Lexical_Env ; -- Returns the lexical environment that is the scope in which the entity -- designated by this name is defined/used. function Name_P_All_Env_Els_Impl (Node : Bare_Name ; Seq : Boolean := True ; Seq_From : Bare_Ada_Node := No_Bare_Ada_Node ; Categories : Ref_Categories := (Inherited_Primitives => True, Nocat => True) ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; function Name_P_Scope (Node : Bare_Name ; Env : Lexical_Env ) return Lexical_Env ; -- Lexical environment this identifier represents. This is similar to -- designated_env although it handles only cases for child units and it is -- used only during the environment population pass so it does not return -- orphan environments. function Name_P_Ref_Var (Node : Bare_Name ) return Logic_Var ; -- This property proxies the logic variable that points to the entity that -- this name refers to. For example, for a simple dotted name:: -- -- A.B -- -- The dotted name's ref var is the one of the SingleTokNode B. function Name_P_Subp_Spec_Var (Node : Bare_Name ) return Logic_Var ; -- This logic variable holds the specification of the subprogram or subprogram -- access that is being called by this exact Name. function Name_P_Defines_Subp_Spec_Var (Node : Bare_Name ) return Boolean ; function Name_P_Designated_Type_Impl (Node : Bare_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Assuming this name designates a type, return this type. -- -- Since in Ada this can be resolved locally without any non-local analysis, -- this doesn't use logic equations. function Name_P_Relative_Name (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Single_Tok_Node ; -- Returns the relative name of this instance. For example, for a prefix -- A.B.C, this will return C. function Name_P_Name_Symbol (Node : Bare_Name ) return Symbol_Type ; function Name_P_Base_Name (Node : Bare_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Name ; -- Returns the base name of this instance. For example, for a prefix A.B.C, -- this will return A.B. function Name_P_Canonical_Text (Node : Bare_Name ) return Symbol_Type ; -- Return a canonicalized version of this name's text. -- -- Only simple name kinds are allowed: Identifer, DottedName and DefiningName. -- Any other kind will trigger a PropertyError. procedure Initialize_Fields_For_Attribute_Ref (Self : Bare_Attribute_Ref ; Attribute_Ref_F_Prefix : Bare_Name ; Attribute_Ref_F_Attribute : Bare_Identifier ; Attribute_Ref_F_Args : Bare_Ada_Node ); function Attribute_Ref_F_Prefix (Node : Bare_Attribute_Ref) return Bare_Name; function Attribute_Ref_F_Attribute (Node : Bare_Attribute_Ref) return Bare_Identifier; function Attribute_Ref_F_Args (Node : Bare_Attribute_Ref) return Bare_Ada_Node; function Attribute_Ref_P_Ref_Var (Node : Bare_Attribute_Ref ) return Logic_Var ; function Attribute_Ref_P_Relative_Name (Node : Bare_Attribute_Ref ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Single_Tok_Node ; function Attribute_Ref_P_Designated_Type_Impl (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Attribute_Ref_P_Args_List (Node : Bare_Attribute_Ref ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Assoc_List ; function Attribute_Ref_P_Env_Elements_Impl (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; function Attribute_Ref_P_Is_Access_Attr (Node : Bare_Attribute_Ref ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Attribute_Ref_P_Designated_Env (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; No_Visibility : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Attribute_Ref_P_Designated_Env_Model_Attr (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Attribute_Ref_P_Xref_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Float_Funcs_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Equation for float function attributes with profile (T*) -> T with T being -- any float type. function Attribute_Ref_P_Mod_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Return the nameres equation for the Mod attribute (T'Mod (X) where T is a -- mod type and X an integer value). function Attribute_Ref_P_Type_Class_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Implementation of the Type_Class attribute, provided for compatibility with -- DEC 83. function Attribute_Ref_P_Storage_Pool_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Equation for the Storage_Pool attribute. function Attribute_Ref_P_Model_Attr_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Bind_To_Prefix_Eq (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Result_Attr_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Tag_Attr_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Stream_Attrs_Equation (Node : Bare_Attribute_Ref ; Return_Obj : Boolean := False ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Address_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Identity_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Universal_Real_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Universal_Int_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Succpred_Xref_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Minmax_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Value_Equation (Node : Bare_Attribute_Ref ; Str_Type : Internal_Entity ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Fixed_Value_Equation (Node : Bare_Attribute_Ref ; Universal_Type : Internal_Entity ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Return the xref equation for the ``Fixed_Value`` and ``Integer_Value`` -- attributes, depending on whether ``universal_int`` or ``universal_real`` is -- passed. function Attribute_Ref_P_Image_Equation (Node : Bare_Attribute_Ref ; Str_Type : Internal_Entity ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Img_Equation (Node : Bare_Attribute_Ref ; Str_Type : Internal_Entity ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Pos_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Val_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Invalid_Value_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Access_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Size_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Array_Attr_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Attribute_Ref_P_Subtype_Attr_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Generates the xref equation for a an attribute that is defined on any -- subtype and that evaluates to an universal integer. function Attribute_Ref_P_Inline_Asm_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Return the xref equation for the 'Asm_Input' and 'Asm_Output' attributes. function Attribute_Ref_P_To_Address_Equation (Node : Bare_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Return the xref equation for the `To_Address` attribute. procedure Initialize_Fields_For_Update_Attribute_Ref (Self : Bare_Update_Attribute_Ref ; Attribute_Ref_F_Prefix : Bare_Name ; Attribute_Ref_F_Attribute : Bare_Identifier ; Attribute_Ref_F_Args : Bare_Ada_Node ); function Update_Attribute_Ref_P_Xref_Equation (Node : Bare_Update_Attribute_Ref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Call_Expr (Self : Bare_Call_Expr ; Call_Expr_F_Name : Bare_Name ; Call_Expr_F_Suffix : Bare_Ada_Node ); function Call_Expr_F_Name (Node : Bare_Call_Expr) return Bare_Name; function Call_Expr_F_Suffix (Node : Bare_Call_Expr) return Bare_Ada_Node; function Call_Expr_P_Ref_Var (Node : Bare_Call_Expr ) return Logic_Var ; function Call_Expr_P_Subp_Spec_Var (Node : Bare_Call_Expr ) return Logic_Var ; function Call_Expr_P_Defines_Subp_Spec_Var (Node : Bare_Call_Expr ) return Boolean ; function Call_Expr_P_Relative_Name (Node : Bare_Call_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Single_Tok_Node ; function Call_Expr_P_Designated_Env (Node : Bare_Call_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; No_Visibility : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Call_Expr_P_Env_Elements_Impl (Node : Bare_Call_Expr ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; function Call_Expr_P_Designated_Type_Impl (Node : Bare_Call_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Call_Expr_P_Params (Node : Bare_Call_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Assoc_List ; function Call_Expr_P_Check_Array_Slice (Node : Bare_Call_Expr ; Typ : Internal_Entity_Base_Type_Decl ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this CallExpr can correspond to taking a slice of the given -- array type. function Call_Expr_P_Is_Array_Slice (Node : Bare_Call_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this CallExpr is actually an access to a slice of the array -- denoted by the prefix of this CallExpr. function Call_Expr_P_Xref_Equation (Node : Bare_Call_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Call_Expr_P_Type_Conv_Xref_Equation (Node : Bare_Call_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Helper for xref_equation, handles construction of the equation in type -- conversion cases. function Call_Expr_P_Entry_Equation (Node : Bare_Call_Expr ; E : Internal_Entity_Entry_Decl ; Root : Bare_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Build the xref equation in case this node represents a call to the given -- entry declaration. function Call_Expr_P_Entity_Equation (Node : Bare_Call_Expr ; S : Internal_Entity_Basic_Decl ; Root : Bare_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Call_Expr_P_General_Xref_Equation (Node : Bare_Call_Expr ; Root : Bare_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Helper for xref_equation, handles construction of the equation in -- subprogram call cases. function Call_Expr_P_Operator_Equation (Node : Bare_Call_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Equation for built-in operators. function Call_Expr_P_Subscriptable_Type_Equation (Node : Bare_Call_Expr ; Typ : Internal_Entity_Base_Type_Decl ; Constrain_Params : Boolean := True ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; -- Construct an equation verifying if Self is conformant to the type -- designator passed in parameter. function Call_Expr_P_Subprogram_Equation (Node : Bare_Call_Expr ; Subp_Spec : Internal_Entity_Base_Formal_Param_Holder ; Dottable_Subp : Boolean ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Call_Expr_P_Check_For_Type (Node : Bare_Call_Expr ; Typ : Internal_Entity_Base_Type_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Check that self is an appropriate CallExpr for given type, which must be a -- subscriptable type (eg; a type for which it makes senses to do a call expr -- on an instance of the type, like an array type, or an access to subprogram -- type. procedure Initialize_Fields_For_Defining_Name (Self : Bare_Defining_Name ; Defining_Name_F_Name : Bare_Name ); function Defining_Name_F_Name (Node : Bare_Defining_Name) return Bare_Name; function Defining_Name_P_Parent_Scope (Node : Bare_Defining_Name ; Env : Lexical_Env ) return Lexical_Env ; function Defining_Name_P_Scope (Node : Bare_Defining_Name ; Env : Lexical_Env ) return Lexical_Env ; function Defining_Name_P_Relative_Name (Node : Bare_Defining_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Single_Tok_Node ; function Defining_Name_P_Ref_Var (Node : Bare_Defining_Name ) return Logic_Var ; function Defining_Name_P_Env_Elements_Impl (Node : Bare_Defining_Name ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; function Defining_Name_P_Canonical_Fully_Qualified_Name (Node : Bare_Defining_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; -- Return a canonical representation of the fully qualified name corresponding -- to this defining name. function Defining_Name_P_Unique_Identifying_Name (Node : Bare_Defining_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; -- Return a unique identifying name for this defining name, provided this -- declaration is a public declaration. In the case of subprograms, this will -- include the profile. -- -- .. attention:: This will only return a unique name for public declarations. -- Notably, anything nested in an unnamed declare block won't be handled -- correctly. function Defining_Name_P_Fully_Qualified_Name_Array (Node : Bare_Defining_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Symbol_Type_Array_Access ; -- Return the fully qualified name corresponding to this defining name, as an -- array of symbols. function Defining_Name_P_Fully_Qualified_Name (Node : Bare_Defining_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; -- Return the fully qualified name corresponding to this defining name. function Defining_Name_P_All_Env_Els_Impl (Node : Bare_Defining_Name ; Seq : Boolean := True ; Seq_From : Bare_Ada_Node := No_Bare_Ada_Node ; Categories : Ref_Categories := (Inherited_Primitives => True, Nocat => True) ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; function Defining_Name_P_Basic_Decl (Node : Bare_Defining_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Returns this DefiningName's basic declaration function Defining_Name_P_Find_Refs (Node : Bare_Defining_Name ; Root : Internal_Entity ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Ref_Result_Array_Access ; -- Find all references to this defining name in the given ``root`` and its -- children. function Defining_Name_P_Is_Derivable_Equal (Node : Bare_Defining_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this is a name that defines an "=" operator which implicitly -- declares an "/=" operator giving the complementary result, which is True -- iff this "=" declaration returns a Boolean (RM 6.6-6/3). function Defining_Name_P_Is_Potential_Reference (Node : Bare_Defining_Name ; Symbol : Symbol_Type ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether the given symbol could be a reference to this defining name. function Defining_Name_P_Is_Referenced_By (Node : Bare_Defining_Name ; Id : Internal_Entity_Base_Id ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Ref_Result_Kind ; -- Returns True iff the given node is an identifier referring to Self. Note -- that this takes into account both direct references as well as potential -- references. -- -- Potential references can occur in the context of dispatching calls: an -- identifier having for direct reference the declaration of an overridable -- subprogram is considered a potential reference to all subprograms that -- override it if the identifier appears in a dispatching call. function Defining_Name_P_Find_All_References (Node : Bare_Defining_Name ; Units : Internal_Unit_Array_Access ; Follow_Renamings : Boolean := False ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Ref_Result_Array_Access ; -- Searches all references to this defining name in the given list of units. -- -- If ``follow_renamings`` is True, also this also includes references that -- ultimately refer to this defining name, by unwinding renaming clauses. function Defining_Name_P_Find_Matching_Name (Node : Bare_Defining_Name ; Bd : Internal_Entity_Basic_Decl ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name ; -- Helper for navigation proxies. Will return the defining name matching Self -- on the given BasicDecl. function Defining_Name_P_Find_All_Calls (Node : Bare_Defining_Name ; Units : Internal_Unit_Array_Access ; Follow_Renamings : Boolean := False ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Ref_Result_Array_Access ; -- Return the list of all possible calls to the subprogram which Self is the -- defining name of. -- -- This will return the name corresponding to the call, excluding the -- parameters if there are any. For instance, it will return `A` for the `A -- (B)` call. -- -- .. note:: This does not yet support calls done inside generics. function Defining_Name_P_Next_Part (Node : Bare_Defining_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name ; -- Like ``BasicDecl.next_part_for_decl`` on a defining name function Defining_Name_P_Previous_Part (Node : Bare_Defining_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name ; -- Like ``BasicDecl.previous_part_for_decl`` on a defining name function Defining_Name_P_Canonical_Part (Node : Bare_Defining_Name ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Defining_Name ; -- Like ``BasicDecl.canonical_part`` on a defining name function Defining_Name_P_Xref_Equation (Node : Bare_Defining_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Defining_Name_P_Xref_Entry_Point (Node : Bare_Defining_Name ) return Boolean ; procedure Initialize_Fields_For_Discrete_Subtype_Name (Self : Bare_Discrete_Subtype_Name ; Discrete_Subtype_Name_F_Subtype : Bare_Discrete_Subtype_Indication ); function Discrete_Subtype_Name_F_Subtype (Node : Bare_Discrete_Subtype_Name) return Bare_Discrete_Subtype_Indication; procedure Initialize_Fields_For_Dotted_Name (Self : Bare_Dotted_Name ; Dotted_Name_F_Prefix : Bare_Name ; Dotted_Name_F_Suffix : Bare_Base_Id ); function Dotted_Name_F_Prefix (Node : Bare_Dotted_Name) return Bare_Name; function Dotted_Name_F_Suffix (Node : Bare_Dotted_Name) return Bare_Base_Id; function Dotted_Name_P_Ref_Var (Node : Bare_Dotted_Name ) return Logic_Var ; function Dotted_Name_P_Subp_Spec_Var (Node : Bare_Dotted_Name ) return Logic_Var ; function Dotted_Name_P_Defines_Subp_Spec_Var (Node : Bare_Dotted_Name ) return Boolean ; function Dotted_Name_P_Complete (Node : Bare_Dotted_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Completion_Item_Iterator_Access ; function Dotted_Name_P_Designated_Env_No_Overloading (Node : Bare_Dotted_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; No_Visibility : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Dotted_Name_P_Designated_Env (Node : Bare_Dotted_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; No_Visibility : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Dotted_Name_P_All_Env_Els_Impl (Node : Bare_Dotted_Name ; Seq : Boolean := True ; Seq_From : Bare_Ada_Node := No_Bare_Ada_Node ; Categories : Ref_Categories := (Inherited_Primitives => True, Nocat => True) ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; function Dotted_Name_P_Scope (Node : Bare_Dotted_Name ; Env : Lexical_Env ) return Lexical_Env ; function Dotted_Name_P_Parent_Scope (Node : Bare_Dotted_Name ; Env : Lexical_Env ) return Lexical_Env ; function Dotted_Name_P_Relative_Name (Node : Bare_Dotted_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Single_Tok_Node ; function Dotted_Name_P_Base_Name (Node : Bare_Dotted_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Name ; function Dotted_Name_P_Env_Elements_Impl (Node : Bare_Dotted_Name ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; function Dotted_Name_P_Designated_Type_Impl (Node : Bare_Dotted_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Dotted_Name_P_Xref_Equation (Node : Bare_Dotted_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_End_Name (Self : Bare_End_Name ; End_Name_F_Name : Bare_Name ); function End_Name_F_Name (Node : Bare_End_Name) return Bare_Name; function End_Name_P_Parent_Scope (Node : Bare_End_Name ; Env : Lexical_Env ) return Lexical_Env ; function End_Name_P_Scope (Node : Bare_End_Name ; Env : Lexical_Env ) return Lexical_Env ; function End_Name_P_Relative_Name (Node : Bare_End_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Single_Tok_Node ; function End_Name_P_Ref_Var (Node : Bare_End_Name ) return Logic_Var ; function End_Name_P_Env_Elements_Impl (Node : Bare_End_Name ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; function End_Name_P_Basic_Decl (Node : Bare_End_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl ; -- Returns this EndName's basic declaration function End_Name_P_Xref_Equation (Node : Bare_End_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function End_Name_P_Xref_Entry_Point (Node : Bare_End_Name ) return Boolean ; procedure Initialize_Fields_For_Explicit_Deref (Self : Bare_Explicit_Deref ; Explicit_Deref_F_Prefix : Bare_Name ); function Explicit_Deref_F_Prefix (Node : Bare_Explicit_Deref) return Bare_Name; function Explicit_Deref_P_Ref_Var (Node : Bare_Explicit_Deref ) return Logic_Var ; function Explicit_Deref_P_Subp_Spec_Var (Node : Bare_Explicit_Deref ) return Logic_Var ; function Explicit_Deref_P_Defines_Subp_Spec_Var (Node : Bare_Explicit_Deref ) return Boolean ; function Explicit_Deref_P_Relative_Name (Node : Bare_Explicit_Deref ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Single_Tok_Node ; function Explicit_Deref_P_Designated_Env (Node : Bare_Explicit_Deref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; No_Visibility : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Explicit_Deref_P_Env_Elements_Impl (Node : Bare_Explicit_Deref ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; function Explicit_Deref_P_Eq_For_Type (Node : Bare_Explicit_Deref ; Typ : Internal_Entity_Base_Type_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ) return Logic_Equation ; function Explicit_Deref_P_Xref_Equation (Node : Bare_Explicit_Deref ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Explicit_Deref_P_General_Xref_Equation (Node : Bare_Explicit_Deref ; Root : Bare_Name := No_Bare_Ada_Node ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Qual_Expr (Self : Bare_Qual_Expr ; Qual_Expr_F_Prefix : Bare_Name ; Qual_Expr_F_Suffix : Bare_Expr ); function Qual_Expr_F_Prefix (Node : Bare_Qual_Expr) return Bare_Name; function Qual_Expr_F_Suffix (Node : Bare_Qual_Expr) return Bare_Expr; function Qual_Expr_P_Ref_Var (Node : Bare_Qual_Expr ) return Logic_Var ; function Qual_Expr_P_Relative_Name (Node : Bare_Qual_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Single_Tok_Node ; function Qual_Expr_P_General_Xref_Equation (Node : Bare_Qual_Expr ; Root : Bare_Name := No_Bare_Ada_Node ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Qual_Expr_P_Xref_Equation (Node : Bare_Qual_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Qual_Expr_P_Designated_Type (Node : Bare_Qual_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Qual_Expr_P_Designated_Env (Node : Bare_Qual_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; No_Visibility : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Qual_Expr_P_Env_Elements_Impl (Node : Bare_Qual_Expr ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; procedure Initialize_Fields_For_Single_Tok_Node (Self : Bare_Single_Tok_Node ); function Single_Tok_Node_P_Relative_Name (Node : Bare_Single_Tok_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Single_Tok_Node ; function Single_Tok_Node_P_Defines_Subp_Spec_Var (Node : Bare_Single_Tok_Node ) return Boolean ; function Single_Tok_Node_P_Sym (Node : Bare_Single_Tok_Node ) return Symbol_Type ; -- Shortcut to get the symbol of this node. We keep this short form, even -- though the public property canonical_text is equivalent because it is very -- used inside of the internal properties function Single_Tok_Node_P_Canonical_Text (Node : Bare_Single_Tok_Node ) return Symbol_Type ; function Single_Tok_Node_P_Env_Get_First_Visible (Node : Bare_Single_Tok_Node ; Lex_Env : Lexical_Env ; Lookup_Type : Lookup_Kind ; From_Node : Bare_Ada_Node ; No_Visibility : Boolean := False ) return Internal_Entity ; -- Like env.get_first, but returning the first visible element in the Ada -- sense. -- -- If ``no_visibility``, discard visibility checks. procedure Initialize_Fields_For_Base_Id (Self : Bare_Base_Id ); function Base_Id_P_Scope (Node : Bare_Base_Id ; Env : Lexical_Env ) return Lexical_Env ; function Base_Id_P_Designated_Env_No_Overloading (Node : Bare_Base_Id ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; No_Visibility : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Base_Id_P_Designated_Env (Node : Bare_Base_Id ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; No_Visibility : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Decoupled implementation for designated_env, specifically used by -- DottedName when the parent is a library level package. function Base_Id_P_Pkg_Env (Node : Bare_Base_Id ; From_Pkg : Internal_Entity_Basic_Decl ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Return the lexical environment for this identifier, should it be a package. -- This method handles resolving to the most visible part of a package - -- private or body - if necessary. It also unwinds package renamings if -- necessary. -- -- If ``inst_from_formal`` is True, we know that bd is a generic package -- instantiation coming from a rebound formal package, and that we need -- visibility on the formals. function Base_Id_P_Parent_Scope (Node : Bare_Base_Id ; Env : Lexical_Env ) return Lexical_Env ; function Base_Id_P_Designated_Type_Impl_Get_Real_Type (Node : Bare_Base_Id ; N : Internal_Entity ) return Internal_Entity_Base_Type_Decl ; -- Helper property for ``designated_type_impl``. Returns the actual type -- defined by the given node, if any. function Base_Id_P_Designated_Type_Impl (Node : Bare_Base_Id ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Base_Id_P_Env_Elements_Impl (Node : Bare_Base_Id ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; function Base_Id_P_All_Env_Els_Impl (Node : Bare_Base_Id ; Seq : Boolean := True ; Seq_From : Bare_Ada_Node := No_Bare_Ada_Node ; Categories : Ref_Categories := (Inherited_Primitives => True, Nocat => True) ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; function Base_Id_P_Env_Elements_Baseid (Node : Bare_Base_Id ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Array_Access ; -- Decoupled implementation for env_elements_impl, specifically used by -- designated_env when the parent is a library level package. function Base_Id_P_Xref_Equation (Node : Bare_Base_Id ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Base_Id_P_Base_Id_Xref_Equation (Node : Bare_Base_Id ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Char_Literal (Self : Bare_Char_Literal ); function Char_Literal_P_Xref_Equation (Node : Bare_Char_Literal ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Identifier (Self : Bare_Identifier ); function Identifier_P_Is_Attr_With_Args (Node : Bare_Identifier ) return Boolean ; procedure Initialize_Fields_For_Op (Self : Bare_Op ); function Op_P_Subprogram_Symbol (Node : Bare_Op ) return Symbol_Type ; -- Return the symbol that needs to be used to define an overload of this -- operator. function Op_P_Subprograms_For_Symbol (Node : Bare_Op ; Sym : Symbol_Type ; From_Node : Internal_Entity ) return Internal_Entity_Basic_Decl_Array_Access ; function Op_P_Subprograms (Node : Bare_Op ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; -- Return the subprograms corresponding to this operator accessible in the -- lexical environment. function Op_P_Name_Symbol (Node : Bare_Op ) return Symbol_Type ; function Op_P_Xref_Equation (Node : Bare_Op ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Op_P_Is_Dispatching_Call (Node : Bare_Op ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; procedure Initialize_Fields_For_Op_Abs (Self : Bare_Op_Abs ); procedure Initialize_Fields_For_Op_And (Self : Bare_Op_And ); procedure Initialize_Fields_For_Op_And_Then (Self : Bare_Op_And_Then ); procedure Initialize_Fields_For_Op_Concat (Self : Bare_Op_Concat ); procedure Initialize_Fields_For_Op_Div (Self : Bare_Op_Div ); procedure Initialize_Fields_For_Op_Double_Dot (Self : Bare_Op_Double_Dot ); procedure Initialize_Fields_For_Op_Eq (Self : Bare_Op_Eq ); procedure Initialize_Fields_For_Op_Gt (Self : Bare_Op_Gt ); procedure Initialize_Fields_For_Op_Gte (Self : Bare_Op_Gte ); procedure Initialize_Fields_For_Op_In (Self : Bare_Op_In ); procedure Initialize_Fields_For_Op_Lt (Self : Bare_Op_Lt ); procedure Initialize_Fields_For_Op_Lte (Self : Bare_Op_Lte ); procedure Initialize_Fields_For_Op_Minus (Self : Bare_Op_Minus ); procedure Initialize_Fields_For_Op_Mod (Self : Bare_Op_Mod ); procedure Initialize_Fields_For_Op_Mult (Self : Bare_Op_Mult ); procedure Initialize_Fields_For_Op_Neq (Self : Bare_Op_Neq ); procedure Initialize_Fields_For_Op_Not (Self : Bare_Op_Not ); procedure Initialize_Fields_For_Op_Not_In (Self : Bare_Op_Not_In ); procedure Initialize_Fields_For_Op_Or (Self : Bare_Op_Or ); procedure Initialize_Fields_For_Op_Or_Else (Self : Bare_Op_Or_Else ); procedure Initialize_Fields_For_Op_Plus (Self : Bare_Op_Plus ); procedure Initialize_Fields_For_Op_Pow (Self : Bare_Op_Pow ); procedure Initialize_Fields_For_Op_Rem (Self : Bare_Op_Rem ); procedure Initialize_Fields_For_Op_Xor (Self : Bare_Op_Xor ); procedure Initialize_Fields_For_String_Literal (Self : Bare_String_Literal ); function String_Literal_P_Xref_Equation (Node : Bare_String_Literal ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Null_Literal (Self : Bare_Null_Literal ); function Null_Literal_P_Xref_Equation (Node : Bare_Null_Literal ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Num_Literal (Self : Bare_Num_Literal ); procedure Initialize_Fields_For_Int_Literal (Self : Bare_Int_Literal ); function Int_Literal_P_Xref_Equation (Node : Bare_Int_Literal ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Real_Literal (Self : Bare_Real_Literal ); function Real_Literal_P_Xref_Equation (Node : Bare_Real_Literal ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Target_Name (Self : Bare_Target_Name ); function Target_Name_P_Ref_Var (Node : Bare_Target_Name ) return Logic_Var ; function Target_Name_P_Assign_Statement (Node : Bare_Target_Name ) return Bare_Assign_Stmt ; function Target_Name_P_Relative_Name (Node : Bare_Target_Name ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Single_Tok_Node ; function Target_Name_P_Xref_Equation (Node : Bare_Target_Name ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Paren_Expr (Self : Bare_Paren_Expr ; Paren_Expr_F_Expr : Bare_Expr ); function Paren_Expr_F_Expr (Node : Bare_Paren_Expr) return Bare_Expr; function Paren_Expr_P_Xref_Equation (Node : Bare_Paren_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Quantified_Expr (Self : Bare_Quantified_Expr ; Quantified_Expr_F_Quantifier : Bare_Quantifier ; Quantified_Expr_F_Loop_Spec : Bare_For_Loop_Spec ; Quantified_Expr_F_Expr : Bare_Expr ); function Quantified_Expr_F_Quantifier (Node : Bare_Quantified_Expr) return Bare_Quantifier; function Quantified_Expr_F_Loop_Spec (Node : Bare_Quantified_Expr) return Bare_For_Loop_Spec; function Quantified_Expr_F_Expr (Node : Bare_Quantified_Expr) return Bare_Expr; function Quantified_Expr_P_Xref_Equation (Node : Bare_Quantified_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Raise_Expr (Self : Bare_Raise_Expr ; Raise_Expr_F_Exception_Name : Bare_Name ; Raise_Expr_F_Error_Message : Bare_Expr ); function Raise_Expr_F_Exception_Name (Node : Bare_Raise_Expr) return Bare_Name; function Raise_Expr_F_Error_Message (Node : Bare_Raise_Expr) return Bare_Expr; function Raise_Expr_P_Xref_Equation (Node : Bare_Raise_Expr ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Un_Op (Self : Bare_Un_Op ; Un_Op_F_Op : Bare_Op ; Un_Op_F_Expr : Bare_Expr ); function Un_Op_F_Op (Node : Bare_Un_Op) return Bare_Op; function Un_Op_F_Expr (Node : Bare_Un_Op) return Bare_Expr; function Un_Op_P_Xref_Equation (Node : Bare_Un_Op ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Un_Op_P_Potential_Actuals_For_Dispatch (Node : Bare_Un_Op ; Spec : Internal_Entity_Base_Subp_Spec ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Expected_Type_For_Expr_Array_Access ; function Un_Op_P_Is_Dispatching_Call (Node : Bare_Un_Op ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; procedure Initialize_Fields_For_Handled_Stmts (Self : Bare_Handled_Stmts ; Handled_Stmts_F_Stmts : Bare_Stmt_List ; Handled_Stmts_F_Exceptions : Bare_Ada_Node_List ); function Handled_Stmts_F_Stmts (Node : Bare_Handled_Stmts) return Bare_Stmt_List; function Handled_Stmts_F_Exceptions (Node : Bare_Handled_Stmts) return Bare_Ada_Node_List; procedure Initialize_Fields_For_Library_Item (Self : Bare_Library_Item ; Library_Item_F_Has_Private : Bare_Private_Node ; Library_Item_F_Item : Bare_Basic_Decl ); function Library_Item_F_Has_Private (Node : Bare_Library_Item) return Bare_Private_Node; function Library_Item_F_Item (Node : Bare_Library_Item) return Bare_Basic_Decl; function Dispatcher_Limited_Node_P_As_Bool (Node : Bare_Limited_Node ) return Boolean ; -- Return whether this is an instance of LimitedPresent function Limited_Absent_P_As_Bool (Node : Bare_Limited_Absent ) return Boolean ; function Limited_Present_P_As_Bool (Node : Bare_Limited_Present ) return Boolean ; procedure Initialize_Fields_For_For_Loop_Spec (Self : Bare_For_Loop_Spec ; For_Loop_Spec_F_Var_Decl : Bare_For_Loop_Var_Decl ; For_Loop_Spec_F_Loop_Type : Bare_Iter_Type ; For_Loop_Spec_F_Has_Reverse : Bare_Reverse_Node ; For_Loop_Spec_F_Iter_Expr : Bare_Ada_Node ); function For_Loop_Spec_F_Var_Decl (Node : Bare_For_Loop_Spec) return Bare_For_Loop_Var_Decl; function For_Loop_Spec_F_Loop_Type (Node : Bare_For_Loop_Spec) return Bare_Iter_Type; function For_Loop_Spec_F_Has_Reverse (Node : Bare_For_Loop_Spec) return Bare_Reverse_Node; function For_Loop_Spec_F_Iter_Expr (Node : Bare_For_Loop_Spec) return Bare_Ada_Node; function For_Loop_Spec_P_Iter_Type (Node : Bare_For_Loop_Spec ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function For_Loop_Spec_P_Xref_Equation (Node : Bare_For_Loop_Spec ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function For_Loop_Spec_P_Iterator_Xref_Equation (Node : Bare_For_Loop_Spec ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function For_Loop_Spec_P_Xref_Entry_Point (Node : Bare_For_Loop_Spec ) return Boolean ; procedure Initialize_Fields_For_While_Loop_Spec (Self : Bare_While_Loop_Spec ; While_Loop_Spec_F_Expr : Bare_Expr ); function While_Loop_Spec_F_Expr (Node : Bare_While_Loop_Spec) return Bare_Expr; function While_Loop_Spec_P_Xref_Equation (Node : Bare_While_Loop_Spec ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Mode_P_Is_Writable (Node : Bare_Mode ) return Boolean ; -- Return whether this mode allows the qualified entity to be written or not. procedure Initialize_Fields_For_Multi_Abstract_State_Decl (Self : Bare_Multi_Abstract_State_Decl ; Multi_Abstract_State_Decl_F_Decls : Bare_Abstract_State_Decl_List ); function Multi_Abstract_State_Decl_F_Decls (Node : Bare_Multi_Abstract_State_Decl) return Bare_Abstract_State_Decl_List; function Dispatcher_Not_Null_P_As_Bool (Node : Bare_Not_Null ) return Boolean ; -- Return whether this is an instance of NotNullPresent function Not_Null_Absent_P_As_Bool (Node : Bare_Not_Null_Absent ) return Boolean ; function Not_Null_Present_P_As_Bool (Node : Bare_Not_Null_Present ) return Boolean ; function Others_Designator_P_Xref_Equation (Node : Bare_Others_Designator ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Params (Self : Bare_Params ; Params_F_Params : Bare_Param_Spec_List ); function Params_F_Params (Node : Bare_Params) return Bare_Param_Spec_List; procedure Initialize_Fields_For_Paren_Abstract_State_Decl (Self : Bare_Paren_Abstract_State_Decl ; Paren_Abstract_State_Decl_F_Decl : Bare_Ada_Node ); function Paren_Abstract_State_Decl_F_Decl (Node : Bare_Paren_Abstract_State_Decl) return Bare_Ada_Node; procedure Initialize_Fields_For_Pragma_Node (Self : Bare_Pragma_Node ; Pragma_Node_F_Id : Bare_Identifier ; Pragma_Node_F_Args : Bare_Base_Assoc_List ); function Pragma_Node_F_Id (Node : Bare_Pragma_Node) return Bare_Identifier; function Pragma_Node_F_Args (Node : Bare_Pragma_Node) return Bare_Base_Assoc_List; function Pragma_Node_P_Xref_Entry_Point (Node : Bare_Pragma_Node ) return Boolean ; function Pragma_Node_P_Is_Ghost_Code (Node : Bare_Pragma_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this pragma is ghost code or not. See SPARK RM 6.9. function Pragma_Node_P_Xref_Equation (Node : Bare_Pragma_Node ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Pragma_Node_P_Associated_Entity_Names (Node : Bare_Pragma_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Name_Array_Access ; function Pragma_Node_P_Associated_Decls_Helper (Node : Bare_Pragma_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; function Pragma_Node_P_Associated_Decls (Node : Bare_Pragma_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Basic_Decl_Array_Access ; -- Return an array of ``BasicDecl`` instances associated with this pragma, or -- an empty array if non applicable. function Pragma_Node_P_Initial_Env (Node : Bare_Pragma_Node ) return Internal_DesignatedEnv ; -- Return the initial env name for a pragma clause. We use the Standard -- package for top level use clauses. function Initial_Env_35 (Node : Bare_Pragma_Node ) return Internal_DesignatedEnv ; procedure Pragma_Pre_Env_Actions (Self : Bare_Pragma_Node; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); function Dispatcher_Private_Node_P_As_Bool (Node : Bare_Private_Node ) return Boolean ; -- Return whether this is an instance of PrivatePresent function Private_Absent_P_As_Bool (Node : Bare_Private_Absent ) return Boolean ; function Private_Present_P_As_Bool (Node : Bare_Private_Present ) return Boolean ; procedure Initialize_Fields_For_Protected_Def (Self : Bare_Protected_Def ; Protected_Def_F_Public_Part : Bare_Public_Part ; Protected_Def_F_Private_Part : Bare_Private_Part ; Protected_Def_F_End_Name : Bare_End_Name ); function Protected_Def_F_Public_Part (Node : Bare_Protected_Def) return Bare_Public_Part; function Protected_Def_F_Private_Part (Node : Bare_Protected_Def) return Bare_Private_Part; function Protected_Def_F_End_Name (Node : Bare_Protected_Def) return Bare_End_Name; function Dispatcher_Protected_Node_P_As_Bool (Node : Bare_Protected_Node ) return Boolean ; -- Return whether this is an instance of ProtectedPresent function Protected_Absent_P_As_Bool (Node : Bare_Protected_Absent ) return Boolean ; function Protected_Present_P_As_Bool (Node : Bare_Protected_Present ) return Boolean ; procedure Initialize_Fields_For_Range_Spec (Self : Bare_Range_Spec ; Range_Spec_F_Range : Bare_Expr ); function Range_Spec_F_Range (Node : Bare_Range_Spec) return Bare_Expr; function Range_Spec_P_Xref_Equation (Node : Bare_Range_Spec ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Renaming_Clause (Self : Bare_Renaming_Clause ; Renaming_Clause_F_Renamed_Object : Bare_Name ); function Renaming_Clause_F_Renamed_Object (Node : Bare_Renaming_Clause) return Bare_Name; procedure Initialize_Fields_For_Synthetic_Renaming_Clause (Self : Bare_Synthetic_Renaming_Clause ; Renaming_Clause_F_Renamed_Object : Bare_Name ); function Dispatcher_Reverse_Node_P_As_Bool (Node : Bare_Reverse_Node ) return Boolean ; -- Return whether this is an instance of ReversePresent function Reverse_Absent_P_As_Bool (Node : Bare_Reverse_Absent ) return Boolean ; function Reverse_Present_P_As_Bool (Node : Bare_Reverse_Present ) return Boolean ; procedure Initialize_Fields_For_Select_When_Part (Self : Bare_Select_When_Part ; Select_When_Part_F_Cond_Expr : Bare_Expr ; Select_When_Part_F_Stmts : Bare_Stmt_List ); function Select_When_Part_F_Cond_Expr (Node : Bare_Select_When_Part) return Bare_Expr; function Select_When_Part_F_Stmts (Node : Bare_Select_When_Part) return Bare_Stmt_List; function Select_When_Part_P_Xref_Equation (Node : Bare_Select_When_Part ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Stmt_P_Xref_Entry_Point (Node : Bare_Stmt ) return Boolean ; function Stmt_P_Is_Ghost_Code (Node : Bare_Stmt ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this statement is ghost code or not. See SPARK RM 6.9. procedure Initialize_Fields_For_Accept_Stmt (Self : Bare_Accept_Stmt ; Accept_Stmt_F_Name : Bare_Identifier ; Accept_Stmt_F_Entry_Index_Expr : Bare_Expr ; Accept_Stmt_F_Params : Bare_Entry_Completion_Formal_Params ); function Accept_Stmt_F_Name (Node : Bare_Accept_Stmt) return Bare_Identifier; function Accept_Stmt_F_Entry_Index_Expr (Node : Bare_Accept_Stmt) return Bare_Expr; function Accept_Stmt_F_Params (Node : Bare_Accept_Stmt) return Bare_Entry_Completion_Formal_Params; function Accept_Stmt_P_Designated_Entry (Node : Bare_Accept_Stmt ; Origin : Bare_Ada_Node ; Env : Lexical_Env ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Entry_Decl ; function Accept_Stmt_P_Corresponding_Entry (Node : Bare_Accept_Stmt ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Entry_Decl ; -- Return the entry which corresponds to this accept statement. function Accept_Stmt_P_Xref_Equation (Node : Bare_Accept_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Env_Trans_Parent_157 (Node : Bare_Accept_Stmt ) return Boolean ; procedure Accept_Stmt_Pre_Env_Actions (Self : Bare_Accept_Stmt; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Accept_Stmt_With_Stmts (Self : Bare_Accept_Stmt_With_Stmts ; Accept_Stmt_F_Name : Bare_Identifier ; Accept_Stmt_F_Entry_Index_Expr : Bare_Expr ; Accept_Stmt_F_Params : Bare_Entry_Completion_Formal_Params ; Accept_Stmt_With_Stmts_F_Stmts : Bare_Handled_Stmts ; Accept_Stmt_With_Stmts_F_End_Name : Bare_End_Name ); function Accept_Stmt_With_Stmts_F_Stmts (Node : Bare_Accept_Stmt_With_Stmts) return Bare_Handled_Stmts; function Accept_Stmt_With_Stmts_F_End_Name (Node : Bare_Accept_Stmt_With_Stmts) return Bare_End_Name; procedure Initialize_Fields_For_Base_Loop_Stmt (Self : Bare_Base_Loop_Stmt ; Base_Loop_Stmt_F_Spec : Bare_Loop_Spec ; Base_Loop_Stmt_F_Stmts : Bare_Stmt_List ; Base_Loop_Stmt_F_End_Name : Bare_End_Name ); function Base_Loop_Stmt_F_Spec (Node : Bare_Base_Loop_Stmt) return Bare_Loop_Spec; function Base_Loop_Stmt_F_Stmts (Node : Bare_Base_Loop_Stmt) return Bare_Stmt_List; function Base_Loop_Stmt_F_End_Name (Node : Bare_Base_Loop_Stmt) return Bare_End_Name; function Base_Loop_Stmt_P_Xref_Equation (Node : Bare_Base_Loop_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_For_Loop_Stmt (Self : Bare_For_Loop_Stmt ; Base_Loop_Stmt_F_Spec : Bare_Loop_Spec ; Base_Loop_Stmt_F_Stmts : Bare_Stmt_List ; Base_Loop_Stmt_F_End_Name : Bare_End_Name ); function Env_Trans_Parent_154 (Node : Bare_For_Loop_Stmt ) return Boolean ; procedure For_Loop_Stmt_Pre_Env_Actions (Self : Bare_For_Loop_Stmt; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Loop_Stmt (Self : Bare_Loop_Stmt ; Base_Loop_Stmt_F_Spec : Bare_Loop_Spec ; Base_Loop_Stmt_F_Stmts : Bare_Stmt_List ; Base_Loop_Stmt_F_End_Name : Bare_End_Name ); procedure Initialize_Fields_For_While_Loop_Stmt (Self : Bare_While_Loop_Stmt ; Base_Loop_Stmt_F_Spec : Bare_Loop_Spec ; Base_Loop_Stmt_F_Stmts : Bare_Stmt_List ; Base_Loop_Stmt_F_End_Name : Bare_End_Name ); function Block_Stmt_P_Xref_Equation (Node : Bare_Block_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Env_Trans_Parent_155 (Node : Bare_Block_Stmt ) return Boolean ; procedure Block_Stmt_Pre_Env_Actions (Self : Bare_Block_Stmt; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Begin_Block (Self : Bare_Begin_Block ; Begin_Block_F_Stmts : Bare_Handled_Stmts ; Begin_Block_F_End_Name : Bare_End_Name ); function Begin_Block_F_Stmts (Node : Bare_Begin_Block) return Bare_Handled_Stmts; function Begin_Block_F_End_Name (Node : Bare_Begin_Block) return Bare_End_Name; procedure Initialize_Fields_For_Decl_Block (Self : Bare_Decl_Block ; Decl_Block_F_Decls : Bare_Declarative_Part ; Decl_Block_F_Stmts : Bare_Handled_Stmts ; Decl_Block_F_End_Name : Bare_End_Name ); function Decl_Block_F_Decls (Node : Bare_Decl_Block) return Bare_Declarative_Part; function Decl_Block_F_Stmts (Node : Bare_Decl_Block) return Bare_Handled_Stmts; function Decl_Block_F_End_Name (Node : Bare_Decl_Block) return Bare_End_Name; function Decl_Block_P_Immediate_Declarative_Region (Node : Bare_Decl_Block ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; procedure Initialize_Fields_For_Case_Stmt (Self : Bare_Case_Stmt ; Case_Stmt_F_Expr : Bare_Expr ; Case_Stmt_F_Alternatives : Bare_Case_Stmt_Alternative_List ); function Case_Stmt_F_Expr (Node : Bare_Case_Stmt) return Bare_Expr; function Case_Stmt_F_Alternatives (Node : Bare_Case_Stmt) return Bare_Case_Stmt_Alternative_List; function Case_Stmt_P_Xref_Equation (Node : Bare_Case_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Extended_Return_Stmt (Self : Bare_Extended_Return_Stmt ; Extended_Return_Stmt_F_Decl : Bare_Extended_Return_Stmt_Object_Decl ; Extended_Return_Stmt_F_Stmts : Bare_Handled_Stmts ); function Extended_Return_Stmt_F_Decl (Node : Bare_Extended_Return_Stmt) return Bare_Extended_Return_Stmt_Object_Decl; function Extended_Return_Stmt_F_Stmts (Node : Bare_Extended_Return_Stmt) return Bare_Handled_Stmts; function Extended_Return_Stmt_P_Xref_Equation (Node : Bare_Extended_Return_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Env_Trans_Parent_156 (Node : Bare_Extended_Return_Stmt ) return Boolean ; procedure Extended_Return_Stmt_Pre_Env_Actions (Self : Bare_Extended_Return_Stmt; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_If_Stmt (Self : Bare_If_Stmt ; If_Stmt_F_Cond_Expr : Bare_Expr ; If_Stmt_F_Then_Stmts : Bare_Stmt_List ; If_Stmt_F_Alternatives : Bare_Elsif_Stmt_Part_List ; If_Stmt_F_Else_Stmts : Bare_Stmt_List ); function If_Stmt_F_Cond_Expr (Node : Bare_If_Stmt) return Bare_Expr; function If_Stmt_F_Then_Stmts (Node : Bare_If_Stmt) return Bare_Stmt_List; function If_Stmt_F_Alternatives (Node : Bare_If_Stmt) return Bare_Elsif_Stmt_Part_List; function If_Stmt_F_Else_Stmts (Node : Bare_If_Stmt) return Bare_Stmt_List; function If_Stmt_P_Xref_Equation (Node : Bare_If_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Named_Stmt (Self : Bare_Named_Stmt ; Named_Stmt_F_Decl : Bare_Named_Stmt_Decl ; Named_Stmt_F_Stmt : Bare_Composite_Stmt ); function Named_Stmt_F_Decl (Node : Bare_Named_Stmt) return Bare_Named_Stmt_Decl; function Named_Stmt_F_Stmt (Node : Bare_Named_Stmt) return Bare_Composite_Stmt; function Named_Stmt_P_Xref_Equation (Node : Bare_Named_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Env_Mappings_152 (Node : Bare_Named_Stmt ) return Internal_Env_Assoc ; function Env_Trans_Parent_153 (Node : Bare_Named_Stmt ) return Boolean ; procedure Named_Stmt_Pre_Env_Actions (Self : Bare_Named_Stmt; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Select_Stmt (Self : Bare_Select_Stmt ; Select_Stmt_F_Guards : Bare_Select_When_Part_List ; Select_Stmt_F_Else_Stmts : Bare_Stmt_List ; Select_Stmt_F_Abort_Stmts : Bare_Stmt_List ); function Select_Stmt_F_Guards (Node : Bare_Select_Stmt) return Bare_Select_When_Part_List; function Select_Stmt_F_Else_Stmts (Node : Bare_Select_Stmt) return Bare_Stmt_List; function Select_Stmt_F_Abort_Stmts (Node : Bare_Select_Stmt) return Bare_Stmt_List; function Select_Stmt_P_Xref_Equation (Node : Bare_Select_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Abort_Stmt (Self : Bare_Abort_Stmt ; Abort_Stmt_F_Names : Bare_Name_List ); function Abort_Stmt_F_Names (Node : Bare_Abort_Stmt) return Bare_Name_List; function Abort_Stmt_P_Xref_Equation (Node : Bare_Abort_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Assign_Stmt (Self : Bare_Assign_Stmt ; Assign_Stmt_F_Dest : Bare_Name ; Assign_Stmt_F_Expr : Bare_Expr ); function Assign_Stmt_F_Dest (Node : Bare_Assign_Stmt) return Bare_Name; function Assign_Stmt_F_Expr (Node : Bare_Assign_Stmt) return Bare_Expr; function Assign_Stmt_P_Xref_Equation (Node : Bare_Assign_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Call_Stmt (Self : Bare_Call_Stmt ; Call_Stmt_F_Call : Bare_Name ); function Call_Stmt_F_Call (Node : Bare_Call_Stmt) return Bare_Name; function Call_Stmt_P_Xref_Equation (Node : Bare_Call_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Delay_Stmt (Self : Bare_Delay_Stmt ; Delay_Stmt_F_Has_Until : Bare_Until_Node ; Delay_Stmt_F_Expr : Bare_Expr ); function Delay_Stmt_F_Has_Until (Node : Bare_Delay_Stmt) return Bare_Until_Node; function Delay_Stmt_F_Expr (Node : Bare_Delay_Stmt) return Bare_Expr; function Delay_Stmt_P_Xref_Equation (Node : Bare_Delay_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Exit_Stmt (Self : Bare_Exit_Stmt ; Exit_Stmt_F_Loop_Name : Bare_Name ; Exit_Stmt_F_Cond_Expr : Bare_Expr ); function Exit_Stmt_F_Loop_Name (Node : Bare_Exit_Stmt) return Bare_Name; function Exit_Stmt_F_Cond_Expr (Node : Bare_Exit_Stmt) return Bare_Expr; function Exit_Stmt_P_Xref_Equation (Node : Bare_Exit_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Goto_Stmt (Self : Bare_Goto_Stmt ; Goto_Stmt_F_Label_Name : Bare_Name ); function Goto_Stmt_F_Label_Name (Node : Bare_Goto_Stmt) return Bare_Name; function Goto_Stmt_P_Xref_Equation (Node : Bare_Goto_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Label (Self : Bare_Label ; Label_F_Decl : Bare_Label_Decl ); function Label_F_Decl (Node : Bare_Label) return Bare_Label_Decl; function Label_P_Xref_Equation (Node : Bare_Label ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Null_Stmt_P_Xref_Equation (Node : Bare_Null_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Raise_Stmt (Self : Bare_Raise_Stmt ; Raise_Stmt_F_Exception_Name : Bare_Name ; Raise_Stmt_F_Error_Message : Bare_Expr ); function Raise_Stmt_F_Exception_Name (Node : Bare_Raise_Stmt) return Bare_Name; function Raise_Stmt_F_Error_Message (Node : Bare_Raise_Stmt) return Bare_Expr; function Raise_Stmt_P_Xref_Equation (Node : Bare_Raise_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Requeue_Stmt (Self : Bare_Requeue_Stmt ; Requeue_Stmt_F_Call_Name : Bare_Name ; Requeue_Stmt_F_Has_Abort : Bare_Abort_Node ); function Requeue_Stmt_F_Call_Name (Node : Bare_Requeue_Stmt) return Bare_Name; function Requeue_Stmt_F_Has_Abort (Node : Bare_Requeue_Stmt) return Bare_Abort_Node; function Requeue_Stmt_P_Innermost_Entry_Or_Accept_Stmt_Params (Node : Bare_Requeue_Stmt ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Holder ; function Requeue_Stmt_P_Xref_Equation (Node : Bare_Requeue_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Return_Stmt (Self : Bare_Return_Stmt ; Return_Stmt_F_Return_Expr : Bare_Expr ); function Return_Stmt_F_Return_Expr (Node : Bare_Return_Stmt) return Bare_Expr; function Return_Stmt_P_Subp (Node : Bare_Return_Stmt ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Subp_Body ; -- Returns the subprogram this return statement belongs to function Return_Stmt_P_Xref_Equation (Node : Bare_Return_Stmt ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Terminate_Alternative_P_Xref_Equation (Node : Bare_Terminate_Alternative ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Subunit (Self : Bare_Subunit ; Subunit_F_Name : Bare_Name ; Subunit_F_Body : Bare_Body_Node ); function Subunit_F_Name (Node : Bare_Subunit) return Bare_Name; function Subunit_F_Body (Node : Bare_Subunit) return Bare_Body_Node; function Subunit_P_Root_Unit (Node : Bare_Subunit ) return Internal_Entity_Compilation_Unit ; -- Return the compilation unit in which this subunit is rooted. function Subunit_P_Env_Hook_Subunit (Node : Bare_Subunit ) return Boolean ; -- Helper for AdaNode.env_hook. Handle sub-units (separates). function Subunit_P_Body_Root (Node : Bare_Subunit ) return Internal_Entity_Basic_Decl ; -- Return the body in which this subunit is rooted. function Subunit_P_Xref_Entry_Point (Node : Bare_Subunit ) return Boolean ; function Subunit_P_Xref_Equation (Node : Bare_Subunit ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Dispatcher_Synchronized_Node_P_As_Bool (Node : Bare_Synchronized_Node ) return Boolean ; -- Return whether this is an instance of SynchronizedPresent function Synchronized_Absent_P_As_Bool (Node : Bare_Synchronized_Absent ) return Boolean ; function Synchronized_Present_P_As_Bool (Node : Bare_Synchronized_Present ) return Boolean ; function Dispatcher_Tagged_Node_P_As_Bool (Node : Bare_Tagged_Node ) return Boolean ; -- Return whether this is an instance of TaggedPresent function Tagged_Absent_P_As_Bool (Node : Bare_Tagged_Absent ) return Boolean ; function Tagged_Present_P_As_Bool (Node : Bare_Tagged_Present ) return Boolean ; procedure Initialize_Fields_For_Task_Def (Self : Bare_Task_Def ; Task_Def_F_Interfaces : Bare_Parent_List ; Task_Def_F_Public_Part : Bare_Public_Part ; Task_Def_F_Private_Part : Bare_Private_Part ; Task_Def_F_End_Name : Bare_End_Name ); function Task_Def_F_Interfaces (Node : Bare_Task_Def) return Bare_Parent_List; function Task_Def_F_Public_Part (Node : Bare_Task_Def) return Bare_Public_Part; function Task_Def_F_Private_Part (Node : Bare_Task_Def) return Bare_Private_Part; function Task_Def_F_End_Name (Node : Bare_Task_Def) return Bare_End_Name; function Task_Def_P_Xref_Equation (Node : Bare_Task_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Dispatcher_Type_Def_P_Discrete_Range (Node : Bare_Type_Def ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Discrete_Range ; -- Return the discrete range for this type def, if applicable. function Dispatcher_Type_Def_P_Array_Ndims (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Integer ; -- If this designates an array type, return its number of dimensions. Return 0 -- otherwise. function Type_Def_P_Is_Real_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a real type or not. function Dispatcher_Type_Def_P_Is_Float_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a float type or not. function Dispatcher_Type_Def_P_Is_Fixed_Point (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a fixed point type or not. function Dispatcher_Type_Def_P_Is_Discrete_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Dispatcher_Type_Def_P_Is_Int_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is an integer type or not. function Dispatcher_Type_Def_P_Is_Access_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ) return Boolean ; -- Whether type is an access type or not. function Dispatcher_Type_Def_P_Is_Char_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Dispatcher_Type_Def_P_Is_Enum_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Dispatcher_Type_Def_P_Accessed_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Dispatcher_Type_Def_P_Is_Tagged_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this type is tagged. function Dispatcher_Type_Def_P_Base_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the base type entity for this derived type definition. function Type_Def_P_Base_Types (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; -- Return all the base types for this type (base type + base interfaces) function Dispatcher_Type_Def_P_Base_Interfaces (Node : Bare_Type_Def ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; -- Return the interfaces this type derives from function Type_Def_P_Defining_Env (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Type_Def_P_Containing_Type (Node : Bare_Type_Def ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Type_Decl ; -- Return the TypeDecl containing this TypeDef function Type_Def_P_Previous_Part (Node : Bare_Type_Def ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Type_Def_P_Previous_Part_Env (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Type_Def_P_Dottable_Subps_Env (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Dispatcher_Type_Def_P_Is_Static (Node : Bare_Type_Def ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Def_P_Discrete_Range (Node : Bare_Type_Def ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Discrete_Range ; -- Return the discrete range for this type def, if applicable. function Type_Def_P_Array_Ndims (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Integer ; -- If this designates an array type, return its number of dimensions. Return 0 -- otherwise. function Type_Def_P_Is_Float_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a float type or not. function Type_Def_P_Is_Fixed_Point (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is a fixed point type or not. function Type_Def_P_Is_Discrete_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Def_P_Is_Int_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Whether type is an integer type or not. function Type_Def_P_Is_Access_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ) return Boolean ; -- Whether type is an access type or not. function Type_Def_P_Is_Char_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Def_P_Is_Enum_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Def_P_Accessed_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Type_Def_P_Is_Tagged_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Return whether this type is tagged. function Type_Def_P_Base_Type (Node : Bare_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the base type entity for this derived type definition. function Type_Def_P_Base_Interfaces (Node : Bare_Type_Def ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; -- Return the interfaces this type derives from function Type_Def_P_Is_Static (Node : Bare_Type_Def ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; procedure Initialize_Fields_For_Access_Def (Self : Bare_Access_Def ; Access_Def_F_Has_Not_Null : Bare_Not_Null ); function Access_Def_F_Has_Not_Null (Node : Bare_Access_Def) return Bare_Not_Null; function Access_Def_P_Is_Access_Type (Node : Bare_Access_Def ; Origin : Bare_Ada_Node ) return Boolean ; procedure Initialize_Fields_For_Access_To_Subp_Def (Self : Bare_Access_To_Subp_Def ; Access_Def_F_Has_Not_Null : Bare_Not_Null ; Access_To_Subp_Def_F_Has_Protected : Bare_Protected_Node ; Access_To_Subp_Def_F_Subp_Spec : Bare_Subp_Spec ); function Access_To_Subp_Def_F_Has_Protected (Node : Bare_Access_To_Subp_Def) return Bare_Protected_Node; function Access_To_Subp_Def_F_Subp_Spec (Node : Bare_Access_To_Subp_Def) return Bare_Subp_Spec; function Access_To_Subp_Def_P_Xref_Equation (Node : Bare_Access_To_Subp_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Access_To_Subp_Def_P_Accessed_Type (Node : Bare_Access_To_Subp_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Env_Trans_Parent_15 (Node : Bare_Access_To_Subp_Def ) return Boolean ; procedure Access_To_Subp_Def_Pre_Env_Actions (Self : Bare_Access_To_Subp_Def; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Initialize_Fields_For_Base_Type_Access_Def (Self : Bare_Base_Type_Access_Def ; Access_Def_F_Has_Not_Null : Bare_Not_Null ); procedure Initialize_Fields_For_Anonymous_Type_Access_Def (Self : Bare_Anonymous_Type_Access_Def ; Access_Def_F_Has_Not_Null : Bare_Not_Null ; Anonymous_Type_Access_Def_F_Type_Decl : Bare_Base_Type_Decl ); function Anonymous_Type_Access_Def_F_Type_Decl (Node : Bare_Anonymous_Type_Access_Def) return Bare_Base_Type_Decl; function Anonymous_Type_Access_Def_P_Accessed_Type (Node : Bare_Anonymous_Type_Access_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; procedure Initialize_Fields_For_Type_Access_Def (Self : Bare_Type_Access_Def ; Access_Def_F_Has_Not_Null : Bare_Not_Null ; Type_Access_Def_F_Has_All : Bare_All_Node ; Type_Access_Def_F_Has_Constant : Bare_Constant_Node ; Type_Access_Def_F_Subtype_Indication : Bare_Subtype_Indication ); function Type_Access_Def_F_Has_All (Node : Bare_Type_Access_Def) return Bare_All_Node; function Type_Access_Def_F_Has_Constant (Node : Bare_Type_Access_Def) return Bare_Constant_Node; function Type_Access_Def_F_Subtype_Indication (Node : Bare_Type_Access_Def) return Bare_Subtype_Indication; function Type_Access_Def_P_Accessed_Type (Node : Bare_Type_Access_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Type_Access_Def_P_Xref_Equation (Node : Bare_Type_Access_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Array_Type_Def (Self : Bare_Array_Type_Def ; Array_Type_Def_F_Indices : Bare_Array_Indices ; Array_Type_Def_F_Component_Type : Bare_Component_Def ); function Array_Type_Def_F_Indices (Node : Bare_Array_Type_Def) return Bare_Array_Indices; function Array_Type_Def_F_Component_Type (Node : Bare_Array_Type_Def) return Bare_Component_Def; function Array_Type_Def_P_Comp_Type (Node : Bare_Array_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Returns the type stored as a component in the array. function Array_Type_Def_P_Index_Type (Node : Bare_Array_Type_Def ; Dim : Integer ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Array_Type_Def_P_Array_Ndims (Node : Bare_Array_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Integer ; function Array_Type_Def_P_Xref_Equation (Node : Bare_Array_Type_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Array_Type_Def_P_Is_Static (Node : Bare_Array_Type_Def ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Array_Type_Def_P_Xref_Entry_Point (Node : Bare_Array_Type_Def ) return Boolean ; procedure Initialize_Fields_For_Derived_Type_Def (Self : Bare_Derived_Type_Def ; Derived_Type_Def_F_Has_Abstract : Bare_Abstract_Node ; Derived_Type_Def_F_Has_Limited : Bare_Limited_Node ; Derived_Type_Def_F_Has_Synchronized : Bare_Synchronized_Node ; Derived_Type_Def_F_Subtype_Indication : Bare_Subtype_Indication ; Derived_Type_Def_F_Interfaces : Bare_Parent_List ; Derived_Type_Def_F_Record_Extension : Bare_Base_Record_Def ; Derived_Type_Def_F_Has_With_Private : Bare_With_Private ); function Derived_Type_Def_F_Has_Abstract (Node : Bare_Derived_Type_Def) return Bare_Abstract_Node; function Derived_Type_Def_F_Has_Limited (Node : Bare_Derived_Type_Def) return Bare_Limited_Node; function Derived_Type_Def_F_Has_Synchronized (Node : Bare_Derived_Type_Def) return Bare_Synchronized_Node; function Derived_Type_Def_F_Subtype_Indication (Node : Bare_Derived_Type_Def) return Bare_Subtype_Indication; function Derived_Type_Def_F_Interfaces (Node : Bare_Derived_Type_Def) return Bare_Parent_List; function Derived_Type_Def_F_Record_Extension (Node : Bare_Derived_Type_Def) return Bare_Base_Record_Def; function Derived_Type_Def_F_Has_With_Private (Node : Bare_Derived_Type_Def) return Bare_With_Private; function Derived_Type_Def_P_Array_Ndims (Node : Bare_Derived_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Integer ; function Derived_Type_Def_P_Base_Type (Node : Bare_Derived_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Derived_Type_Def_P_Base_Interfaces (Node : Bare_Derived_Type_Def ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; function Derived_Type_Def_P_Is_Int_Type (Node : Bare_Derived_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Derived_Type_Def_P_Is_Access_Type (Node : Bare_Derived_Type_Def ; Origin : Bare_Ada_Node ) return Boolean ; function Derived_Type_Def_P_Is_Char_Type (Node : Bare_Derived_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Derived_Type_Def_P_Is_Float_Type (Node : Bare_Derived_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Derived_Type_Def_P_Is_Fixed_Point (Node : Bare_Derived_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Derived_Type_Def_P_Accessed_Type (Node : Bare_Derived_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Derived_Type_Def_P_Is_Tagged_Type (Node : Bare_Derived_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Derived_Type_Def_P_Is_Enum_Type (Node : Bare_Derived_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Derived_Type_Def_P_Is_Static (Node : Bare_Derived_Type_Def ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Derived_Type_Def_P_Xref_Equation (Node : Bare_Derived_Type_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Derived_Type_Def_P_Discrete_Range (Node : Bare_Derived_Type_Def ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Discrete_Range ; procedure Initialize_Fields_For_Enum_Type_Def (Self : Bare_Enum_Type_Def ; Enum_Type_Def_F_Enum_Literals : Bare_Enum_Literal_Decl_List ); function Enum_Type_Def_F_Enum_Literals (Node : Bare_Enum_Type_Def) return Bare_Enum_Literal_Decl_List; function Enum_Type_Def_P_Is_Char_Type (Node : Bare_Enum_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Enum_Type_Def_P_Is_Enum_Type (Node : Bare_Enum_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Enum_Type_Def_P_Xref_Equation (Node : Bare_Enum_Type_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Enum_Type_Def_P_Is_Static (Node : Bare_Enum_Type_Def ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Formal_Discrete_Type_Def_P_Xref_Equation (Node : Bare_Formal_Discrete_Type_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Formal_Discrete_Type_Def_P_Is_Discrete_Type (Node : Bare_Formal_Discrete_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; procedure Initialize_Fields_For_Interface_Type_Def (Self : Bare_Interface_Type_Def ; Interface_Type_Def_F_Interface_Kind : Bare_Interface_Kind ; Interface_Type_Def_F_Interfaces : Bare_Parent_List ); function Interface_Type_Def_F_Interface_Kind (Node : Bare_Interface_Type_Def) return Bare_Interface_Kind; function Interface_Type_Def_F_Interfaces (Node : Bare_Interface_Type_Def) return Bare_Parent_List; function Interface_Type_Def_P_Is_Tagged_Type (Node : Bare_Interface_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Interface_Type_Def_P_Base_Interfaces (Node : Bare_Interface_Type_Def ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl_Array_Access ; function Interface_Type_Def_P_Xref_Equation (Node : Bare_Interface_Type_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Mod_Int_Type_Def (Self : Bare_Mod_Int_Type_Def ; Mod_Int_Type_Def_F_Expr : Bare_Expr ); function Mod_Int_Type_Def_F_Expr (Node : Bare_Mod_Int_Type_Def) return Bare_Expr; function Mod_Int_Type_Def_P_Is_Int_Type (Node : Bare_Mod_Int_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Mod_Int_Type_Def_P_Xref_Equation (Node : Bare_Mod_Int_Type_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Mod_Int_Type_Def_P_Is_Static (Node : Bare_Mod_Int_Type_Def ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Mod_Int_Type_Def_P_Discrete_Range (Node : Bare_Mod_Int_Type_Def ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Discrete_Range ; procedure Initialize_Fields_For_Private_Type_Def (Self : Bare_Private_Type_Def ; Private_Type_Def_F_Has_Abstract : Bare_Abstract_Node ; Private_Type_Def_F_Has_Tagged : Bare_Tagged_Node ; Private_Type_Def_F_Has_Limited : Bare_Limited_Node ); function Private_Type_Def_F_Has_Abstract (Node : Bare_Private_Type_Def) return Bare_Abstract_Node; function Private_Type_Def_F_Has_Tagged (Node : Bare_Private_Type_Def) return Bare_Tagged_Node; function Private_Type_Def_F_Has_Limited (Node : Bare_Private_Type_Def) return Bare_Limited_Node; function Private_Type_Def_P_Is_Tagged_Type (Node : Bare_Private_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Private_Type_Def_P_Xref_Equation (Node : Bare_Private_Type_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Real_Type_Def_P_Xref_Equation (Node : Bare_Real_Type_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Real_Type_Def_P_Is_Static (Node : Bare_Real_Type_Def ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; procedure Initialize_Fields_For_Decimal_Fixed_Point_Def (Self : Bare_Decimal_Fixed_Point_Def ; Decimal_Fixed_Point_Def_F_Delta : Bare_Expr ; Decimal_Fixed_Point_Def_F_Digits : Bare_Expr ; Decimal_Fixed_Point_Def_F_Range : Bare_Range_Spec ); function Decimal_Fixed_Point_Def_F_Delta (Node : Bare_Decimal_Fixed_Point_Def) return Bare_Expr; function Decimal_Fixed_Point_Def_F_Digits (Node : Bare_Decimal_Fixed_Point_Def) return Bare_Expr; function Decimal_Fixed_Point_Def_F_Range (Node : Bare_Decimal_Fixed_Point_Def) return Bare_Range_Spec; function Decimal_Fixed_Point_Def_P_Is_Fixed_Point (Node : Bare_Decimal_Fixed_Point_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; procedure Initialize_Fields_For_Floating_Point_Def (Self : Bare_Floating_Point_Def ; Floating_Point_Def_F_Num_Digits : Bare_Expr ; Floating_Point_Def_F_Range : Bare_Range_Spec ); function Floating_Point_Def_F_Num_Digits (Node : Bare_Floating_Point_Def) return Bare_Expr; function Floating_Point_Def_F_Range (Node : Bare_Floating_Point_Def) return Bare_Range_Spec; function Floating_Point_Def_P_Is_Float_Type (Node : Bare_Floating_Point_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; procedure Initialize_Fields_For_Ordinary_Fixed_Point_Def (Self : Bare_Ordinary_Fixed_Point_Def ; Ordinary_Fixed_Point_Def_F_Delta : Bare_Expr ; Ordinary_Fixed_Point_Def_F_Range : Bare_Range_Spec ); function Ordinary_Fixed_Point_Def_F_Delta (Node : Bare_Ordinary_Fixed_Point_Def) return Bare_Expr; function Ordinary_Fixed_Point_Def_F_Range (Node : Bare_Ordinary_Fixed_Point_Def) return Bare_Range_Spec; function Ordinary_Fixed_Point_Def_P_Is_Fixed_Point (Node : Bare_Ordinary_Fixed_Point_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; procedure Initialize_Fields_For_Record_Type_Def (Self : Bare_Record_Type_Def ; Record_Type_Def_F_Has_Abstract : Bare_Abstract_Node ; Record_Type_Def_F_Has_Tagged : Bare_Tagged_Node ; Record_Type_Def_F_Has_Limited : Bare_Limited_Node ; Record_Type_Def_F_Record_Def : Bare_Base_Record_Def ); function Record_Type_Def_F_Has_Abstract (Node : Bare_Record_Type_Def) return Bare_Abstract_Node; function Record_Type_Def_F_Has_Tagged (Node : Bare_Record_Type_Def) return Bare_Tagged_Node; function Record_Type_Def_F_Has_Limited (Node : Bare_Record_Type_Def) return Bare_Limited_Node; function Record_Type_Def_F_Record_Def (Node : Bare_Record_Type_Def) return Bare_Base_Record_Def; function Record_Type_Def_P_Is_Tagged_Type (Node : Bare_Record_Type_Def ; Origin : Bare_Ada_Node := No_Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Record_Type_Def_P_Xref_Equation (Node : Bare_Record_Type_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; procedure Initialize_Fields_For_Signed_Int_Type_Def (Self : Bare_Signed_Int_Type_Def ; Signed_Int_Type_Def_F_Range : Bare_Range_Spec ); function Signed_Int_Type_Def_F_Range (Node : Bare_Signed_Int_Type_Def) return Bare_Range_Spec; function Signed_Int_Type_Def_P_Is_Int_Type (Node : Bare_Signed_Int_Type_Def ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Signed_Int_Type_Def_P_Xref_Equation (Node : Bare_Signed_Int_Type_Def ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Signed_Int_Type_Def_P_Discrete_Range (Node : Bare_Signed_Int_Type_Def ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Discrete_Range ; function Signed_Int_Type_Def_P_Is_Static (Node : Bare_Signed_Int_Type_Def ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; function Type_Expr_P_Array_Ndims (Node : Bare_Type_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Integer ; function Type_Expr_P_Type_Name (Node : Bare_Type_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Name ; -- Return the name node for this type expression, if applicable, else null function Type_Expr_P_Accessed_Type (Node : Bare_Type_Expr ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Type_Expr_P_Defining_Env (Node : Bare_Type_Expr ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; function Dispatcher_Type_Expr_P_Designated_Type (Node : Bare_Type_Expr ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the type designated by this type expression. function Type_Expr_P_Designated_Type_Decl (Node : Bare_Type_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Returns the type declaration designated by this type expression. function Type_Expr_P_Designated_Type_Decl_From (Node : Bare_Type_Expr ; Origin_Node : Internal_Entity ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- Return the type declaration designated by this type expression as viewed -- from the node given by origin_node. function Type_Expr_P_Element_Type (Node : Bare_Type_Expr ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; -- If self is an anonymous access, return the accessed type. Otherwise, return -- the designated type. function Type_Expr_P_Canonical_Type (Node : Bare_Type_Expr ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; procedure Initialize_Fields_For_Anonymous_Type (Self : Bare_Anonymous_Type ; Anonymous_Type_F_Type_Decl : Bare_Anonymous_Type_Decl ); function Anonymous_Type_F_Type_Decl (Node : Bare_Anonymous_Type) return Bare_Anonymous_Type_Decl; function Anonymous_Type_P_Designated_Type (Node : Bare_Anonymous_Type ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Anonymous_Type_P_Xref_Equation (Node : Bare_Anonymous_Type ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Anonymous_Type_P_Custom_Id_Text (Node : Bare_Anonymous_Type ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; function Enum_Lit_Synth_Type_Expr_P_Designated_Type (Node : Bare_Enum_Lit_Synth_Type_Expr ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Enum_Lit_Synth_Type_Expr_P_Custom_Id_Text (Node : Bare_Enum_Lit_Synth_Type_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; procedure Initialize_Fields_For_Subtype_Indication (Self : Bare_Subtype_Indication ; Subtype_Indication_F_Has_Not_Null : Bare_Not_Null ; Subtype_Indication_F_Name : Bare_Name ; Subtype_Indication_F_Constraint : Bare_Constraint ); function Subtype_Indication_F_Has_Not_Null (Node : Bare_Subtype_Indication) return Bare_Not_Null; function Subtype_Indication_F_Name (Node : Bare_Subtype_Indication) return Bare_Name; function Subtype_Indication_F_Constraint (Node : Bare_Subtype_Indication) return Bare_Constraint; function Subtype_Indication_P_Designated_Type (Node : Bare_Subtype_Indication ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Subtype_Indication_P_Xref_Equation (Node : Bare_Subtype_Indication ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Subtype_Indication_P_Discrete_Range (Node : Bare_Subtype_Indication ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Discrete_Range ; function Subtype_Indication_P_Is_Static_Subtype (Node : Bare_Subtype_Indication ; Imprecise_Fallback : Boolean := False ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Returns whether Self denotes a static subtype or not. function Subtype_Indication_P_Custom_Id_Text (Node : Bare_Subtype_Indication ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Character_Type_Array_Access ; procedure Initialize_Fields_For_Constrained_Subtype_Indication (Self : Bare_Constrained_Subtype_Indication ; Subtype_Indication_F_Has_Not_Null : Bare_Not_Null ; Subtype_Indication_F_Name : Bare_Name ; Subtype_Indication_F_Constraint : Bare_Constraint ); procedure Initialize_Fields_For_Discrete_Subtype_Indication (Self : Bare_Discrete_Subtype_Indication ; Subtype_Indication_F_Has_Not_Null : Bare_Not_Null ; Subtype_Indication_F_Name : Bare_Name ; Subtype_Indication_F_Constraint : Bare_Constraint ); procedure Initialize_Fields_For_Unconstrained_Array_Index (Self : Bare_Unconstrained_Array_Index ; Unconstrained_Array_Index_F_Subtype_Indication : Bare_Subtype_Indication ); function Unconstrained_Array_Index_F_Subtype_Indication (Node : Bare_Unconstrained_Array_Index) return Bare_Subtype_Indication; function Unconstrained_Array_Index_P_Designated_Type (Node : Bare_Unconstrained_Array_Index ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Type_Decl ; function Dispatcher_Until_Node_P_As_Bool (Node : Bare_Until_Node ) return Boolean ; -- Return whether this is an instance of UntilPresent function Until_Absent_P_As_Bool (Node : Bare_Until_Absent ) return Boolean ; function Until_Present_P_As_Bool (Node : Bare_Until_Present ) return Boolean ; function Use_Clause_P_Xref_Entry_Point (Node : Bare_Use_Clause ) return Boolean ; function Use_Clause_P_Used_Envs (Node : Bare_Use_Clause ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Return the environment grouping all environments that are referred to by -- this use clause. function Use_Clause_P_Initial_Env (Node : Bare_Use_Clause ) return Internal_DesignatedEnv ; -- Return the initial env for a use clause. Always the standard package for -- top level use clauses. procedure Initialize_Fields_For_Use_Package_Clause (Self : Bare_Use_Package_Clause ; Use_Package_Clause_F_Packages : Bare_Name_List ); function Use_Package_Clause_F_Packages (Node : Bare_Use_Package_Clause) return Bare_Name_List; function Use_Package_Clause_P_Designated_Env (Node : Bare_Use_Package_Clause ; Index : Integer ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env ; -- Return the lexical env designated by the index'th package name in this use -- clause. function Use_Package_Clause_P_Designated_Envs (Node : Bare_Use_Package_Clause ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Lexical_Env_Array_Access ; -- Return the array of designated envs corresponding to each package name. -- -- It is very important for this property to be memoized, as it is used a lot -- during lexical environment lookups. function Use_Package_Clause_P_Xref_Equation (Node : Bare_Use_Package_Clause ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Initial_Env_17 (Node : Bare_Use_Package_Clause ) return Internal_DesignatedEnv ; function Ref_Env_Nodes_18 (Node : Bare_Use_Package_Clause ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_19 (Node : Bare_Use_Package_Clause ) return Boolean ; procedure Use_Package_Clause_Pre_Env_Actions (Self : Bare_Use_Package_Clause; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Use_Package_Clause_Post_Env_Actions (Self : Bare_Use_Package_Clause; State : in out PLE_Node_State); procedure Initialize_Fields_For_Use_Type_Clause (Self : Bare_Use_Type_Clause ; Use_Type_Clause_F_Has_All : Bare_All_Node ; Use_Type_Clause_F_Types : Bare_Name_List ); function Use_Type_Clause_F_Has_All (Node : Bare_Use_Type_Clause) return Bare_All_Node; function Use_Type_Clause_F_Types (Node : Bare_Use_Type_Clause) return Bare_Name_List; function Use_Type_Clause_P_Xref_Equation (Node : Bare_Use_Type_Clause ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Initial_Env_20 (Node : Bare_Use_Type_Clause ) return Internal_DesignatedEnv ; function Ref_Env_Nodes_21 (Node : Bare_Use_Type_Clause ) return Bare_Ada_Node_Array_Access ; function Ref_Cond_22 (Node : Bare_Use_Type_Clause ) return Boolean ; procedure Use_Type_Clause_Pre_Env_Actions (Self : Bare_Use_Type_Clause; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); procedure Use_Type_Clause_Post_Env_Actions (Self : Bare_Use_Type_Clause; State : in out PLE_Node_State); procedure Initialize_Fields_For_Variant (Self : Bare_Variant ; Variant_F_Choices : Bare_Alternatives_List ; Variant_F_Components : Bare_Component_List ); function Variant_F_Choices (Node : Bare_Variant) return Bare_Alternatives_List; function Variant_F_Components (Node : Bare_Variant) return Bare_Component_List; function Variant_P_Matches (Node : Bare_Variant ; Expr : Internal_Entity_Expr ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Boolean ; -- Check if any choice in the choice list matches expr's value. procedure Initialize_Fields_For_Variant_Part (Self : Bare_Variant_Part ; Variant_Part_F_Discr_Name : Bare_Identifier ; Variant_Part_F_Variant : Bare_Variant_List ); function Variant_Part_F_Discr_Name (Node : Bare_Variant_Part) return Bare_Identifier; function Variant_Part_F_Variant (Node : Bare_Variant_Part) return Bare_Variant_List; function Variant_Part_P_Xref_Entry_Point (Node : Bare_Variant_Part ) return Boolean ; function Variant_Part_P_Xref_Equation (Node : Bare_Variant_Part ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Variant_Part_P_Get_Components (Node : Bare_Variant_Part ; Discriminants : Internal_Param_Match_Array_Access ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Internal_Entity_Base_Formal_Param_Decl_Array_Access ; -- Get components for this variant part, depending on the values of -- discriminants. procedure Initialize_Fields_For_With_Clause (Self : Bare_With_Clause ; With_Clause_F_Has_Limited : Bare_Limited_Node ; With_Clause_F_Has_Private : Bare_Private_Node ; With_Clause_F_Packages : Bare_Name_List ); function With_Clause_F_Has_Limited (Node : Bare_With_Clause) return Bare_Limited_Node; function With_Clause_F_Has_Private (Node : Bare_With_Clause) return Bare_Private_Node; function With_Clause_F_Packages (Node : Bare_With_Clause) return Bare_Name_List; function With_Clause_P_Xref_Entry_Point (Node : Bare_With_Clause ) return Boolean ; function With_Clause_P_Xref_Equation (Node : Bare_With_Clause ; Env : Lexical_Env ; Origin : Bare_Ada_Node ; E_Info : Internal_Entity_Info := No_Entity_Info ) return Logic_Equation ; function Initial_Env_16 (Node : Bare_With_Clause ) return Internal_DesignatedEnv ; procedure With_Clause_Pre_Env_Actions (Self : Bare_With_Clause; State : in out PLE_Node_State; Add_To_Env_Only : Boolean := False); function Dispatcher_With_Private_P_As_Bool (Node : Bare_With_Private ) return Boolean ; -- Return whether this is an instance of WithPrivatePresent function With_Private_Absent_P_As_Bool (Node : Bare_With_Private_Absent ) return Boolean ; function With_Private_Present_P_As_Bool (Node : Bare_With_Private_Present ) return Boolean ; function "<" (Left, Right : Internal_Unit) return Boolean; type Exiled_Entry is record Env : Lexical_Env; Key : Symbol_Type; Node : Bare_Ada_Node; end record; -- Tuple of values passed to AST_Envs.Add. Used in the lexical -- environment rerooting machinery: see Remove_Exiled_Entries and -- Reroot_Foreign_Nodes. package Exiled_Entry_Vectors is new Langkit_Support.Vectors (Exiled_Entry); type Foreign_Node_Entry is record Node : Bare_Ada_Node; -- The foreign node that has been added to an analysis unit's lexical -- environment. Unit : Internal_Unit; -- Analysis unit that owns Node end record; package Foreign_Node_Entry_Vectors is new Langkit_Support.Vectors (Foreign_Node_Entry); procedure Register_Destroyable (Unit : Internal_Unit; Node : Bare_Ada_Node); -- Register Node to be destroyed when Unit is deallocated/reparsed procedure Register_Destroyable (Unit : Internal_Unit; Env : AST_Envs.Lexical_Env_Access); -- Register Env to be destroyed when Unit is deallocated/reparsed ------------------------ -- Memoization state -- ------------------------ type Mmz_Property is (Mmz_Bare_Ada_Node_Ada_Node_P_Resolve_Names, Mmz_Bare_Ada_Node_Ada_Node_P_Std_Entity_Implem, Mmz_Bare_Anonymous_Expr_Decl_Anonymous_Expr_Decl_P_Type_Expression_Internal, Mmz_Bare_Base_Aggregate_Base_Aggregate_P_All_Components, Mmz_Bare_Base_Aggregate_Base_Aggregate_P_All_Discriminants, Mmz_Bare_Base_Aggregate_Base_Aggregate_P_Matched_Components, Mmz_Bare_Base_Aggregate_Base_Aggregate_P_Matched_Discriminants, Mmz_Bare_Base_Aggregate_Base_Aggregate_P_Multidim_Root_Aggregate, Mmz_Bare_Base_Id_Base_Id_P_Env_Elements_Baseid, Mmz_Bare_Base_Id_Base_Id_P_Scope, Mmz_Bare_Base_Subp_Spec_Base_Subp_Spec_P_Get_Primitive_Subp_Tagged_Type, Mmz_Bare_Base_Subp_Spec_Base_Subp_Spec_P_Get_Primitive_Subp_Types, Mmz_Bare_Base_Type_Decl_Base_Type_Decl_P_Anonymous_Access_Type, Mmz_Bare_Base_Type_Decl_Base_Type_Decl_P_Classwide_Type_Node, Mmz_Bare_Base_Type_Decl_Base_Type_Decl_P_Dottable_Subps, Mmz_Bare_Base_Type_Decl_Base_Type_Decl_P_Find_Base_Type_Rebindings, Mmz_Bare_Base_Type_Decl_Base_Type_Decl_P_Is_Iterator_Type, Mmz_Bare_Base_Type_Decl_Base_Type_Decl_P_Next_Part, Mmz_Bare_Base_Type_Decl_Dispatcher_Base_Type_Decl_P_Previous_Part, Mmz_Bare_Base_Type_Decl_Dispatcher_Base_Type_Decl_P_Primitives_Env, Mmz_Bare_Base_Type_Decl_Base_Type_Decl_P_Private_Completion, Mmz_Bare_Base_Type_Decl_Base_Type_Decl_P_Scalar_Base_Subtype_Node, Mmz_Bare_Basic_Decl_Basic_Decl_P_Base_Subp_Declarations, Mmz_Bare_Basic_Decl_Basic_Decl_P_Canonical_Part, Mmz_Bare_Basic_Decl_Basic_Decl_P_Immediate_Declarative_Region, Mmz_Bare_Basic_Decl_Basic_Decl_P_Is_Ghost_Code, Mmz_Bare_Body_Node_Body_Node_P_Previous_Part, Mmz_Bare_Classwide_Type_Decl_Classwide_Type_Decl_P_Previous_Part, Mmz_Bare_Compilation_Unit_Compilation_Unit_P_Imported_Units, Mmz_Bare_Compilation_Unit_Compilation_Unit_P_Unit_Dependencies, Mmz_Bare_Compilation_Unit_Compilation_Unit_P_Withed_Units, Mmz_Bare_Declarative_Part_Declarative_Part_P_Types_With_Models, Mmz_Bare_Defining_Name_Defining_Name_P_Basic_Decl, Mmz_Bare_Defining_Name_Defining_Name_P_Is_Derivable_Equal, Mmz_Bare_Defining_Name_Defining_Name_P_Is_Potential_Reference, Mmz_Bare_End_Name_End_Name_P_Basic_Decl, Mmz_Bare_Enum_Literal_Decl_Enum_Literal_Decl_P_Subp_Decl_Spec, Mmz_Bare_Enum_Literal_Decl_Enum_Literal_Decl_P_Synth_Type_Expr, Mmz_Bare_For_Loop_Spec_For_Loop_Spec_P_Iter_Type, Mmz_Bare_For_Loop_Var_Decl_For_Loop_Var_Decl_P_Expr_Type, Mmz_Bare_Generic_Instantiation_Generic_Instantiation_P_Instantiation_Bindings_Internal, Mmz_Bare_Name_Name_P_Is_Prefix, Mmz_Bare_Name_Name_P_Is_Suffix, Mmz_Bare_Name_Name_P_Name_Designated_Type_Env, Mmz_Bare_Type_Decl_Type_Decl_P_Compute_Primitives_Env); type Mmz_Key_Kind is (Mmz_Bare_Ada_Node, Mmz_Bare_Anonymous_Expr_Decl, Mmz_Bare_Base_Aggregate, Mmz_Bare_Base_Id, Mmz_Bare_Base_Subp_Spec, Mmz_Bare_Base_Type_Decl, Mmz_Bare_Basic_Decl, Mmz_Bare_Body_Node, Mmz_Bare_Classwide_Type_Decl, Mmz_Bare_Compilation_Unit, Mmz_Bare_Declarative_Part, Mmz_Bare_Defining_Name, Mmz_Bare_End_Name, Mmz_Bare_Enum_Literal_Decl, Mmz_Bare_For_Loop_Spec, Mmz_Bare_For_Loop_Var_Decl, Mmz_Bare_Generic_Instantiation, Mmz_Bare_Name, Mmz_Bare_Type_Decl, Mmz_Boolean, Mmz_Env_Rebindings, Mmz_Integer, Mmz_Internal_Entity_Base_Type_Decl_Array_Access, Mmz_Internal_Entity_Info, Mmz_Internal_Metadata, Mmz_Lexical_Env, Mmz_Symbol_Type); type Mmz_Value_Kind is (Mmz_Evaluating, Mmz_Property_Error , Mmz_Bare_Classwide_Type_Decl, Mmz_Bare_Discrete_Base_Subtype_Decl, Mmz_Boolean, Mmz_Env_Rebindings, Mmz_Internal_Entity, Mmz_Internal_Entity_Array_Access, Mmz_Internal_Entity_Base_Formal_Param_Decl_Array_Access, Mmz_Internal_Entity_Base_Subp_Spec, Mmz_Internal_Entity_Base_Type_Decl, Mmz_Internal_Entity_Base_Type_Decl_Array_Access, Mmz_Internal_Entity_Basic_Decl, Mmz_Internal_Entity_Basic_Decl_Array_Access, Mmz_Internal_Entity_Compilation_Unit_Array_Access, Mmz_Internal_Entity_Enum_Lit_Synth_Type_Expr, Mmz_Internal_Entity_Type_Expr, Mmz_Internal_Inner_Env_Assoc_Array_Access, Mmz_Internal_Multidim_Aggregate_Info, Mmz_Internal_Param_Match_Array_Access, Mmz_Lexical_Env); type Mmz_Key_Item (Kind : Mmz_Key_Kind := Mmz_Bare_Ada_Node) is record case Kind is when Mmz_Bare_Ada_Node => As_Bare_Ada_Node : Bare_Ada_Node; when Mmz_Bare_Anonymous_Expr_Decl => As_Bare_Anonymous_Expr_Decl : Bare_Anonymous_Expr_Decl; when Mmz_Bare_Base_Aggregate => As_Bare_Base_Aggregate : Bare_Base_Aggregate; when Mmz_Bare_Base_Id => As_Bare_Base_Id : Bare_Base_Id; when Mmz_Bare_Base_Subp_Spec => As_Bare_Base_Subp_Spec : Bare_Base_Subp_Spec; when Mmz_Bare_Base_Type_Decl => As_Bare_Base_Type_Decl : Bare_Base_Type_Decl; when Mmz_Bare_Basic_Decl => As_Bare_Basic_Decl : Bare_Basic_Decl; when Mmz_Bare_Body_Node => As_Bare_Body_Node : Bare_Body_Node; when Mmz_Bare_Classwide_Type_Decl => As_Bare_Classwide_Type_Decl : Bare_Classwide_Type_Decl; when Mmz_Bare_Compilation_Unit => As_Bare_Compilation_Unit : Bare_Compilation_Unit; when Mmz_Bare_Declarative_Part => As_Bare_Declarative_Part : Bare_Declarative_Part; when Mmz_Bare_Defining_Name => As_Bare_Defining_Name : Bare_Defining_Name; when Mmz_Bare_End_Name => As_Bare_End_Name : Bare_End_Name; when Mmz_Bare_Enum_Literal_Decl => As_Bare_Enum_Literal_Decl : Bare_Enum_Literal_Decl; when Mmz_Bare_For_Loop_Spec => As_Bare_For_Loop_Spec : Bare_For_Loop_Spec; when Mmz_Bare_For_Loop_Var_Decl => As_Bare_For_Loop_Var_Decl : Bare_For_Loop_Var_Decl; when Mmz_Bare_Generic_Instantiation => As_Bare_Generic_Instantiation : Bare_Generic_Instantiation; when Mmz_Bare_Name => As_Bare_Name : Bare_Name; when Mmz_Bare_Type_Decl => As_Bare_Type_Decl : Bare_Type_Decl; when Mmz_Boolean => As_Boolean : Boolean; when Mmz_Env_Rebindings => As_Env_Rebindings : Env_Rebindings; when Mmz_Integer => As_Integer : Integer; when Mmz_Internal_Entity_Base_Type_Decl_Array_Access => As_Internal_Entity_Base_Type_Decl_Array_Access : Internal_Entity_Base_Type_Decl_Array_Access; when Mmz_Internal_Entity_Info => As_Internal_Entity_Info : Internal_Entity_Info; when Mmz_Internal_Metadata => As_Internal_Metadata : Internal_Metadata; when Mmz_Lexical_Env => As_Lexical_Env : Lexical_Env; when Mmz_Symbol_Type => As_Symbol_Type : Symbol_Type; end case; end record; type Mmz_Key_Array is array (Positive range <>) of Mmz_Key_Item; type Mmz_Key_Array_Access is access all Mmz_Key_Array; type Mmz_Key is record Property : Mmz_Property; Items : Mmz_Key_Array_Access; end record; type Mmz_Value (Kind : Mmz_Value_Kind := Mmz_Evaluating) is record case Kind is when Mmz_Evaluating | Mmz_Property_Error => null; when Mmz_Bare_Classwide_Type_Decl => As_Bare_Classwide_Type_Decl : Bare_Classwide_Type_Decl; when Mmz_Bare_Discrete_Base_Subtype_Decl => As_Bare_Discrete_Base_Subtype_Decl : Bare_Discrete_Base_Subtype_Decl; when Mmz_Boolean => As_Boolean : Boolean; when Mmz_Env_Rebindings => As_Env_Rebindings : Env_Rebindings; when Mmz_Internal_Entity => As_Internal_Entity : Internal_Entity; when Mmz_Internal_Entity_Array_Access => As_Internal_Entity_Array_Access : Internal_Entity_Array_Access; when Mmz_Internal_Entity_Base_Formal_Param_Decl_Array_Access => As_Internal_Entity_Base_Formal_Param_Decl_Array_Access : Internal_Entity_Base_Formal_Param_Decl_Array_Access; when Mmz_Internal_Entity_Base_Subp_Spec => As_Internal_Entity_Base_Subp_Spec : Internal_Entity_Base_Subp_Spec; when Mmz_Internal_Entity_Base_Type_Decl => As_Internal_Entity_Base_Type_Decl : Internal_Entity_Base_Type_Decl; when Mmz_Internal_Entity_Base_Type_Decl_Array_Access => As_Internal_Entity_Base_Type_Decl_Array_Access : Internal_Entity_Base_Type_Decl_Array_Access; when Mmz_Internal_Entity_Basic_Decl => As_Internal_Entity_Basic_Decl : Internal_Entity_Basic_Decl; when Mmz_Internal_Entity_Basic_Decl_Array_Access => As_Internal_Entity_Basic_Decl_Array_Access : Internal_Entity_Basic_Decl_Array_Access; when Mmz_Internal_Entity_Compilation_Unit_Array_Access => As_Internal_Entity_Compilation_Unit_Array_Access : Internal_Entity_Compilation_Unit_Array_Access; when Mmz_Internal_Entity_Enum_Lit_Synth_Type_Expr => As_Internal_Entity_Enum_Lit_Synth_Type_Expr : Internal_Entity_Enum_Lit_Synth_Type_Expr; when Mmz_Internal_Entity_Type_Expr => As_Internal_Entity_Type_Expr : Internal_Entity_Type_Expr; when Mmz_Internal_Inner_Env_Assoc_Array_Access => As_Internal_Inner_Env_Assoc_Array_Access : Internal_Inner_Env_Assoc_Array_Access; when Mmz_Internal_Multidim_Aggregate_Info => As_Internal_Multidim_Aggregate_Info : Internal_Multidim_Aggregate_Info; when Mmz_Internal_Param_Match_Array_Access => As_Internal_Param_Match_Array_Access : Internal_Param_Match_Array_Access; when Mmz_Lexical_Env => As_Lexical_Env : Lexical_Env; end case; end record; function Hash (Key : Mmz_Key) return Hash_Type; function Equivalent (L, R : Mmz_Key) return Boolean; package Memoization_Maps is new Ada.Containers.Hashed_Maps (Mmz_Key, Mmz_Value, Hash, Equivalent_Keys => Equivalent); procedure Destroy (Map : in out Memoization_Maps.Map); -- Free all resources stored in a memoization map. This includes destroying -- ref-count shares the map owns. type Memoization_Handle is record Key : Mmz_Key; -- Key for the memoization Cur : Memoization_Maps.Cursor; -- If the unit memoization table has an entry for Key, this holds a cursor -- to it. Cache_Version : Version_Number := 0; -- Version of the unit memoization table at the time Key/Cur were created. -- When using this record, if the version has changed, both Key and Cur are -- invalid and must be recomputed. end record; -- Wrapper for memoization state, to be used in memoized properties. -- Please use high-level functions below instead of accessing fields -- directly. function Find_Memoized_Value (Unit : Internal_Unit; Handle : out Memoization_Handle; Value : out Mmz_Value; Create_Key : access function return Mmz_Key) return Boolean; -- Initialize Handle and look for a memoization entry in Unit.Memoization_Map -- that corresponds to the key in Handle/Create_Key. If one is found, put it -- in Value and return True. Create such an entry and return False otherwise. procedure Add_Memoized_Value (Unit : Internal_Unit; Handle : in out Memoization_Handle; Value : Mmz_Value; Stored : out Boolean); -- Insert the Handle.Key/Value entry in Unit.Memoization_Map (replacing the -- previous entry, if present). Set Stored to whether the key/value entry was -- actually stored: it's not when Handle is stale, i.e. caches where reset -- since Handle was created). ----------------------------- -- Miscellanous operations -- ----------------------------- type Destroy_Procedure is access procedure (Object : System.Address); type Destroyable_Type is record Object : System.Address; -- Object to destroy Destroy : Destroy_Procedure; -- Procedure to destroy Object end record; -- Simple holder to associate an object to destroy and the procedure to -- perform the destruction. package Destroyable_Vectors is new Langkit_Support.Vectors (Destroyable_Type); package Analysis_Unit_Sets is new Langkit_Support.Cheap_Sets (Internal_Unit, null); package Units_Maps is new Ada.Containers.Hashed_Maps (Key_Type => GNATCOLL.VFS.Virtual_File, Element_Type => Internal_Unit, Hash => GNATCOLL.VFS.Full_Name_Hash, Equivalent_Keys => GNATCOLL.VFS."="); function Token_Data (Unit : Internal_Unit) return Token_Data_Handler_Access; function Lookup_Symbol (Context : Internal_Context; Symbol : Text_Type) return Symbol_Type; -- Return the given symbol text as a symbol for this context. Raise an -- Invalid_Symbol_Error if it is invalid. function Create_Special_Unit (Context : Internal_Context; Normalized_Filename : GNATCOLL.VFS.Virtual_File; Charset : String; Rule : Grammar_Rule) return Internal_Unit; -- Create a new special analysis unit, i.e. a unit that is not registered -- in Context's unit map. function Templates_Unit (Context : Internal_Context) return Internal_Unit; -- Return the analysis unit to be used to parse tree rewriting templates. -- This creates it if it does not exists yet. procedure Set_Rule (Unit : Internal_Unit; Rule : Grammar_Rule); package Virtual_File_Maps is new Ada.Containers.Hashed_Maps (Key_Type => Unbounded_String, Element_Type => GNATCOLL.VFS.Virtual_File, Equivalent_Keys => "=", "=" => GNATCOLL.VFS."=", Hash => Ada.Strings.Unbounded.Hash); function Normalized_Unit_Filename (Context : Internal_Context; Filename : String) return GNATCOLL.VFS.Virtual_File; -- Try to return a canonical filename. This is used to have an -- as-unique-as-possible analysis unit identifier. ------------------------------------ -- File reader internal interface -- ------------------------------------ type Internal_File_Reader is limited interface; type Internal_File_Reader_Access is access all Internal_File_Reader'Class; procedure Inc_Ref (Self : in out Internal_File_Reader) is abstract; -- Create an ownership share for this file reader. function Dec_Ref (Self : in out Internal_File_Reader) return Boolean is abstract; -- Release an ownership share for this file reader. This destroys the file -- reader if there are no shares left. -- -- Return whether there are no ownership shares left. procedure Read (Self : Internal_File_Reader; Filename : String; Charset : String; Read_BOM : Boolean; Contents : out Decoded_File_Contents; Diagnostics : in out Diagnostics_Vectors.Vector) is abstract; -- Read the content of the source at the given filename, decoding it using -- the given charset and decoding the byte order mark if ``Read_BOM`` is -- true. -- -- If there is an error during this process, append an error message to -- Diagnostics. In that case, Contents is considered uninitialized. -- -- Otherwise, allocate a Text_Type buffer, fill it and initialize Contents -- to refer to it. procedure Dec_Ref (File_Reader : in out Internal_File_Reader_Access); -- Call Dec_Ref on File_Reader.all and, if the ref-count reaches 0, -- dealloacte it. -------------------------------------- -- Unit provider internal interface -- -------------------------------------- type Internal_Unit_Provider is limited interface; type Internal_Unit_Provider_Access is access all Internal_Unit_Provider'Class; procedure Inc_Ref (Provider : in out Internal_Unit_Provider) is abstract; -- Create an ownership share for this unit provider. function Dec_Ref (Provider : in out Internal_Unit_Provider) return Boolean is abstract; -- Release an ownership share for this unit provider. This destroys the -- unit provider if there are no shares left. -- -- Return whether there are no ownership shares left. function Get_Unit_Filename (Provider : Internal_Unit_Provider; Name : Text_Type; Kind : Analysis_Unit_Kind) return String is abstract; -- Return the filename corresponding to the given unit name/unit kind. -- Raise a ``Property_Error`` if the given unit name is not valid. function Get_Unit (Provider : Internal_Unit_Provider; Context : Internal_Context; Name : Text_Type; Kind : Analysis_Unit_Kind; Charset : String := ""; Reparse : Boolean := False) return Internal_Unit is abstract; -- Fetch and return the analysis unit referenced by the given unit name. -- Raise a ``Property_Error`` if the given unit name is not valid. procedure Dec_Ref (Provider : in out Internal_Unit_Provider_Access); -------------------------------------- -- Event handler internal interface -- -------------------------------------- type Internal_Event_Handler is limited interface; type Internal_Event_Handler_Access is access all Internal_Event_Handler'Class; procedure Inc_Ref (Self : in out Internal_Event_Handler) is abstract; -- Create an ownership share for this event handler. function Dec_Ref (Self : in out Internal_Event_Handler) return Boolean is abstract; -- Release an ownership share for this event handler. This destroys the -- event handler if there are no shares left. -- -- Return whether there are no ownership shares left. procedure Unit_Requested_Callback (Self : in out Internal_Event_Handler; Context : Internal_Context; Name : Text_Type; From : Internal_Unit; Found : Boolean; Is_Not_Found_Error : Boolean) is null; procedure Unit_Parsed_Callback (Self : in out Internal_Event_Handler; Context : Internal_Context; Unit : Internal_Unit; Reparsed : Boolean) is null; procedure Dec_Ref (Self : in out Internal_Event_Handler_Access); --------------------------------- -- Analysis context definition -- --------------------------------- type Analysis_Context_Type is limited record -- Start of ABI area. In order to perform fast checks from foreign -- languages, we maintain minimal ABI for analysis context: this allows -- us in language bindings to directly peek in this record rather than -- rely on (slow) calls to getters. Serial_Number : Version_Number; -- Serial number that is incremented each time this context allocation -- is released. -- End of ABI area Ref_Count : Natural; Units : Units_Maps.Map; -- Collection of analysis units loaded in this context Filenames : Virtual_File_Maps.Map; -- Cache for GNATCOLL.VFS.Virtual_File we create for String filenames. -- Re-using older Virtual_File values is useful as this reduces the need -- to normalize paths, which is a costly operation. Symbols : Symbol_Table; -- Symbol table used in this whole context Charset : Unbounded_String; -- Default charset to use in analysis units Tab_Stop : aliased Positive; -- Tab stop for the lexer to correctly interpret ASCII.HT input -- characters. With_Trivia : Boolean; -- Whether Trivia nodes were parsed and included in analysis units Root_Scope : Lexical_Env; -- The lexical scope that is shared amongst every compilation unit. Used -- to resolve cross file references. Named_Envs : NED_Maps.Map; -- Map env names to the corresponding named environment descriptors File_Reader : Internal_File_Reader_Access; -- Object to override the reading and decoding of source files Event_Handler : Internal_Event_Handler_Access; -- Object to provide event callbacks Unit_Provider : Internal_Unit_Provider_Access; -- Object to translate unit names to file names Parser : Parser_Type; -- Main parser type. TODO: If we want to parse in several tasks, we'll -- replace that by an array of parsers. Discard_Errors_In_Populate_Lexical_Env : Boolean; -- See the eponym procedure In_Populate_Lexical_Env : Boolean; -- Flag to tell whether we are running the Populate_Lexical_Env pass. -- When it's on, we must not use the memoization map as the hash of -- lexical environment changes when their content changes. Logic_Resolution_Timeout : Natural; -- If zero, inefficient. Otherwise, designates the maximal number of -- steps allowed in the resolution of logic equations before -- interrupting the resolution because of timeout. See the -- Set_Logic_Resolution_Timeout procedure. Cache_Version : Version_Number; -- Version number used to invalidate memoization caches in a lazy -- fashion. If an analysis unit's version number is strictly inferior to -- this, its memoization map should be cleared. Reparse_Cache_Version : Version_Number; -- Version number used to invalidate referenced envs caches. It is -- incremented only when a unit is reparsed in the context. Rewriting_Handle : Rewriting_Handle_Pointer := No_Rewriting_Handle_Pointer; -- Rewriting handle for this context's current rewriting session. -- No_Rewriting_Handle_Pointer if there is no such session currently. Templates_Unit : Internal_Unit := No_Analysis_Unit; -- Special analysis unit used only as a containing unit to parse -- templates in the context of tree rewriting. Current_Call_Depth : Natural := 0; -- Number of recursive calls currently running. This counter is -- used as a mitigation against infinite recursions. The calls -- considered here include: -- -- * parsing functions; -- * properties calls. Call_Depth_High_Water_Mark : Natural := 0; -- Maximum number of recursive calls seen in this context so far Max_Call_Depth : Natural := 0; -- Maximum number of recursive calls allowed Available_Rebindings : Env_Rebindings_Vectors.Vector; -- List of allocated-but-unused Env_Rebinding_Type records. -- -- Each rebinding we allocate for an analysis context is deallocated -- only when the whole context is released, so when this list is not -- empty, we pick one of its element instead of allocating another -- rebinding (see the Acquire_Rebindings and Release_Rebindings -- subprograms). -- -- Thanks to this mechanism, we have a very simple way to implement -- rebindings validity checking for nodes: once we have established that -- the node reference is valid regarding its context, we know that the -- rebindings pointer is valid, and thus we can just check the rebinding -- version number. end record; package Node_To_Named_Env_Maps is new Ada.Containers.Hashed_Maps (Key_Type => Bare_Ada_Node, Element_Type => Named_Env_Descriptor_Access, Hash => Hash, Equivalent_Keys => "="); type Analysis_Unit_Type is limited record -- Start of ABI area. In order to perform fast checks from foreign -- languages, we maintain minimal ABI for analysis context: this allows -- us in language bindings to directly peek in this record rather than -- rely on (slow) calls to getters. Unit_Version : Version_Number := 0; -- Version for this particular unit. This will be incremented every time -- a reparse occurs. -- End of ABI area Context : Internal_Context; -- The owning context for this analysis unit Is_Internal : Boolean; -- Whether this unit is internal. -- -- The use of file readers for parsing is disabled for internal units, -- which allows in-memory parsing for them even when a file reader is -- active. -- -- It is illegal for users of public APIs to reparse an internal unit. -- Setting this flag allows generated libraries to create internal units -- to implement language internals and forbid library users to mess with -- this unit. AST_Root : Bare_Ada_Node; Filename : GNATCOLL.VFS.Virtual_File; -- The originating name for this analysis unit. This should be set even -- if the analysis unit was parsed from a buffer. Charset : Unbounded_String; -- The parsing charset for this analysis unit, as a string. If the -- charset used actually came from a byte order mark, this is -- nevertheless set to the one the user requested. TDH : aliased Token_Data_Handler; -- The token data handler that handles all token data during parsing and -- owns it afterwards. Diagnostics : Diagnostics_Vectors.Vector; -- The list of diagnostics produced for this analysis unit Rule : Grammar_Rule; -- The grammar rule used to parse this unit AST_Mem_Pool : Bump_Ptr_Pool; -- This memory pool shall only be used for AST parsing. Stored here -- because it is more convenient, but one shall not allocate from it. Destroyables : Destroyable_Vectors.Vector; -- Collection of objects to destroy when destroying the analysis unit Referenced_Units : Analysis_Unit_Sets.Set; -- Units that are referenced from this one. Useful for -- visibility/computation of the reference graph. Is_Env_Populated : Boolean; -- Whether Populate_Lexical_Env was called on this unit. Used not to -- populate multiple times the same unit and hence avoid infinite -- populate recursions for circular dependencies. Exiled_Entries : Exiled_Entry_Vectors.Vector; -- Lexical env population for this unit may have added AST nodes it owns -- to the lexical environments that belong to other units ("exiled" -- entries). For each of these AST nodes, this vector contains an entry -- that records the target environment, the AST node and the -- corresponding symbol. Foreign_Nodes : Foreign_Node_Entry_Vectors.Vector; -- This unit owns a set of lexical environments. This vector contains -- the list of AST nodes that were added to these environments and that -- come from other units. Exiled_Entries_In_NED : Exiled_Entry_In_NED_Vectors.Vector; -- Like Exiled_Entries, but for symbol/node associations exclusively -- handled by the named environments mechanism. -- -- This list allows efficient removal of these entries from -- Named_Env_Descriptor.Foreign_Nodes components when unloading this -- unit. Exiled_Envs : Exiled_Env_Vectors.Vector; -- List of lexical environments created in this unit and whose parent is -- a named environment. -- -- This list allows efficient removal for these envs from -- Named_Env_Descriptor.Foreign_Envs components when unloading this -- unit. Named_Envs : Named_Env_Vectors.Vector; -- List of named environment created in this unit. -- -- This list allows efficient removal for these envs from the -- Named_Env_Descriptor.Envs components when unloading this unit. Nodes_With_Foreign_Env : Node_To_Named_Env_Maps.Map; -- Mapping from a node to its Self_Env's named env descriptor, for each -- node in this unit whose Self_Env is a named environment. -- -- This mapping allows efficient removal for these nodes from the -- Named_Env_Descriptor.Nodes_With_Foreign_Env components when unloading -- this unit. Rebindings : aliased Env_Rebindings_Vectors.Vector; -- List of rebindings for which Old_Env and/or New_Env belong to this -- unit. When this unit gets destroyed or reparsed, these rebindings -- need to be destroyed too (see Destroy_Rebindings). Memoization_Map : Memoization_Maps.Map; -- Mapping of arguments tuple to property result for memoization Cache_Version : Version_Number := 0; -- See the eponym field in Analysis_Context_Type Nodes_Nameres : Nameres_Maps.Map; end record; procedure Free is new Ada.Unchecked_Deallocation (Analysis_Context_Type, Internal_Context); procedure Free is new Ada.Unchecked_Deallocation (Analysis_Unit_Type, Internal_Unit); type Reparsed_Unit is record TDH : Token_Data_Handler; Diagnostics : Diagnostics_Vectors.Vector; AST_Mem_Pool : Bump_Ptr_Pool; AST_Root : Bare_Ada_Node; end record; -- Holder for fields affected by an analysis unit reparse. This makes it -- possible to separate the "reparsing" and the "replace" steps. procedure Destroy (Reparsed : in out Reparsed_Unit); -- Free all resources in Reparsed function Basename (Filename : String) return String; -- Return the base filename for String ---------------------------------------------------- -- Implementation for analysis context primitives -- ---------------------------------------------------- function Create_Context (Charset : String; File_Reader : Internal_File_Reader_Access; Unit_Provider : Internal_Unit_Provider_Access; Event_Handler : Internal_Event_Handler_Access; With_Trivia : Boolean; Tab_Stop : Positive; Max_Call_Depth : Natural := 1000) return Internal_Context; -- Implementation for Analysis.Create_Context function Create_Unit (Context : Internal_Context; Normalized_Filename : GNATCOLL.VFS.Virtual_File; Charset : String; Rule : Grammar_Rule) return Internal_Unit with Pre => not Has_Unit (Context, +Normalized_Filename.Full_Name); -- Create a new analysis unit and register it in Context function Get_Unit (Context : Internal_Context; Filename, Charset : String; Reparse : Boolean; Input : Internal_Lexer_Input; Rule : Grammar_Rule; Is_Internal : Boolean := False) return Internal_Unit; -- Helper for Get_From_File and Get_From_Buffer. Return the resulting -- analysis unit. -- -- If ``Is_Internal`` is True, allow parsing from buffer even if -- ``Context`` has a file reader, and forbid later calls to -- Get_From_File/Get_From_Buffer/Reparse on the returned unit. function Has_Unit (Context : Internal_Context; Unit_Filename : String) return Boolean; -- Implementation for Analysis.Has_Unit function Get_From_File (Context : Internal_Context; Filename : String; Charset : String; Reparse : Boolean; Rule : Grammar_Rule) return Internal_Unit; -- Implementation for Analysis.Get_From_File function Get_From_Buffer (Context : Internal_Context; Filename : String; Charset : String; Buffer : String; Rule : Grammar_Rule) return Internal_Unit; -- Implementation for Analysis.Get_From_Buffer function Get_With_Error (Context : Internal_Context; Filename : String; Error : Text_Type; Charset : String; Rule : Grammar_Rule) return Internal_Unit; -- Implementation for Analysis.Get_With_Error function Get_From_Provider (Context : Internal_Context; Name : Text_Type; Kind : Analysis_Unit_Kind; Charset : String; Reparse : Boolean) return Internal_Unit; -- Implementation for Analysis.Get_From_Provider function Unit_Provider (Context : Internal_Context) return Internal_Unit_Provider_Access; -- Implementation for Analysis.Unit_Provider function Hash (Context : Internal_Context) return Hash_Type; -- Implementation for Analysis.Hash function Has_With_Trivia (Context : Internal_Context) return Boolean; -- Implementation for Analysis.Has_With_Trivia procedure Discard_Errors_In_Populate_Lexical_Env (Context : Internal_Context; Discard : Boolean); -- Implementation for Analysis.Discard_Errors_In_Populate_Lexical_Env procedure Set_Logic_Resolution_Timeout (Context : Internal_Context; Timeout : Natural); -- Implementation for Analysis.Set_Logic_Resolution_Timeout function Has_Rewriting_Handle (Context : Internal_Context) return Boolean; -- Implementation for Analysis.Has_Rewriting_Handle procedure Inc_Ref (Context : Internal_Context); -- Increment the ref-count of Context. This does nothing if Context is -- null. procedure Dec_Ref (Context : in out Internal_Context); -- Decrement the ref-count of Context, destroying it if the ref-count -- reaches zero. This does nothing if Context is null. procedure Destroy (Context : in out Internal_Context) with Pre => not Has_Rewriting_Handle (Context); -- Free all resources allocated for Context ------------------------------------------------- -- Implementation for analysis unit primitives -- ------------------------------------------------- function Context (Unit : Internal_Unit) return Internal_Context; -- Implementation for Analysis.Context function Hash (Unit : Internal_Unit) return Hash_Type; -- Implementation for Analysis.Hash procedure Reparse (Unit : Internal_Unit; Charset : String); -- Implementation for Analysis.Reparse procedure Reparse (Unit : Internal_Unit; Charset : String; Buffer : String); -- Implementation for Analysis.Reparse procedure Populate_Lexical_Env (Unit : Internal_Unit); -- Implementation for Analysis.Populate_Lexical_Env function Get_Filename (Unit : Internal_Unit) return String; -- Implementation for Analysis.Get_Filename function Get_Charset (Unit : Internal_Unit) return String; -- Implementation for Analysis.Get_Charset function Has_Diagnostics (Unit : Internal_Unit) return Boolean; -- Implementation for Analysis.Has_Diagnostics function Diagnostics (Unit : Internal_Unit) return Diagnostics_Array; -- Implementation for Analysis.Diagnostics function Format_GNU_Diagnostic (Unit : Internal_Unit; D : Diagnostic) return String; -- Implementation for Analysis.Format_GNU_Diagnostic function Root (Unit : Internal_Unit) return Bare_Ada_Node; -- Implementation for Analysis.Root function First_Token (Unit : Internal_Unit) return Token_Reference; -- Implementation for Analysis.First_Token function Last_Token (Unit : Internal_Unit) return Token_Reference; -- Implementation for Analysis.Last_Token function Token_Count (Unit : Internal_Unit) return Natural; -- Implementation for Analysis.Token_Count function Trivia_Count (Unit : Internal_Unit) return Natural; -- Implementation for Analysis.Trivia_Count function Text (Unit : Internal_Unit) return Text_Type; -- Implementation for Analysis.Text function Lookup_Token (Unit : Internal_Unit; Sloc : Source_Location) return Token_Reference; -- Implementation for Analysis.Lookup_Token procedure Dump_Lexical_Env (Unit : Internal_Unit); -- Implementation for Analysis.Dump_Lexical_Env procedure Print (Unit : Internal_Unit; Show_Slocs : Boolean); -- Implementation for Analysis.Print procedure PP_Trivia (Unit : Internal_Unit); -- Implementation for Analysis.PP_Trivia procedure Destroy (Unit : in out Internal_Unit); -- TODO??? function Basename (Unit : Internal_Unit) return String; -- Return the base filename for Unit procedure Invalidate_Caches (Context : Internal_Context; Invalidate_Envs : Boolean); -- Invalidate memoization caches. If Invalidate_Envs is true, also -- invalidate referenced envs caches. procedure Reset_Caches (Unit : Internal_Unit); -- Destroy Unit's memoization cache. This resets Unit's version number to -- Unit.Context.Cache_Version. procedure Reference_Unit (From, Referenced : Internal_Unit); -- Set the Referenced unit as being referenced from the From unit. This is -- useful for visibility purposes, and is mainly meant to be used in the -- env hooks. function Get_Line (Unit : Internal_Unit; Line_Number : Positive) return Text_Type; -- Return the line of text at line number ``Line_Number`` function Is_Referenced_From (Self, Unit : Internal_Unit) return Boolean; procedure Do_Parsing (Unit : Internal_Unit; Input : Internal_Lexer_Input; Result : out Reparsed_Unit); -- Parse text for Unit using Input and store the result in Result. This -- leaves Unit unchanged. procedure Update_After_Reparse (Unit : Internal_Unit; Reparsed : in out Reparsed_Unit); -- Update Unit's AST from Reparsed and update stale lexical environment -- data after the reparsing of Unit. procedure Destroy_Unit_Destroyables (Unit : Internal_Unit); -- Destroy all destroyables objects in Unit and clear this list in Unit procedure Remove_Exiled_Entries (Unit : Internal_Unit); -- Remove lexical environment entries referencing nodes in Unit from -- lexical environments Unit does not own. Remove foreign node entries in -- foreign units that correspond to these exiled entries. Clear -- Unit.Exiled_Entries afterwards. procedure Remove_Named_Envs (Unit : Internal_Unit; Named_Envs_Needing_Update : in out NED_Maps.Map); -- Remove envs that belong to Unit from all relevant NEDs, and keep track -- in Named_Env_Needing_Update of the env names whose env with precedence -- must change because of this. procedure Extract_Foreign_Nodes (Unit : Internal_Unit; Foreign_Nodes : in out Bare_Ada_Node_Vectors.Vector); -- Collect in Foreign_Nodes all foreign nodes in Unit's lexical -- environments (i.e. lexical env entries that refer to nodes which belongs -- to other analysis units). Remove the exiled entries in foreign units -- that correspond to these foreign nodes. Clear Unit.Foreign_Nodes -- afterwards. procedure Reroot_Foreign_Node (Node : Bare_Ada_Node); -- Re-create the lexical env entry for Node. This is to be used in -- Flush_Populate_Lexical_Env_Queue, after reparsing removed the target -- lexical environment. procedure Destroy_Rebindings (Rebindings : access Env_Rebindings_Vectors.Vector); -- Destroy all rebindings in Rebindings, plus their child rebindings. Note -- that children can belong to various analysis units, so this takes care -- of removing the destroyed rebindings from each concerned analysis unit's -- Rebindings vector. -- -- This require an access parameter in order to avoid aliasing issues in -- the body. function Get_Rewriting_Handle (Context : Internal_Context) return Rewriting_Handle_Pointer; -- Return the Rewriting_Handle component of Context procedure Set_Rewriting_Handle (Context : Internal_Context; Handle : Rewriting_Handle_Pointer); -- Set the Rewriting_Handle component of Context type Node_Safety_Net is record Context : Internal_Context; Context_Serial : Version_Number; -- Analysis context and serial number at the time this safety net was -- produced. Unit : Internal_Unit; Unit_Version : Version_Number; -- Analysis unit and unit version at the time this safety net was -- produced. Rebindings_Version : Version_Number; -- Version of the associated rebinding at the time this safety net was -- procuded. end record; -- Information to embed in public APIs, used to check before accessing data -- that the said-data is still valid. No_Node_Safety_Net : constant Node_Safety_Net := (null, 0, null, 0, 0); function String_To_Symbol (Context : Internal_Context; S : Character_Type_Array_Access) return Symbol_Type; -- Convert S into the corresponding symbol, raising a Property_Error if -- symbol canonicalization fails. If S is empty, just return null. function Solve_Wrapper (R : Relation; Context_Node : Bare_Ada_Node) return Boolean; -- Wrapper for Langkit_Support.Adalog.Solve; will handle setting the debug -- strings in the equation if in debug mode. generic type T (<>) is limited private; type T_Access is access all T; with procedure Destroy (Object : in out T_Access); procedure Register_Destroyable_Gen (Unit : Internal_Unit; Object : T_Access); -- Generic procedure to register an object so that it is automatically -- destroyed when Unit is destroyed. function New_Unit_String (Unit : Internal_Unit; Str : String) return String_Access; -- This function allocates a string whose lifetime will be associated with -- ``Unit``. private -- We only have a private part to defer the initialization of struct -- constants. This allows us to circumvent circularity problems between -- arrays and structs. No_Entity_Expr : constant Internal_Entity_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Aspect : constant Internal_Aspect := ( Exists => False, Node => No_Entity, Value => No_Entity_Expr ); No_Entity_Basic_Decl : constant Internal_Entity_Basic_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Completion_Item : constant Internal_Completion_Item := ( Decl => No_Entity_Basic_Decl, Is_Dot_Call => False, Is_Visible => False ); No_DesignatedEnv : constant Internal_DesignatedEnv := ( Kind => None, Env_Name => null, Direct_Env => Empty_Env ); No_Discrete_Range : constant Internal_Discrete_Range := ( Low_Bound => No_Entity_Expr, High_Bound => No_Entity_Expr ); No_Entity_Ada_List : constant Internal_Entity_Ada_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Ada_Node_List : constant Internal_Entity_Ada_Node_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Alternatives_List : constant Internal_Entity_Alternatives_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Name : constant Internal_Entity_Name := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Single_Tok_Node : constant Internal_Entity_Single_Tok_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Id : constant Internal_Entity_Base_Id := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Identifier : constant Internal_Entity_Identifier := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Discriminant_Values : constant Internal_Discriminant_Values := ( Discriminant => No_Entity_Identifier, Values => No_Entity_Alternatives_List ); No_Doc_Annotation : constant Internal_Doc_Annotation := ( Key => No_Character_Type_Array_Type, Value => No_Character_Type_Array_Type ); No_Entity_Abort_Node : constant Internal_Entity_Abort_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Abort_Absent : constant Internal_Entity_Abort_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Abort_Present : constant Internal_Entity_Abort_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Stmt : constant Internal_Entity_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Simple_Stmt : constant Internal_Entity_Simple_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Abort_Stmt : constant Internal_Entity_Abort_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Abstract_Node : constant Internal_Entity_Abstract_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Abstract_Absent : constant Internal_Entity_Abstract_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Basic_Subp_Decl : constant Internal_Entity_Basic_Subp_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Classic_Subp_Decl : constant Internal_Entity_Classic_Subp_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Formal_Subp_Decl : constant Internal_Entity_Formal_Subp_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Abstract_Formal_Subp_Decl : constant Internal_Entity_Abstract_Formal_Subp_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Abstract_Present : constant Internal_Entity_Abstract_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Abstract_State_Decl : constant Internal_Entity_Abstract_State_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Abstract_State_Decl_Expr : constant Internal_Entity_Abstract_State_Decl_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Abstract_State_Decl_List : constant Internal_Entity_Abstract_State_Decl_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Abstract_Subp_Decl : constant Internal_Entity_Abstract_Subp_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Composite_Stmt : constant Internal_Entity_Composite_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Accept_Stmt : constant Internal_Entity_Accept_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Accept_Stmt_With_Stmts : constant Internal_Entity_Accept_Stmt_With_Stmts := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Type_Def : constant Internal_Entity_Type_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Access_Def : constant Internal_Entity_Access_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Access_To_Subp_Def : constant Internal_Entity_Access_To_Subp_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Aggregate : constant Internal_Entity_Base_Aggregate := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Aggregate : constant Internal_Entity_Aggregate := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Basic_Assoc : constant Internal_Entity_Basic_Assoc := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Aggregate_Assoc : constant Internal_Entity_Aggregate_Assoc := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Aliased_Node : constant Internal_Entity_Aliased_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Aliased_Absent : constant Internal_Entity_Aliased_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Aliased_Present : constant Internal_Entity_Aliased_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_All_Node : constant Internal_Entity_All_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_All_Absent : constant Internal_Entity_All_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_All_Present : constant Internal_Entity_All_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Allocator : constant Internal_Entity_Allocator := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Anonymous_Expr_Decl : constant Internal_Entity_Anonymous_Expr_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Type_Expr : constant Internal_Entity_Type_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Anonymous_Type : constant Internal_Entity_Anonymous_Type := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Type_Access_Def : constant Internal_Entity_Base_Type_Access_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Anonymous_Type_Access_Def : constant Internal_Entity_Anonymous_Type_Access_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Type_Decl : constant Internal_Entity_Base_Type_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Type_Decl : constant Internal_Entity_Type_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Anonymous_Type_Decl : constant Internal_Entity_Anonymous_Type_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Array_Indices : constant Internal_Entity_Array_Indices := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Array_Type_Def : constant Internal_Entity_Array_Type_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Aspect_Assoc : constant Internal_Entity_Aspect_Assoc := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Aspect_Assoc_List : constant Internal_Entity_Aspect_Assoc_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Aspect_Clause : constant Internal_Entity_Aspect_Clause := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Aspect_Spec : constant Internal_Entity_Aspect_Spec := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Assign_Stmt : constant Internal_Entity_Assign_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Basic_Assoc_List : constant Internal_Entity_Basic_Assoc_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Assoc_List : constant Internal_Entity_Assoc_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_At_Clause : constant Internal_Entity_At_Clause := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Attribute_Def_Clause : constant Internal_Entity_Attribute_Def_Clause := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Attribute_Ref : constant Internal_Entity_Attribute_Ref := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Assoc : constant Internal_Entity_Base_Assoc := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Assoc_List : constant Internal_Entity_Base_Assoc_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Formal_Param_Decl : constant Internal_Entity_Base_Formal_Param_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Formal_Param_Holder : constant Internal_Entity_Base_Formal_Param_Holder := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Loop_Stmt : constant Internal_Entity_Base_Loop_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Package_Decl : constant Internal_Entity_Base_Package_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Record_Def : constant Internal_Entity_Base_Record_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Body_Node : constant Internal_Entity_Body_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Subp_Body : constant Internal_Entity_Base_Subp_Body := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Subp_Spec : constant Internal_Entity_Base_Subp_Spec := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Base_Subtype_Decl : constant Internal_Entity_Base_Subtype_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Basic_Decl_List : constant Internal_Entity_Basic_Decl_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Block_Stmt : constant Internal_Entity_Block_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Begin_Block : constant Internal_Entity_Begin_Block := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Bin_Op : constant Internal_Entity_Bin_Op := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Body_Stub : constant Internal_Entity_Body_Stub := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Box_Expr : constant Internal_Entity_Box_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Bracket_Aggregate : constant Internal_Entity_Bracket_Aggregate := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Delta_Aggregate : constant Internal_Entity_Delta_Aggregate := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Bracket_Delta_Aggregate : constant Internal_Entity_Bracket_Delta_Aggregate := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Call_Expr : constant Internal_Entity_Call_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Call_Stmt : constant Internal_Entity_Call_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Cond_Expr : constant Internal_Entity_Cond_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Case_Expr : constant Internal_Entity_Case_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Case_Expr_Alternative : constant Internal_Entity_Case_Expr_Alternative := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Case_Expr_Alternative_List : constant Internal_Entity_Case_Expr_Alternative_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Case_Stmt : constant Internal_Entity_Case_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Case_Stmt_Alternative : constant Internal_Entity_Case_Stmt_Alternative := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Case_Stmt_Alternative_List : constant Internal_Entity_Case_Stmt_Alternative_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Char_Literal : constant Internal_Entity_Char_Literal := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Classwide_Type_Decl : constant Internal_Entity_Classwide_Type_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Compilation_Unit : constant Internal_Entity_Compilation_Unit := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Compilation_Unit_List : constant Internal_Entity_Compilation_Unit_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Component_Clause : constant Internal_Entity_Component_Clause := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Component_Decl : constant Internal_Entity_Component_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Component_Def : constant Internal_Entity_Component_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Component_List : constant Internal_Entity_Component_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Concrete_Formal_Subp_Decl : constant Internal_Entity_Concrete_Formal_Subp_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Constant_Node : constant Internal_Entity_Constant_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Constant_Absent : constant Internal_Entity_Constant_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Constant_Present : constant Internal_Entity_Constant_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Constrained_Array_Indices : constant Internal_Entity_Constrained_Array_Indices := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Subtype_Indication : constant Internal_Entity_Subtype_Indication := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Constrained_Subtype_Indication : constant Internal_Entity_Constrained_Subtype_Indication := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Constraint : constant Internal_Entity_Constraint := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Constraint_List : constant Internal_Entity_Constraint_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Contract_Case_Assoc : constant Internal_Entity_Contract_Case_Assoc := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Contract_Case_Assoc_List : constant Internal_Entity_Contract_Case_Assoc_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Contract_Cases : constant Internal_Entity_Contract_Cases := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Real_Type_Def : constant Internal_Entity_Real_Type_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Decimal_Fixed_Point_Def : constant Internal_Entity_Decimal_Fixed_Point_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Decl_Block : constant Internal_Entity_Decl_Block := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Decl_Expr : constant Internal_Entity_Decl_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Decl_List : constant Internal_Entity_Decl_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Declarative_Part : constant Internal_Entity_Declarative_Part := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Defining_Name : constant Internal_Entity_Defining_Name := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Defining_Name_List : constant Internal_Entity_Defining_Name_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Delay_Stmt : constant Internal_Entity_Delay_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Delta_Constraint : constant Internal_Entity_Delta_Constraint := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Derived_Type_Def : constant Internal_Entity_Derived_Type_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Digits_Constraint : constant Internal_Entity_Digits_Constraint := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Discrete_Base_Subtype_Decl : constant Internal_Entity_Discrete_Base_Subtype_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Discrete_Subtype_Indication : constant Internal_Entity_Discrete_Subtype_Indication := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Discrete_Subtype_Name : constant Internal_Entity_Discrete_Subtype_Name := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Discriminant_Assoc : constant Internal_Entity_Discriminant_Assoc := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Identifier_List : constant Internal_Entity_Identifier_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Discriminant_Choice_List : constant Internal_Entity_Discriminant_Choice_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Discriminant_Constraint : constant Internal_Entity_Discriminant_Constraint := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Discriminant_Part : constant Internal_Entity_Discriminant_Part := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Discriminant_Spec : constant Internal_Entity_Discriminant_Spec := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Discriminant_Spec_List : constant Internal_Entity_Discriminant_Spec_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Dotted_Name : constant Internal_Entity_Dotted_Name := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Elsif_Expr_Part : constant Internal_Entity_Elsif_Expr_Part := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Elsif_Expr_Part_List : constant Internal_Entity_Elsif_Expr_Part_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Elsif_Stmt_Part : constant Internal_Entity_Elsif_Stmt_Part := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Elsif_Stmt_Part_List : constant Internal_Entity_Elsif_Stmt_Part_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_End_Name : constant Internal_Entity_End_Name := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Entry_Body : constant Internal_Entity_Entry_Body := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Entry_Completion_Formal_Params : constant Internal_Entity_Entry_Completion_Formal_Params := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Entry_Decl : constant Internal_Entity_Entry_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Entry_Index_Spec : constant Internal_Entity_Entry_Index_Spec := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Entry_Spec : constant Internal_Entity_Entry_Spec := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Enum_Lit_Synth_Type_Expr : constant Internal_Entity_Enum_Lit_Synth_Type_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Enum_Literal_Decl : constant Internal_Entity_Enum_Literal_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Enum_Literal_Decl_List : constant Internal_Entity_Enum_Literal_Decl_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Enum_Rep_Clause : constant Internal_Entity_Enum_Rep_Clause := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Enum_Subp_Spec : constant Internal_Entity_Enum_Subp_Spec := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Enum_Type_Def : constant Internal_Entity_Enum_Type_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Error_Decl : constant Internal_Entity_Error_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Error_Stmt : constant Internal_Entity_Error_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Exception_Decl : constant Internal_Entity_Exception_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Exception_Handler : constant Internal_Entity_Exception_Handler := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Exit_Stmt : constant Internal_Entity_Exit_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Explicit_Deref : constant Internal_Entity_Explicit_Deref := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Expr_List : constant Internal_Entity_Expr_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Expr_Alternatives_List : constant Internal_Entity_Expr_Alternatives_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Expr_Function : constant Internal_Entity_Expr_Function := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Extended_Return_Stmt : constant Internal_Entity_Extended_Return_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Object_Decl : constant Internal_Entity_Object_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Extended_Return_Stmt_Object_Decl : constant Internal_Entity_Extended_Return_Stmt_Object_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Floating_Point_Def : constant Internal_Entity_Floating_Point_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Loop_Spec : constant Internal_Entity_Loop_Spec := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_For_Loop_Spec : constant Internal_Entity_For_Loop_Spec := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_For_Loop_Stmt : constant Internal_Entity_For_Loop_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_For_Loop_Var_Decl : constant Internal_Entity_For_Loop_Var_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Formal_Discrete_Type_Def : constant Internal_Entity_Formal_Discrete_Type_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Decl : constant Internal_Entity_Generic_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Formal : constant Internal_Entity_Generic_Formal := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Formal_Obj_Decl : constant Internal_Entity_Generic_Formal_Obj_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Formal_Package : constant Internal_Entity_Generic_Formal_Package := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Formal_Part : constant Internal_Entity_Generic_Formal_Part := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Formal_Subp_Decl : constant Internal_Entity_Generic_Formal_Subp_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Formal_Type_Decl : constant Internal_Entity_Generic_Formal_Type_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Instantiation : constant Internal_Entity_Generic_Instantiation := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Package_Decl : constant Internal_Entity_Generic_Package_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Package_Instantiation : constant Internal_Entity_Generic_Package_Instantiation := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Package_Internal : constant Internal_Entity_Generic_Package_Internal := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Renaming_Decl : constant Internal_Entity_Generic_Renaming_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Package_Renaming_Decl : constant Internal_Entity_Generic_Package_Renaming_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Subp_Decl : constant Internal_Entity_Generic_Subp_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Subp_Instantiation : constant Internal_Entity_Generic_Subp_Instantiation := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Subp_Internal : constant Internal_Entity_Generic_Subp_Internal := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Generic_Subp_Renaming_Decl : constant Internal_Entity_Generic_Subp_Renaming_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Goto_Stmt : constant Internal_Entity_Goto_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Handled_Stmts : constant Internal_Entity_Handled_Stmts := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_If_Expr : constant Internal_Entity_If_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_If_Stmt : constant Internal_Entity_If_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Incomplete_Type_Decl : constant Internal_Entity_Incomplete_Type_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Incomplete_Tagged_Type_Decl : constant Internal_Entity_Incomplete_Tagged_Type_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Index_Constraint : constant Internal_Entity_Index_Constraint := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Num_Literal : constant Internal_Entity_Num_Literal := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Int_Literal : constant Internal_Entity_Int_Literal := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Interface_Kind : constant Internal_Entity_Interface_Kind := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Interface_Kind_Limited : constant Internal_Entity_Interface_Kind_Limited := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Interface_Kind_Protected : constant Internal_Entity_Interface_Kind_Protected := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Interface_Kind_Synchronized : constant Internal_Entity_Interface_Kind_Synchronized := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Interface_Kind_Task : constant Internal_Entity_Interface_Kind_Task := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Interface_Type_Def : constant Internal_Entity_Interface_Type_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Iter_Type : constant Internal_Entity_Iter_Type := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Iter_Type_In : constant Internal_Entity_Iter_Type_In := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Iter_Type_Of : constant Internal_Entity_Iter_Type_Of := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Iterated_Assoc : constant Internal_Entity_Iterated_Assoc := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Known_Discriminant_Part : constant Internal_Entity_Known_Discriminant_Part := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Label : constant Internal_Entity_Label := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Label_Decl : constant Internal_Entity_Label_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Library_Item : constant Internal_Entity_Library_Item := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Limited_Node : constant Internal_Entity_Limited_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Limited_Absent : constant Internal_Entity_Limited_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Limited_Present : constant Internal_Entity_Limited_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Loop_Stmt : constant Internal_Entity_Loop_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Membership_Expr : constant Internal_Entity_Membership_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Mod_Int_Type_Def : constant Internal_Entity_Mod_Int_Type_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Mode : constant Internal_Entity_Mode := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Mode_Default : constant Internal_Entity_Mode_Default := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Mode_In : constant Internal_Entity_Mode_In := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Mode_In_Out : constant Internal_Entity_Mode_In_Out := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Mode_Out : constant Internal_Entity_Mode_Out := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Multi_Abstract_State_Decl : constant Internal_Entity_Multi_Abstract_State_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Multi_Dim_Array_Assoc : constant Internal_Entity_Multi_Dim_Array_Assoc := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Name_List : constant Internal_Entity_Name_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Named_Stmt : constant Internal_Entity_Named_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Named_Stmt_Decl : constant Internal_Entity_Named_Stmt_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Not_Null : constant Internal_Entity_Not_Null := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Not_Null_Absent : constant Internal_Entity_Not_Null_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Not_Null_Present : constant Internal_Entity_Not_Null_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Null_Component_Decl : constant Internal_Entity_Null_Component_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Null_Literal : constant Internal_Entity_Null_Literal := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Null_Record_Aggregate : constant Internal_Entity_Null_Record_Aggregate := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Null_Record_Def : constant Internal_Entity_Null_Record_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Null_Stmt : constant Internal_Entity_Null_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Null_Subp_Decl : constant Internal_Entity_Null_Subp_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Number_Decl : constant Internal_Entity_Number_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op : constant Internal_Entity_Op := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Abs : constant Internal_Entity_Op_Abs := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_And : constant Internal_Entity_Op_And := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_And_Then : constant Internal_Entity_Op_And_Then := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Concat : constant Internal_Entity_Op_Concat := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Div : constant Internal_Entity_Op_Div := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Double_Dot : constant Internal_Entity_Op_Double_Dot := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Eq : constant Internal_Entity_Op_Eq := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Gt : constant Internal_Entity_Op_Gt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Gte : constant Internal_Entity_Op_Gte := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_In : constant Internal_Entity_Op_In := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Lt : constant Internal_Entity_Op_Lt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Lte : constant Internal_Entity_Op_Lte := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Minus : constant Internal_Entity_Op_Minus := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Mod : constant Internal_Entity_Op_Mod := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Mult : constant Internal_Entity_Op_Mult := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Neq : constant Internal_Entity_Op_Neq := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Not : constant Internal_Entity_Op_Not := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Not_In : constant Internal_Entity_Op_Not_In := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Or : constant Internal_Entity_Op_Or := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Or_Else : constant Internal_Entity_Op_Or_Else := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Plus : constant Internal_Entity_Op_Plus := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Pow : constant Internal_Entity_Op_Pow := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Rem : constant Internal_Entity_Op_Rem := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Op_Xor : constant Internal_Entity_Op_Xor := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Ordinary_Fixed_Point_Def : constant Internal_Entity_Ordinary_Fixed_Point_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Others_Designator : constant Internal_Entity_Others_Designator := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Overriding_Node : constant Internal_Entity_Overriding_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Overriding_Not_Overriding : constant Internal_Entity_Overriding_Not_Overriding := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Overriding_Overriding : constant Internal_Entity_Overriding_Overriding := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Overriding_Unspecified : constant Internal_Entity_Overriding_Unspecified := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Package_Body : constant Internal_Entity_Package_Body := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Package_Body_Stub : constant Internal_Entity_Package_Body_Stub := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Package_Decl : constant Internal_Entity_Package_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Package_Renaming_Decl : constant Internal_Entity_Package_Renaming_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Param_Assoc : constant Internal_Entity_Param_Assoc := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Param_Spec : constant Internal_Entity_Param_Spec := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Param_Spec_List : constant Internal_Entity_Param_Spec_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Params : constant Internal_Entity_Params := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Paren_Abstract_State_Decl : constant Internal_Entity_Paren_Abstract_State_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Paren_Expr : constant Internal_Entity_Paren_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Parent_List : constant Internal_Entity_Parent_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Pragma_Argument_Assoc : constant Internal_Entity_Pragma_Argument_Assoc := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Pragma_Node : constant Internal_Entity_Pragma_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Pragma_Node_List : constant Internal_Entity_Pragma_Node_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Private_Node : constant Internal_Entity_Private_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Private_Absent : constant Internal_Entity_Private_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Private_Part : constant Internal_Entity_Private_Part := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Private_Present : constant Internal_Entity_Private_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Private_Type_Def : constant Internal_Entity_Private_Type_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Protected_Node : constant Internal_Entity_Protected_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Protected_Absent : constant Internal_Entity_Protected_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Protected_Body : constant Internal_Entity_Protected_Body := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Protected_Body_Stub : constant Internal_Entity_Protected_Body_Stub := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Protected_Def : constant Internal_Entity_Protected_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Protected_Present : constant Internal_Entity_Protected_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Protected_Type_Decl : constant Internal_Entity_Protected_Type_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Public_Part : constant Internal_Entity_Public_Part := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Qual_Expr : constant Internal_Entity_Qual_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Quantified_Expr : constant Internal_Entity_Quantified_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Quantifier : constant Internal_Entity_Quantifier := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Quantifier_All : constant Internal_Entity_Quantifier_All := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Quantifier_Some : constant Internal_Entity_Quantifier_Some := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Raise_Expr : constant Internal_Entity_Raise_Expr := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Raise_Stmt : constant Internal_Entity_Raise_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Range_Constraint : constant Internal_Entity_Range_Constraint := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Range_Spec : constant Internal_Entity_Range_Spec := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Real_Literal : constant Internal_Entity_Real_Literal := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Record_Def : constant Internal_Entity_Record_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Record_Rep_Clause : constant Internal_Entity_Record_Rep_Clause := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Record_Type_Def : constant Internal_Entity_Record_Type_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Relation_Op : constant Internal_Entity_Relation_Op := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Renaming_Clause : constant Internal_Entity_Renaming_Clause := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Requeue_Stmt : constant Internal_Entity_Requeue_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Return_Stmt : constant Internal_Entity_Return_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Reverse_Node : constant Internal_Entity_Reverse_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Reverse_Absent : constant Internal_Entity_Reverse_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Reverse_Present : constant Internal_Entity_Reverse_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Select_Stmt : constant Internal_Entity_Select_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Select_When_Part : constant Internal_Entity_Select_When_Part := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Select_When_Part_List : constant Internal_Entity_Select_When_Part_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Signed_Int_Type_Def : constant Internal_Entity_Signed_Int_Type_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Single_Protected_Decl : constant Internal_Entity_Single_Protected_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Single_Task_Decl : constant Internal_Entity_Single_Task_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Task_Type_Decl : constant Internal_Entity_Task_Type_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Single_Task_Type_Decl : constant Internal_Entity_Single_Task_Type_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Stmt_List : constant Internal_Entity_Stmt_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_String_Literal : constant Internal_Entity_String_Literal := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Subp_Body : constant Internal_Entity_Subp_Body := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Subp_Body_Stub : constant Internal_Entity_Subp_Body_Stub := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Subp_Decl : constant Internal_Entity_Subp_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Subp_Kind : constant Internal_Entity_Subp_Kind := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Subp_Kind_Function : constant Internal_Entity_Subp_Kind_Function := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Subp_Kind_Procedure : constant Internal_Entity_Subp_Kind_Procedure := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Subp_Renaming_Decl : constant Internal_Entity_Subp_Renaming_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Subp_Spec : constant Internal_Entity_Subp_Spec := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Subtype_Decl : constant Internal_Entity_Subtype_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Subunit : constant Internal_Entity_Subunit := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Synchronized_Node : constant Internal_Entity_Synchronized_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Synchronized_Absent : constant Internal_Entity_Synchronized_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Synchronized_Present : constant Internal_Entity_Synchronized_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Synth_Anonymous_Type_Decl : constant Internal_Entity_Synth_Anonymous_Type_Decl := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Synthetic_Renaming_Clause : constant Internal_Entity_Synthetic_Renaming_Clause := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Tagged_Node : constant Internal_Entity_Tagged_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Tagged_Absent : constant Internal_Entity_Tagged_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Tagged_Present : constant Internal_Entity_Tagged_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Target_Name : constant Internal_Entity_Target_Name := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Task_Body : constant Internal_Entity_Task_Body := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Task_Body_Stub : constant Internal_Entity_Task_Body_Stub := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Task_Def : constant Internal_Entity_Task_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Terminate_Alternative : constant Internal_Entity_Terminate_Alternative := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Type_Access_Def : constant Internal_Entity_Type_Access_Def := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Un_Op : constant Internal_Entity_Un_Op := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Unconstrained_Array_Index : constant Internal_Entity_Unconstrained_Array_Index := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Unconstrained_Array_Index_List : constant Internal_Entity_Unconstrained_Array_Index_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Unconstrained_Array_Indices : constant Internal_Entity_Unconstrained_Array_Indices := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Unknown_Discriminant_Part : constant Internal_Entity_Unknown_Discriminant_Part := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Until_Node : constant Internal_Entity_Until_Node := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Until_Absent : constant Internal_Entity_Until_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Until_Present : constant Internal_Entity_Until_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Update_Attribute_Ref : constant Internal_Entity_Update_Attribute_Ref := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Use_Clause : constant Internal_Entity_Use_Clause := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Use_Package_Clause : constant Internal_Entity_Use_Package_Clause := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Use_Type_Clause : constant Internal_Entity_Use_Type_Clause := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Variant : constant Internal_Entity_Variant := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Variant_List : constant Internal_Entity_Variant_List := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_Variant_Part : constant Internal_Entity_Variant_Part := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_While_Loop_Spec : constant Internal_Entity_While_Loop_Spec := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_While_Loop_Stmt : constant Internal_Entity_While_Loop_Stmt := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_With_Clause : constant Internal_Entity_With_Clause := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_With_Private : constant Internal_Entity_With_Private := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_With_Private_Absent : constant Internal_Entity_With_Private_Absent := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Entity_With_Private_Present : constant Internal_Entity_With_Private_Present := ( Node => No_Bare_Ada_Node, Info => No_Entity_Info ); No_Env_Assoc : constant Internal_Env_Assoc := ( Key => null, Val => No_Bare_Ada_Node, Dest_Env => No_DesignatedEnv, Metadata => No_Metadata ); No_Eval_Discrete_Range : constant Internal_Eval_Discrete_Range := ( Low_Bound => No_Big_Integer, High_Bound => No_Big_Integer ); No_Expected_Type_For_Expr : constant Internal_Expected_Type_For_Expr := ( Expected_Type => No_Entity_Type_Expr, Expr => No_Entity_Expr ); No_Logic_Val_Result : constant Internal_Logic_Val_Result := ( Success => False, Value => No_Entity ); No_Multidim_Aggregate_Info : constant Internal_Multidim_Aggregate_Info := ( Agg => No_Entity_Base_Aggregate, Typ => No_Entity_Base_Type_Decl, Rank => 0 ); No_Param_Actual : constant Internal_Param_Actual := ( Param => No_Entity_Defining_Name, Actual => No_Entity_Expr ); No_Single_Actual : constant Internal_Single_Actual := ( Name => No_Bare_Ada_Node, Assoc => No_Entity_Basic_Assoc ); No_Single_Formal : constant Internal_Single_Formal := ( Name => No_Entity_Defining_Name, Spec => No_Entity_Base_Formal_Param_Decl ); No_Param_Match : constant Internal_Param_Match := ( Has_Matched => False, Actual => No_Single_Actual, Formal => No_Single_Formal ); No_Ref_Result : constant Internal_Ref_Result := ( Ref => No_Entity_Base_Id, Kind => Noref ); No_Refd_Decl : constant Internal_Refd_Decl := ( Decl => No_Entity_Basic_Decl, Kind => Noref ); No_Refd_Def : constant Internal_Refd_Def := ( Def_Name => No_Entity_Defining_Name, Kind => Noref ); No_Shape : constant Internal_Shape := ( Components => No_Internal_Entity_Base_Formal_Param_Decl_Array_Type, Discriminants_Values => No_Internal_Discriminant_Values_Array_Type ); No_Substitution : constant Internal_Substitution := ( From_Decl => No_Entity_Basic_Decl, To_Value => No_Big_Integer, Value_Type => No_Entity_Base_Type_Decl ); end Libadalang.Implementation;