[gcc r11-1928] [Ada] Disallow Predicate_Failure without predicate
Pierre-Marie de Rodat
pmderodat@gcc.gnu.org
Wed Jul 8 14:57:21 GMT 2020
https://gcc.gnu.org/g:6091c2e0fa1836c6607562d273a529db5535c3d8
commit r11-1928-g6091c2e0fa1836c6607562d273a529db5535c3d8
Author: Bob Duff <duff@adacore.com>
Date: Tue May 19 09:23:21 2020 -0400
[Ada] Disallow Predicate_Failure without predicate
gcc/ada/
* sem_ch13.adb (Predicate_Failure): Check that the type has
predicates. Remove the setting of Has_Delayed_Aspects and
Freeze_Node, because (if the code is legal) it should have
already been done by the predicate aspect.
Diff:
---
gcc/ada/sem_ch13.adb | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index e440069c7da..2131bb3719a 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -3120,6 +3120,12 @@ package body Sem_Ch13 is
Error_Msg_N
("predicate cannot apply to incomplete view", Aspect);
goto Continue;
+
+ elsif not Has_Predicates (E) then
+ Error_Msg_N
+ ("Predicate_Failure requires previous predicate" &
+ " specification", Aspect);
+ goto Continue;
end if;
-- Construct the pragma
@@ -3132,16 +3138,6 @@ package body Sem_Ch13 is
Expression => Relocate_Node (Expr))),
Pragma_Name => Name_Predicate_Failure);
- -- If the type is private, indicate that its completion
- -- has a freeze node, because that is the one that will
- -- be visible at freeze time.
-
- if Is_Private_Type (E) and then Present (Full_View (E)) then
- Set_Has_Predicates (Full_View (E));
- Set_Has_Delayed_Aspects (Full_View (E));
- Ensure_Freeze_Node (Full_View (E));
- end if;
-
-- Case 2b: Aspects corresponding to pragmas with two
-- arguments, where the second argument is a local name
-- referring to the entity, and the first argument is the
More information about the Gcc-cvs
mailing list