diff options
author | Thomas Quinot <quinot@adacore.com> | 2010-06-18 14:44:26 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2010-06-18 14:44:26 +0200 |
commit | 709121b5a52e45f1bf29b56a9a4d813adf1dd292 (patch) | |
tree | 07ddaa2fe7730c7cbb982ab4b21b6f85692704f2 | |
parent | bef228c2bf2176f6fd643e0e8debfe3cb956f380 (diff) | |
download | gcc-709121b5a52e45f1bf29b56a9a4d813adf1dd292.zip gcc-709121b5a52e45f1bf29b56a9a4d813adf1dd292.tar.gz gcc-709121b5a52e45f1bf29b56a9a4d813adf1dd292.tar.bz2 |
sem_cat.adb (Validate_Object_Declaration): A variable declaration is not illegal per E.2.2(7) if...
2010-06-18 Thomas Quinot <quinot@adacore.com>
* sem_cat.adb (Validate_Object_Declaration): A variable declaration is
not illegal per E.2.2(7) if it occurs in the private part of a
Remote_Types unit.
From-SVN: r160984
-rw-r--r-- | gcc/ada/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/ada/sem_cat.adb | 47 |
2 files changed, 26 insertions, 29 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 966dab0..8653b02 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2010-06-18 Thomas Quinot <quinot@adacore.com> + + * sem_cat.adb (Validate_Object_Declaration): A variable declaration is + not illegal per E.2.2(7) if it occurs in the private part of a + Remote_Types unit. + 2010-06-18 Arnaud Charlet <charlet@adacore.com> * par-ch9.adb, sem_aggr.adb, sem_ch3.adb, layout.adb, sem_ch4.adb, @@ -17,7 +23,7 @@ * par-labl.adb, restrict.adb, s-osinte-hpux-dce.ads, sem_ch11.adb, exp_pakd.adb, s-filofl.ads, par-endh.adb, exp_intr.adb, sem_cat.adb, - sem_case.adb, exp_ch11.adb: Fix copyright notices. + sem_case.adb, exp_ch11.adb, s-osinte-linux.ads: Fix copyright notices. 2010-06-18 Geert Bosch <bosch@adacore.com> diff --git a/gcc/ada/sem_cat.adb b/gcc/ada/sem_cat.adb index 5864d25..1cde64f 100644 --- a/gcc/ada/sem_cat.adb +++ b/gcc/ada/sem_cat.adb @@ -78,12 +78,12 @@ package body Sem_Cat is function In_RCI_Declaration (N : Node_Id) return Boolean; -- Determines if a declaration is within the visible part of a Remote - -- Call Interface compilation unit, for semantic checking purposes only, + -- Call Interface compilation unit, for semantic checking purposes only -- (returns false within an instance and within the package body). function In_RT_Declaration return Boolean; - -- Determines if current scope is within a Remote Types compilation unit, - -- for semantic checking purposes. + -- Determines if current scope is within the declaration of a Remote Types + -- unit, for semantic checking purposes. function Is_Non_Remote_Access_Type (E : Entity_Id) return Boolean; -- Returns true if the entity is a type whose full view is a non-remote @@ -1061,27 +1061,25 @@ package body Sem_Cat is -- Exclude generic specs from the checks (this will get rechecked -- on instantiations). - if Inside_A_Generic - and then No (Enclosing_Generic_Body (Id)) - then + if Inside_A_Generic and then No (Enclosing_Generic_Body (Id)) then return; end if; - -- Required checks for declaration that is in a preelaborated - -- package and is not within some subprogram. + -- Required checks for declaration that is in a preelaborated package + -- and is not within some subprogram. if In_Preelaborated_Unit and then not In_Subprogram_Or_Concurrent_Unit then -- Check for default initialized variable case. Note that in - -- accordance with (RM B.1(24)) imported objects are not - -- subject to default initialization. + -- accordance with (RM B.1(24)) imported objects are not subject to + -- default initialization. -- If the initialization does not come from source and is an -- aggregate, it is a static initialization that replaces an -- implicit call, and must be treated as such. if Present (E) - and then + and then (Comes_From_Source (E) or else Nkind (E) /= N_Aggregate) then null; @@ -1210,13 +1208,8 @@ package body Sem_Cat is elsif Nkind (Odf) = N_Subtype_Indication then Ent := Etype (Subtype_Mark (Odf)); - elsif - Nkind (Odf) = N_Constrained_Array_Definition - then + elsif Nkind (Odf) = N_Constrained_Array_Definition then Ent := Component_Type (T); - - -- else - -- return; end if; if Is_Task_Type (Ent) @@ -1230,9 +1223,9 @@ package body Sem_Cat is end; end if; - -- Non-static discriminant not allowed in preelaborated unit - -- Controlled object of a type with a user-defined Initialize - -- is forbidden as well. + -- Non-static discriminants not allowed in preelaborated unit. + -- Objects of a controlled type with a user-defined Initialize + -- are forbidden as well. if Is_Record_Type (Etype (Id)) then declare @@ -1247,8 +1240,8 @@ package body Sem_Cat is PEE := Parent (EE); if Nkind (PEE) = N_Full_Type_Declaration - and then not Static_Discriminant_Expr - (Discriminant_Specifications (PEE)) + and then not Static_Discriminant_Expr + (Discriminant_Specifications (PEE)) then Error_Msg_N ("non-static discriminant in preelaborated unit", @@ -1270,23 +1263,21 @@ package body Sem_Cat is -- except within a subprogram, generic subprogram, task unit, or -- protected unit (RM 10.2.1(16)). - if In_Pure_Unit - and then not In_Subprogram_Task_Protected_Unit - then + if In_Pure_Unit and then not In_Subprogram_Task_Protected_Unit then Error_Msg_N ("declaration of variable not allowed in pure unit", N); -- The visible part of an RCI library unit must not contain the -- declaration of a variable (RM E.1.3(9)) elsif In_RCI_Declaration (N) then - Error_Msg_N ("declaration of variable not allowed in rci unit", N); + Error_Msg_N ("visible variable not allowed in 'R'C'I unit", N); -- The visible part of a Shared Passive library unit must not contain -- the declaration of a variable (RM E.2.2(7)) - elsif In_RT_Declaration then + elsif In_RT_Declaration and then not In_Private_Part (Id) then Error_Msg_N - ("variable declaration not allowed in remote types unit", N); + ("visible variable not allowed in remote types unit", N); end if; end Validate_Object_Declaration; |