From: Yannick Moy Date: Tue, 27 Jul 2021 10:20:41 +0000 (+0200) Subject: [Ada] Spurious error on deferred constant with predicate X-Git-Tag: basepoints/gcc-13~4494 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=03b6cc3b3e60379f10a4b055e431488ab10a1760;p=thirdparty%2Fgcc.git [Ada] Spurious error on deferred constant with predicate gcc/ada/ * sem_ch3.adb (Analyze_Object_Declaration): Do not insert a predicate check after a deferred constant declaration. --- diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 0e36cc228373..7ba6f7b3bf9a 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -4505,7 +4505,7 @@ package body Sem_Ch3 is -- default initial value (including via a Default_Value or -- Default_Component_Value aspect, see AI12-0301) and then this is not -- an internal declaration whose initialization comes later (as for an - -- aggregate expansion). + -- aggregate expansion) or a deferred constant. -- If expression is an aggregate it may be expanded into assignments -- and the declaration itself is marked with No_Initialization, but -- the predicate still applies. @@ -4519,6 +4519,7 @@ package body Sem_Ch3 is (Present (E) or else Is_Partially_Initialized_Type (T, Include_Implicit => False)) + and then not (Constant_Present (N) and then No (E)) then -- If the type has a static predicate and the expression is known at -- compile time, see if the expression satisfies the predicate.