diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2020-11-18 15:52:55 +0100 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-12-14 10:51:50 -0500 |
commit | c2dc9fb66147830f1ca83206543bbef7f3966a40 (patch) | |
tree | 1d7b1dc7d76bc312d6230eeea0d44bf7fda47e32 | |
parent | 2c40c60ecb32a2200c3a4087521b9f35cc08763e (diff) | |
download | gcc-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.adb | 27 |
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; ----------------------------- |