aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2020-11-18 15:52:55 +0100
committerPierre-Marie de Rodat <derodat@adacore.com>2020-12-14 10:51:50 -0500
commitc2dc9fb66147830f1ca83206543bbef7f3966a40 (patch)
tree1d7b1dc7d76bc312d6230eeea0d44bf7fda47e32
parent2c40c60ecb32a2200c3a4087521b9f35cc08763e (diff)
downloadgcc-c2dc9fb66147830f1ca83206543bbef7f3966a40.zip
gcc-c2dc9fb66147830f1ca83206543bbef7f3966a40.tar.gz
gcc-c2dc9fb66147830f1ca83206543bbef7f3966a40.tar.bz2
[Ada] Simplify prevention of cascaded errors for Refined_State
gcc/ada/ * sem_prag.adb (Analyze_Refinement_Clause): Simplify recently added code for preventing cascaded errors.
-rw-r--r--gcc/ada/sem_prag.adb27
1 files changed, 11 insertions, 16 deletions
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 8c0ce79..1ffe513 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -28978,24 +28978,19 @@ package body Sem_Prag is
Report_Unused_Constituents (Part_Of_Constits);
- -- Avoid a cascading error reporting a missing refinement by adding
- -- State_Id as dummy constituent of itself.
+ -- Avoid a cascading error reporting a missing refinement by adding a
+ -- dummy constituent.
- if Non_Null_Seen
- and then not Has_Non_Null_Refinement (State_Id)
- then
- declare
- Constits : Elist_Id := Refinement_Constituents (State_Id);
- begin
- if No (Constits) then
- Constits := New_Elmt_List;
- Set_Refinement_Constituents (State_Id, Constits);
- end if;
-
- Append_Elmt (State_Id, Constits);
- Set_Encapsulating_State (State_Id, State_Id);
- end;
+ if No (Refinement_Constituents (State_Id)) then
+ Set_Refinement_Constituents (State_Id, New_Elmt_List (Any_Id));
end if;
+
+ -- At this point the refinement might be dummy, but must be
+ -- well-formed, to prevent cascaded errors.
+
+ pragma Assert (Has_Null_Refinement (State_Id)
+ xor
+ Has_Non_Null_Refinement (State_Id));
end Analyze_Refinement_Clause;
-----------------------------