-- --
-- S p e c --
-- --
--- --
--- Copyright (C) 1992-2001 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
--- ware Foundation; either version 2, or (at your option) any later ver- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
--- for more details. You should have received a copy of the GNU General --
--- Public License distributed with GNAT; see file COPYING. If not, write --
--- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
--- MA 02111-1307, USA. --
+-- 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. --
-- --
--- As a special exception, if other files instantiate generics from this --
--- unit, or you link this unit with other files to produce an executable, --
--- this unit does not by itself cause the resulting executable to be --
--- covered by the GNU General Public License. This exception does not --
--- however invalidate any other reasons why the executable file might be --
--- covered by the GNU Public License. --
+-- 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 --
+-- <http://www.gnu.org/licenses/>. --
-- --
-- GNAT was originally developed by the GNAT team at New York University. --
--- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
-- --
------------------------------------------------------------------------------
with Types; use Types;
--- Do we really need the with of Namet?
-
-pragma Warnings (Off);
-with Namet; use Namet;
-pragma Elaborate_All (Namet);
-pragma Warnings (On);
-
package Stand is
type Standard_Entity_Type is (
S_Standard,
S_ASCII,
- -- Types defined in package Standard
+ -- Types and subtypes defined in package Standard (in the order in which
+ -- they appear in the RM, so that the declarations are in the right
+ -- order for the purposes of ASIS traversals
S_Boolean,
- S_Character,
- S_Wide_Character,
- S_String,
- S_Wide_String,
- S_Duration,
S_Short_Short_Integer,
S_Short_Integer,
S_Long_Integer,
S_Long_Long_Integer,
+ S_Natural,
+ S_Positive,
+
S_Short_Float,
S_Float,
S_Long_Float,
S_Long_Long_Float,
+ S_Character,
+ S_Wide_Character,
+ S_Wide_Wide_Character,
+
+ S_String,
+ S_Wide_String,
+ S_Wide_Wide_String,
+
+ S_Duration,
+
-- Enumeration literals for type Boolean
S_False,
S_True,
- -- Subtypes declared in package Standard
-
- S_Natural,
- S_Positive,
-
-- Exceptions declared in package Standard
S_Constraint_Error,
S_Storage_Error,
S_Tasking_Error,
- -- Binary Operators declared in package Standard.
+ -- Binary Operators declared in package Standard
S_Op_Add,
S_Op_And,
S_Op_Concat,
S_Op_Concatw,
+ S_Op_Concatww,
S_Op_Divide,
S_Op_Eq,
S_Op_Expon,
S_DEL); -- 16#7F#
subtype S_Types is
- Standard_Entity_Type range S_Boolean .. S_Long_Long_Float;
+ Standard_Entity_Type range S_Boolean .. S_Duration;
subtype S_Exceptions is
Standard_Entity_Type range S_Constraint_Error .. S_Tasking_Error;
Standard_ASCII : Entity_Id renames SE (S_ASCII);
Standard_Character : Entity_Id renames SE (S_Character);
Standard_Wide_Character : Entity_Id renames SE (S_Wide_Character);
+ Standard_Wide_Wide_Character : Entity_Id renames SE (S_Wide_Wide_Character);
Standard_String : Entity_Id renames SE (S_String);
Standard_Wide_String : Entity_Id renames SE (S_Wide_String);
+ Standard_Wide_Wide_String : Entity_Id renames SE (S_Wide_Wide_String);
Standard_Boolean : Entity_Id renames SE (S_Boolean);
Standard_False : Entity_Id renames SE (S_False);
Standard_Op_And : Entity_Id renames SE (S_Op_And);
Standard_Op_Concat : Entity_Id renames SE (S_Op_Concat);
Standard_Op_Concatw : Entity_Id renames SE (S_Op_Concatw);
+ Standard_Op_Concatww : Entity_Id renames SE (S_Op_Concatww);
Standard_Op_Divide : Entity_Id renames SE (S_Op_Divide);
Standard_Op_Eq : Entity_Id renames SE (S_Op_Eq);
Standard_Op_Expon : Entity_Id renames SE (S_Op_Expon);
-- Highest List_Id value used by Standard (including those used by
-- normal list headers, element list headers, and list elements)
+ Boolean_Literals : array (Boolean) of Entity_Id;
+ -- Entities for the two boolean literals, used by the expander
+
-------------------------------------
-- Semantic Phase Special Entities --
-------------------------------------
-- This is a type used to represent the return type of procedures
Standard_Exception_Type : Entity_Id;
- -- This is a type used to represent the Etype of exceptions.
+ -- This is a type used to represent the Etype of exceptions
Standard_A_String : Entity_Id;
-- An access to String type used for building elements of tables
-- Access to character, used as a component of the exception type to
-- denote a thin pointer component.
+ Standard_Debug_Renaming_Type : Entity_Id;
+ -- A zero-size subtype of Integer, used as the type of variables used
+ -- to provide the debugger with name encodings for renaming declarations.
+
-- The entities labeled Any_xxx are used in situations where the full
-- characteristics of an entity are not yet known, e.g. Any_Character
-- is used to label a character literal before resolution is complete.
-- error messages ("expecting an integer type").
Any_Id : Entity_Id;
- -- Used to represent some unknown identifier. Used to lable undefined
+ -- Used to represent some unknown identifier. Used to label undefined
-- identifier references to prevent cascaded errors.
Any_Type : Entity_Id;
-- Used to represent some unknown type. Plays an important role in
- -- avoiding cascaded errors, since any node that remains labaled with
+ -- avoiding cascaded errors, since any node that remains labeled with
-- this type corresponds to an already issued error message. Any_Type
-- is propagated to avoid cascaded errors from a single type error.
Any_Access : Entity_Id;
- -- Used to resolve the overloaded literal NULL.
+ -- Used to resolve the overloaded literal NULL
Any_Array : Entity_Id;
-- Used to represent some unknown array type
Any_Boolean : Entity_Id;
- -- The context type of conditions in IF and WHILE statements.
+ -- The context type of conditions in IF and WHILE statements
Any_Character : Entity_Id;
-- Any_Character is used to label character literals, which in general
-- Used to represent some unknown fixed-point type
Any_Integer : Entity_Id;
- -- Used to represent some unknown integer type.
+ -- Used to represent some unknown integer type
Any_Modular : Entity_Id;
-- Used to represent the result type of a boolean operation on an
-- only legal in a modular context.
Any_Numeric : Entity_Id;
- -- Used to represent some unknown numeric type.
+ -- Used to represent some unknown numeric type
Any_Real : Entity_Id;
- -- Used to represent some unknown real type.
+ -- Used to represent some unknown real type
Any_Scalar : Entity_Id;
-- Used to represent some unknown scalar type
Universal_Real : Entity_Id;
-- Entity for universal real type. The bounds of this type correspond to
-- to the largest supported real type (i.e. Long_Long_Real). It is the
- -- type used for runtime calculations in type universal real.
+ -- type used for runtime calculations in type universal real. Note that
+ -- this type is always IEEE format, even if Long_Long_Real is Vax_Float
+ -- (and in that case the bounds don't correspond exactly).
Universal_Fixed : Entity_Id;
-- Entity for universal fixed type. This is a type with arbitrary