diff options
author | Javier Miranda <miranda@adacore.com> | 2023-08-30 19:19:13 +0000 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2023-09-14 14:42:39 +0200 |
commit | fa16e3229499f4c7c5375bd1bc4b713fb1d2e30e (patch) | |
tree | aba34ce47329a680674880fb006a862c26f16323 | |
parent | 61231464d7a0c36ff80e2e2aea2c2d512420f494 (diff) | |
download | gcc-fa16e3229499f4c7c5375bd1bc4b713fb1d2e30e.zip gcc-fa16e3229499f4c7c5375bd1bc4b713fb1d2e30e.tar.gz gcc-fa16e3229499f4c7c5375bd1bc4b713fb1d2e30e.tar.bz2 |
ada: Assertion failure on expansion of record with invariant
gcc/ada/
* exp_util.adb (Process_Record_Component): Adjust assertion on the
availablity of the invariant procedure; required because the
invariant procedure is built by the expander, and hence it is not
available compiling generic units or when the sources have errors,
since expansion is then disabled.
-rw-r--r-- | gcc/ada/exp_util.adb | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb index 0dafa1c..5cfadc5 100644 --- a/gcc/ada/exp_util.adb +++ b/gcc/ada/exp_util.adb @@ -3324,7 +3324,13 @@ package body Exp_Util is -- if it has invariants of its own or inherits class-wide -- invariants from parent or interface types. - pragma Assert (Present (Proc_Id)); + -- However, given that the invariant procedure is built by + -- the expander, it is not available compiling generic units + -- or when the sources have errors, since expansion is then + -- disabled. + + pragma Assert (Present (Proc_Id) + or else not Expander_Active); -- Generate: -- <Comp_Typ>Invariant (T (_object).<Comp_Id>); @@ -3333,7 +3339,9 @@ package body Exp_Util is -- assertions are disabled or Assertion_Policy Ignore is in -- effect. - if not Has_Null_Body (Proc_Id) then + if Present (Proc_Id) + and then not Has_Null_Body (Proc_Id) + then Append_New_To (Comp_Checks, Make_Procedure_Call_Statement (Loc, Name => |