From: Piotr Trojanek <troja...@adacore.com>

When resolving names in flow contracts, we refine the ordinary analysis by
knowing that an overloaded name must refer to an abstract state and not a
function. However, when all overloadings refer to function, we shouldn't
crash, but instead let the error to be diagnosed later.

gcc/ada/ChangeLog:

        * sem_prag.adb (Resolve_State): Continue ordinary processing.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/sem_prag.adb | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 081716a4027..1841a0b79ad 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -33804,11 +33804,7 @@ package body Sem_Prag is
                State := Homonym (State);
             end loop;
 
-            --  A function can never act as a state. If the homonym chain does
-            --  not contain a corresponding state, then something went wrong in
-            --  the overloading mechanism.
-
-            raise Program_Error;
+            --  A function can never act as a state; it will be diagnosed later
          end if;
       end if;
    end Resolve_State;
-- 
2.43.0

Reply via email to