aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Miranda <miranda@adacore.com>2023-08-30 19:19:13 +0000
committerMarc Poulhiès <poulhies@adacore.com>2023-09-14 14:42:39 +0200
commitfa16e3229499f4c7c5375bd1bc4b713fb1d2e30e (patch)
treeaba34ce47329a680674880fb006a862c26f16323
parent61231464d7a0c36ff80e2e2aea2c2d512420f494 (diff)
downloadgcc-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.adb12
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 =>