]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Tweak condition for name resolution failure
authorRonan Desplanques <desplanques@adacore.com>
Fri, 21 Feb 2025 16:32:35 +0000 (17:32 +0100)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Fri, 6 Jun 2025 08:37:08 +0000 (10:37 +0200)
It is sometimes used as a convention across GNAT's code to set the Etype
field of a node to Any_Type to signal a name resolution error. This has
the potential to be confusing, which is why this patch replaces one such
use of the convention by a less convoluted check.

This only affects error recovery paths, and possibly doesn't change the
behavior of the compiler at all.

gcc/ada/ChangeLog:

* sem_ch4.adb (Analyze_Selected_Component): Tweak condition.

gcc/ada/sem_ch4.adb

index 50b3eee0dbe533f1fe3a5752dad74f2031c7788b..d910d770ad3ad9b14f998bd8187868c59770a769 100644 (file)
@@ -6040,9 +6040,10 @@ package body Sem_Ch4 is
          Error_Msg_NE ("invalid prefix in selected component&", N, Sel);
       end if;
 
-      --  If N still has no type, the component is not defined in the prefix
+      --  If the selector is not labelled with an entity at this point, the
+      --  component is not defined in the prefix.
 
-      if Etype (N) = Any_Type then
+      if No (Entity (Sel)) then
 
          if Is_Single_Concurrent_Object then
             Error_Msg_Node_2 := Entity (Pref);