]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Fix crash on Depends contract with homonym functions
authorPiotr Trojanek <trojanek@adacore.com>
Tue, 10 Dec 2024 15:42:46 +0000 (16:42 +0100)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Mon, 6 Jan 2025 09:14:47 +0000 (10:14 +0100)
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.

gcc/ada/sem_prag.adb

index 081716a40274c4265c623d7a51f0f94f5ad38e2b..1841a0b79ad5016e6db384f6fba2eb8134334c9d 100644 (file)
@@ -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;