summaryrefslogtreecommitdiff
path: root/gcc/ada/sem_ch3.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-07 14:16:34 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-07 14:16:34 +0000
commite2aa7314de5939148a7e7b3d0546c9b52bb31bea (patch)
tree9781ebfdbcccd836481f22c031cc751e46380720 /gcc/ada/sem_ch3.adb
parentf6f6e3fbf5d0880bf069027374e9100901c6a137 (diff)
downloadgcc-e2aa7314de5939148a7e7b3d0546c9b52bb31bea.tar.gz
2004-06-07 Robert Dewar <dewar@gnat.com>
* a-direct.ads, einfo.ads: Minor comment updates * s-taprop-lynxos.adb, s-taprop-tru64.adb, s-taprop-irix.adb, s-taprop-irix-athread.adb, s-taprop-hpux-dce.adb, s-taprop-linux.adb, s-taprop-dummy.adb, s-taprop-os2.adb, s-taprop-solaris.adb, s-taprop-vms.adb, s-taprop-mingw.adb, s-taprop-vxworks.adb, s-taprop-posix.adb, s-taprop.ads, exp_dbug.adb: Minor reformatting. * s-interr-sigaction.adb: Remove unreferenced variable (Attached_Interrupts). Minor reformatting. Avoid use of variable I (replace by J). * par-ch10.adb: Fix text of one error message * checks.adb, checks.ads, cstand.adb, vms_data.ads, errout.ads, exp_aggr.adb, exp_ch3.adb, exp_ch3.ads, exp_ch5.adb, exp_ch6.adb, exp_ch9.adb, exp_code.adb, gnat1drv.adb, lib-load.adb, lib-writ.adb, opt.adb, par.adb, opt.ads, par-ch11.adb, par-ch3.adb, par-ch4.adb, par-ch5.adb, par-ch6.adb, par-ch8.adb, par-ch9.adb, par-prag.adb, par-util.adb, scng.adb, sem_aggr.adb, sem_attr.adb, sem_cat.adb, sem_ch10.adb, sem_ch10.adb, sem_ch11.adb, sem_ch12.adb, sem_ch2.adb, sem_ch3.adb, sem_ch3.ads, sem_ch4.adb, sem_ch5.adb, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb, sem_ch9.adb, sem_eval.adb, sem_prag.adb, sem_res.adb, sem_type.adb, sem_util.adb, sinfo.ads, snames.adb, snames.ads, snames.h, sprint.adb, switch-c.adb: Modifications for Ada 2005 support. 2004-06-07 Doug Rupp <rupp@gnat.com> * mlib-tgt-vms.adb: Rename mlib-tgt-vms.adb mlib-tgt-vms-alpha.adb * s-vaflop-vms.adb: Rename s-vaflop-vms.adb to s-vaflop-vms-alpha.adb * mlib-tgt-vms-ia64.adb: New file. * Makefile.in: Rename mlib-tgt-vms.adb to mlib-tgt-vms-alpha.adb Add mlib-tgt-vms-ia64.adb Rename s-vaflop-vms.adb to s-vaflop-vms-alpha.adb. Move to alpha specific ifeq section. Add VMS specific versions of symbols.adb Renaming of 5q vms files. * 5qsystem.ads renamed to system-vms_64.ads. 2004-06-07 Vincent Celier <celier@gnat.com> * a-calend.ads: Add a GNAT Note comment after function Time_Of to explain that when a time of day corresponding to the non existing hour on the day switching to DST is specified, Split may return a different value for Seconds. * gnatcmd.adb: Add processing of GNAT METRIC (for gnatmetric), similar to GNAT PRETTY. * g-os_lib.adb (OpenVMS): New Boolean value imported from System. (Normalize_Pathname): Only resolve VMS logical names when on VMS. * mlib-prj.adb (Build_Library): New flag Gtrasymobj_Needed, initialize to False. If Gtrasymobj_Needed is True, add the full path of g-trasym.obj to the linking options. (Build_Library.Check_Libs): On VMS, if there is a dependency on g-trasym.ads, set Gtrasymobj_Needed to True. * prj-attr.adb: Add new package Metrics for gnatmetric * prj-nmsc.adb (Record_Other_Sources): Put source file names in canonical case to take into account files with upper case characters on Windows. (Ada_Check): Load the reference symbol file name in the name buffer to check it, not the symbol file name. * snames.ads, snames.adb: Add standard name Metrics (name of project file package for gnatmetric). * vms_conv.ads: Add Metric to Comment_Type * vms_conv.adb (Initialize): Add component dor Metric in Command_List * vms_data.ads: Add qualifiers for GNAT METRIC * makegpr.adb (Link_Executables): Take into account the switches specified in package Linker of the main project. 2004-06-07 Thomas Quinot <quinot@act-europe.fr> * bindgen.adb (Set_Unit_Number): Units is an instance of Table, and so the index of the last element is Units.Last, not Units.Table'Last (which is usually not a valid index within the actually allocated storage for the table). * exp_ch4.adb (Insert_Dereference_Action): Change predicate that determines whether to generate a call to a checked storage pool Dereference action. Generate such a call only for a dereference that either comes from source, or is the result of rewriting a dereference that comes from source. 2004-06-07 Romain Berrendonner <berrendo@act-europe.fr> * bindgen.adb (Gen_Output_File): Add support for GAP builds. 2004-06-07 Eric Botcazou <ebotcazou@act-europe.fr> (gnat_to_gnu_entity) <E_Array_Subtype>: For multi-dimensional arrays at file level, elaborate the stride for inner dimensions in alignment units, not bytes. * exp_ch5.adb: Correct wrong reference to Component_May_Be_Bit_Aligned in a comment. 2004-06-07 Javier Miranda <miranda@gnat.com> * exp_ch6.adb: Correct wrong modification in previous patch 2004-06-07 Vasiliy Fofanov <fofanov@act-europe.fr> * g-trasym.ads: Corrected comment to properly reflect level of support on VMS. 2004-06-07 Hristian Kirtchev <kirtchev@gnat.com> * lib-xref.adb (Generate_Reference): Add nested function Is_On_LHS. It includes case of a variable referenced on the left hand side of an assignment, therefore remove redundant code. Variables and prefixes of indexed or selected components are now marked as referenced on left hand side. Warnings are now properly emitted when variables or prefixes are assigned but not read. * sem_warn.adb (Output_Unreferenced_Messages): Add additional checks to left hand side referenced variables. Private access types do not produce the warning "variable ... is assigned but never read". Add also additional checks to left hand side referenced variables. Aliased, renamed objects and access types do not produce the warning "variable ... is assigned but never read" since other entities may read the memory location. 2004-06-07 Jerome Guitton <guitton@act-europe.fr> * Makefile.in: In the powerpc/vxworks-specific section, restore EXTRA_GNATRTL_NONTASKING_OBJS and EXTRA_GNATRTL_TASKING_OBJS (removed by mistake). 2004-06-07 Ed Schonberg <schonberg@gnat.com> * sem_ch4.adb (Remove_Abstract_Operations): Refine the removal of predefined operators. Removes spurious type errors from g-trasym-vms.adb. * sem_res.adb (Rewrite_Renamed_Operator): If intrinsic operator is distinct from the operator appearing in the source, call appropriate routine to insert conversions when needed, and complete resolution of node. (Resolve_Intrinsic_Operator): Fix cut-and-paste bug on transfer of interpretations for rewritten right operand. (Set_Mixed_Mode_Operand): Handle properly a universal real operand when the other operand is overloaded and the context is a type conversion. 2004-06-07 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> * ada-tree.def (BLOCK_STMT): Now has two operands. (BREAK_STMT): New. * ada-tree.h: (BLOCK_STMT_BLOCK): New macro. * gigi.h: (gnat_poplevel): Now returns a tree. * trans.c (end_block_stmt): Add arg; all callers changed. (tree_transform, case N_Case_Statement): Make a BLOCK_STMT for a WHEN. (start_block_stmt): Clear BLOCK_STMT_BLOCK. (add_stmt): Set TREE_TYPE. (gnat_expand_stmt, case BLOCK_STMT): Handle BLOCK_STMT_BLOCK. (gnat_expand_stmt, case BREAK_STMT): New case. * utils.c (gnat_poplevel): Return a BLOCK, if we made one. 2004-06-07 Jose Ruiz <ruiz@act-europe.fr> * s-stchop.adsm s-stchop.adb, s-stchop-vxworks.adb: Remove the procedure Set_Stack_Size that is not needed. 2004-06-07 Sergey Rybin <rybin@act-europe.fr> * gnat_ugn.texi: Clarify the case when non-standard naming scheme is used for gnatpp input file and for the files upon which it depends 2004-06-07 Ben Brosgol <brosgol@gnat.com> * gnat_ugn.texi: Wordsmithing of "GNAT and Libraries" chapter 2004-06-07 Arnaud Charlet <charlet@act-europe.fr> * gnatvsn.ads: Bump version numbers appropriately. Add new build type. 2004-06-07 Pascal Obry <obry@gnat.com> * gnat_ugn.texi: Improve comments about imported names and link names on Windows. Add a note about the requirement to use -k gnatdll's option when working with a DLL which has stripped stdcall symbols (no @nn suffix). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82691 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/sem_ch3.adb')
-rw-r--r--gcc/ada/sem_ch3.adb127
1 files changed, 64 insertions, 63 deletions
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
index 109c05b7ada..b81cac9052d 100644
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -677,7 +677,7 @@ package body Sem_Ch3 is
Error_Msg_N ("task entries cannot have access parameters", N);
end if;
- -- Ada 0Y (AI-254): In case of anonymous access to subprograms
+ -- Ada 2005 (AI-254): In case of anonymous access to subprograms
-- call the corresponding semantic routine
if Present (Access_To_Subprogram_Definition (N)) then
@@ -705,11 +705,12 @@ package body Sem_Ch3 is
Init_Size_Align (Anon_Type);
Set_Depends_On_Private (Anon_Type, Has_Private_Component (Anon_Type));
- -- Ada 0Y (AI-231): Ada 0Y semantics for anonymous access differs from
- -- Ada 95 semantics. In Ada 0Y, anonymous access must specify if the
- -- null value is allowed; in Ada 95 the null value is not allowed
+ -- Ada 2005 (AI-231): Ada 2005 semantics for anonymous access differs
+ -- from Ada 95 semantics. In Ada 2005, anonymous access must specify
+ -- if the null value is allowed. In Ada 95 the null value is never
+ -- allowed.
- if Extensions_Allowed then
+ if Ada_Version >= Ada_05 then
Set_Can_Never_Be_Null (Anon_Type, Null_Exclusion_Present (N));
else
Set_Can_Never_Be_Null (Anon_Type, True);
@@ -721,12 +722,12 @@ package body Sem_Ch3 is
Set_Is_Public (Anon_Type, Is_Public (Scope (Anon_Type)));
- -- Ada 0Y (AI-50217): Propagate the attribute that indicates that the
+ -- Ada 2005 (AI-50217): Propagate the attribute that indicates that the
-- designated type comes from the limited view (for back-end purposes).
Set_From_With_Type (Anon_Type, From_With_Type (Desig_Type));
- -- Ada 0Y (AI-231): Propagate the access-constant attribute
+ -- Ada 2005 (AI-231): Propagate the access-constant attribute
Set_Is_Access_Constant (Anon_Type, Constant_Present (N));
@@ -836,7 +837,7 @@ package body Sem_Ch3 is
Init_Size_Align (T_Name);
Set_Directly_Designated_Type (T_Name, Desig_Type);
- -- Ada 0Y (AI-231): Propagate the null-excluding attribute
+ -- Ada 2005 (AI-231): Propagate the null-excluding attribute
Set_Can_Never_Be_Null (T_Name, Null_Exclusion_Present (T_Def));
@@ -899,9 +900,9 @@ package body Sem_Ch3 is
-- access type is also imported, and therefore restricted in its use.
-- The access type may already be imported, so keep setting otherwise.
- -- Ada 0Y (AI-50217): If the non-limited view of the designated type is
- -- available, use it as the designated type of the access type, so that
- -- the back-end gets a usable entity.
+ -- Ada 2005 (AI-50217): If the non-limited view of the designated type
+ -- is available, use it as the designated type of the access type, so
+ -- that the back-end gets a usable entity.
declare
N_Desig : Entity_Id;
@@ -933,7 +934,7 @@ package body Sem_Ch3 is
Set_Has_Task (T, False);
Set_Has_Controlled_Component (T, False);
- -- Ada 0Y (AI-231): Propagate the null-excluding and access-constant
+ -- Ada 2005 (AI-231): Propagate the null-excluding and access-constant
-- attributes
Set_Can_Never_Be_Null (T, Null_Exclusion_Present (Def));
@@ -957,7 +958,7 @@ package body Sem_Ch3 is
T := Find_Type_Of_Object
(Subtype_Indication (Component_Definition (N)), N);
- -- Ada 0Y (AI-230): Access Definition case
+ -- Ada 2005 (AI-230): Access Definition case
else
pragma Assert (Present
@@ -967,13 +968,13 @@ package body Sem_Ch3 is
(Related_Nod => N,
N => Access_Definition (Component_Definition (N)));
- -- Ada 0Y (AI-230): In case of components that are anonymous access
- -- types the level of accessibility depends on the enclosing type
- -- declaration
+ -- Ada 2005 (AI-230): In case of components that are anonymous
+ -- access types the level of accessibility depends on the enclosing
+ -- type declaration
- Set_Scope (T, Current_Scope); -- Ada 0Y (AI-230)
+ Set_Scope (T, Current_Scope); -- Ada 2005 (AI-230)
- -- Ada 0Y (AI-254)
+ -- Ada 2005 (AI-254)
if Present (Access_To_Subprogram_Definition
(Access_Definition (Component_Definition (N))))
@@ -1041,10 +1042,10 @@ package body Sem_Ch3 is
Set_Etype (Id, T);
Set_Is_Aliased (Id, Aliased_Present (Component_Definition (N)));
- -- Ada 0Y (AI-231): Propagate the null-excluding attribute and carry
+ -- Ada 2005 (AI-231): Propagate the null-excluding attribute and carry
-- out some static checks
- if Extensions_Allowed
+ if Ada_Version >= Ada_05
and then (Null_Exclusion_Present (Component_Definition (N))
or else Can_Never_Be_Null (T))
then
@@ -1600,10 +1601,10 @@ package body Sem_Ch3 is
end if;
end if;
- -- Ada 0Y (AI-231): Propagate the null-excluding attribute and carry
+ -- Ada 2005 (AI-231): Propagate the null-excluding attribute and carry
-- out some static checks
- if Extensions_Allowed
+ if Ada_Version >= Ada_05
and then (Null_Exclusion_Present (N)
or else Can_Never_Be_Null (T))
then
@@ -1633,7 +1634,7 @@ package body Sem_Ch3 is
-- In Ada 83, deferred constant must be of private type
elsif not Is_Private_Type (T) then
- if Ada_83 and then Comes_From_Source (N) then
+ if Ada_Version = Ada_83 and then Comes_From_Source (N) then
Error_Msg_N
("(Ada 83) deferred constant must be private type", N);
end if;
@@ -1775,7 +1776,7 @@ package body Sem_Ch3 is
-- Not allowed in Ada 83
if not Constant_Present (N) then
- if Ada_83
+ if Ada_Version = Ada_83
and then Comes_From_Source (Object_Definition (N))
then
Error_Msg_N
@@ -2449,8 +2450,8 @@ package body Sem_Ch3 is
Set_Directly_Designated_Type
(Id, Designated_Type (T));
- -- Ada 0Y (AI-231): Propagate the null-excluding attribute and
- -- carry out some static checks
+ -- Ada 2005 (AI-231): Propagate the null-excluding attribute
+ -- and carry out some static checks
if Null_Exclusion_Present (N)
or else Can_Never_Be_Null (T)
@@ -2461,7 +2462,7 @@ package body Sem_Ch3 is
and then Can_Never_Be_Null (T)
then
Error_Msg_N
- ("(Ada 0Y) null exclusion not allowed if parent "
+ ("(Ada 2005) null exclusion not allowed if parent "
& "is already non-null", Subtype_Indication (N));
end if;
end if;
@@ -2651,9 +2652,9 @@ package body Sem_Ch3 is
-- The full view, if present, now points to the current type
- -- Ada 0Y (AI-50217): If the type was previously decorated when imported
- -- through a LIMITED WITH clause, it appears as incomplete but has no
- -- full view.
+ -- Ada 2005 (AI-50217): If the type was previously decorated when
+ -- imported through a LIMITED WITH clause, it appears as incomplete
+ -- but has no full view.
if Ekind (Prev) = E_Incomplete_Type
and then Present (Full_View (Prev))
@@ -2969,20 +2970,20 @@ package body Sem_Ch3 is
Element_Type := Process_Subtype (Subtype_Indication (Component_Def),
P, Related_Id, 'C');
- -- Ada 0Y (AI-230): Access Definition case
+ -- Ada 2005 (AI-230): Access Definition case
else pragma Assert (Present (Access_Definition (Component_Def)));
Element_Type := Access_Definition
(Related_Nod => Related_Id,
N => Access_Definition (Component_Def));
- -- Ada 0Y (AI-230): In case of components that are anonymous access
- -- types the level of accessibility depends on the enclosing type
- -- declaration
+ -- Ada 2005 (AI-230): In case of components that are anonymous
+ -- access types the level of accessibility depends on the enclosing
+ -- type declaration
- Set_Scope (Element_Type, Current_Scope); -- Ada 0Y (AI-230)
+ Set_Scope (Element_Type, Current_Scope); -- Ada 2005 (AI-230)
- -- Ada 0Y (AI-254)
+ -- Ada 2005 (AI-254)
declare
CD : constant Node_Id :=
@@ -3065,10 +3066,10 @@ package body Sem_Ch3 is
Set_Has_Aliased_Components (Etype (T));
end if;
- -- Ada 0Y (AI-231): Propagate the null-excluding attribute to the array
- -- to ensure that objects of this type are initialized
+ -- Ada 2005 (AI-231): Propagate the null-excluding attribute to the
+ -- array to ensure that objects of this type are initialized.
- if Extensions_Allowed
+ if Ada_Version >= Ada_05
and then (Null_Exclusion_Present (Component_Definition (Def))
or else Can_Never_Be_Null (Element_Type))
then
@@ -3078,7 +3079,7 @@ package body Sem_Ch3 is
and then Can_Never_Be_Null (Element_Type)
then
Error_Msg_N
- ("(Ada 0Y) already a null-excluding type",
+ ("(Ada 2005) already a null-excluding type",
Subtype_Indication (Component_Definition (Def)));
end if;
end if;
@@ -3297,7 +3298,7 @@ package body Sem_Ch3 is
Has_Private_Component (Derived_Type));
Conditional_Delay (Derived_Type, Subt);
- -- Ada 0Y (AI-231). Set the null-exclusion attribute
+ -- Ada 2005 (AI-231). Set the null-exclusion attribute
if Null_Exclusion_Present (Type_Definition (N))
or else Can_Never_Be_Null (Parent_Type)
@@ -6622,12 +6623,12 @@ package body Sem_Ch3 is
and then not In_Instance
and then not In_Inlined_Body
then
- -- Ada 0Y (AI-287): Relax the strictness of the front-end in case of
- -- limited aggregates and extension aggregates.
+ -- Ada 2005 (AI-287): Relax the strictness of the front-end in
+ -- case of limited aggregates and extension aggregates.
- if Extensions_Allowed
+ if Ada_Version >= Ada_05
and then (Nkind (Exp) = N_Aggregate
- or else Nkind (Exp) = N_Extension_Aggregate)
+ or else Nkind (Exp) = N_Extension_Aggregate)
then
null;
else
@@ -6668,10 +6669,10 @@ package body Sem_Ch3 is
Set_Is_Immediately_Visible (D);
Set_Homonym (D, Prev);
- -- Ada 0Y (AI-230): Access discriminant allowed in non-limited
- -- record types
+ -- Ada 2005 (AI-230): Access discriminant allowed in
+ -- non-limited record types.
- if not Extensions_Allowed then
+ if Ada_Version < Ada_05 then
-- This restriction gets applied to the full type here; it
-- has already been applied earlier to the partial view
@@ -9416,13 +9417,13 @@ package body Sem_Ch3 is
elsif Is_Unchecked_Union (Parent_Type) then
Error_Msg_N ("cannot derive from Unchecked_Union type", N);
- -- Ada 0Y (AI-231): Static check
+ -- Ada 2005 (AI-231): Static check
elsif Is_Access_Type (Parent_Type)
and then Null_Exclusion_Present (Type_Definition (N))
and then Can_Never_Be_Null (Parent_Type)
then
- Error_Msg_N ("(Ada 0Y) null exclusion not allowed if parent is "
+ Error_Msg_N ("(Ada 2005) null exclusion not allowed if parent is "
& "already non-null", Type_Definition (N));
end if;
@@ -9444,11 +9445,11 @@ package body Sem_Ch3 is
-- be used for further derivation until the end of its visible part.
-- Note that derivation in the private part of the package is allowed.
- if Ada_83
+ if Ada_Version = Ada_83
and then Is_Derived_Type (Parent_Type)
and then In_Visible_Part (Scope (Parent_Type))
then
- if Ada_83 and then Comes_From_Source (Indic) then
+ if Ada_Version = Ada_83 and then Comes_From_Source (Indic) then
Error_Msg_N
("(Ada 83): premature use of type for derivation", Indic);
end if;
@@ -10996,7 +10997,7 @@ package body Sem_Ch3 is
elsif T = Any_Character then
- if not Ada_83 then
+ if Ada_Version >= Ada_95 then
Error_Msg_N
("ambiguous character literals (could be Wide_Character)",
I);
@@ -11609,7 +11610,7 @@ package body Sem_Ch3 is
if Nkind (Discriminant_Type (Discr)) = N_Access_Definition then
Discr_Type := Access_Definition (N, Discriminant_Type (Discr));
- -- Ada 0Y (AI-254)
+ -- Ada 2005 (AI-254)
if Present (Access_To_Subprogram_Definition
(Discriminant_Type (Discr)))
@@ -11632,15 +11633,15 @@ package body Sem_Ch3 is
if Is_Access_Type (Discr_Type) then
- -- Ada 0Y (AI-230): Access discriminant allowed in non-limited
+ -- Ada 2005 (AI-230): Access discriminant allowed in non-limited
-- record types
- if not Extensions_Allowed then
+ if Ada_Version < Ada_05 then
Check_Access_Discriminant_Requires_Limited
(Discr, Discriminant_Type (Discr));
end if;
- if Ada_83 and then Comes_From_Source (Discr) then
+ if Ada_Version = Ada_83 and then Comes_From_Source (Discr) then
Error_Msg_N
("(Ada 83) access discriminant not allowed", Discr);
end if;
@@ -11694,10 +11695,10 @@ package body Sem_Ch3 is
Default_Not_Present := True;
end if;
- -- Ada 0Y (AI-231): Set the null-excluding attribute and carry out
- -- some static checks
+ -- Ada 2005 (AI-231): Set the null-excluding attribute and carry
+ -- out some static checks.
- if Extensions_Allowed
+ if Ada_Version >= Ada_05
and then (Null_Exclusion_Present (Discr)
or else Can_Never_Be_Null (Discr_Type))
then
@@ -12470,16 +12471,16 @@ package body Sem_Ch3 is
Find_Type (S);
Check_Incomplete (S);
- -- Ada 0Y (AI-231): Static check
+ -- Ada 2005 (AI-231): Static check
- if Extensions_Allowed
+ if Ada_Version >= Ada_05
and then Present (Parent (S))
and then Null_Exclusion_Present (Parent (S))
and then Nkind (Parent (S)) /= N_Access_To_Object_Definition
and then not Is_Access_Type (Entity (S))
then
Error_Msg_N
- ("(Ada 0Y) null-exclusion part requires an access type", S);
+ ("(Ada 2005) null-exclusion part requires an access type", S);
end if;
return Entity (S);