From 845d4419da1abe839431af7e6bf5aaecec932486 Mon Sep 17 00:00:00 2001 From: Piotr Trojanek Date: Sat, 4 Mar 2023 18:07:55 +0100 Subject: [PATCH] ada: Prevent search of calls in preconditions from going too far When determining whether a call to protected function appears within a pragma expression we can safely stop at the subprogram body. Cleanup related to recently added support for a new SPARK aspects, whose implementation was based on Contract_Cases. gcc/ada/ * sem_util.adb (Check_Internal_Protected_Use): Add standard protection against search going too far. --- gcc/ada/sem_util.adb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 2e2fb911c388..bfe1b9fc74d9 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -3501,6 +3501,11 @@ package body Sem_Util is ("internal call cannot appear in default for formal of " & "protected operation", N); return; + + -- Prevent the search from going too far + + elsif Is_Body_Or_Package_Declaration (P) then + exit; end if; P := Parent (P); -- 2.47.3