[Ada] Fix processing of standard predefined operators
authorEd Schonberg <schonberg@adacore.com>
Thu, 12 Dec 2019 10:03:11 +0000 (10:03 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Thu, 12 Dec 2019 10:03:11 +0000 (10:03 +0000)
2019-12-12  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_res.adb: Fix processing of standard predefined operators.

From-SVN: r279296

gcc/ada/ChangeLog
gcc/ada/sem_res.adb

index 52cb1791ad908a8312d6ac548f6682582aac3326..49fdae76d969ebc41772eea859477c90ac4a74c2 100644 (file)
@@ -1,3 +1,7 @@
+2019-12-12  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_res.adb: Fix processing of standard predefined operators.
+
 2019-12-12  Piotr Trojanek  <trojanek@adacore.com>
 
        * libgnarl/a-dispat.ads (Yield): Update Global contract.
index 4a50b0982ea660409053e8ea742d8edefceadfb1..560f0f0a3f429c45893c71a8d6b3b4e2f1677f5c 100644 (file)
@@ -8481,12 +8481,16 @@ package body Sem_Res is
                --  matches that of the formals. For a predefined operqtor,
                --  it is the scope that matters, given that the predefined
                --  equality has Any_Type formals. In either case the result
-               --  type (most often Booleam) must match the context .
+               --  type (most often Booleam) must match the context .The
+               --  scope is either that of the type if there is a generated
+               --  equality (when there is an equality for the component type)
+               --  or else Standard otherwise.
 
                while Present (It.Typ) loop
                   if Etype (It.Nam) = Typ
                     and then
                      (Etype (First_Entity (It.Nam)) = Etype (L)
+                       or else Scope (It.Nam) = Standard_Standard
                        or else Scope (It.Nam) = Scope (T))
                   then
                      Set_Entity (N, It.Nam);