2013-10-10 Ed Schonberg <schonberg@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 Oct 2013 10:50:15 +0000 (10:50 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 Oct 2013 10:50:15 +0000 (10:50 +0000)
* sem_ch4.adb (Analyze_Selected_Component,
Has_Mode_Conformant_Spec): If selected component may be an
indexing of a parameterless call to a protected function, and
expansion is disabled, this is a valid candidate interpretation.

2013-10-10  Arnaud Charlet  <charlet@adacore.com>

* gnat_ugn.texi: Minor editing.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@203345 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/gnat_ugn.texi
gcc/ada/sem_ch4.adb

index 6f24bc6..cd6a678 100644 (file)
@@ -1,3 +1,14 @@
+2013-10-10  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch4.adb (Analyze_Selected_Component,
+       Has_Mode_Conformant_Spec): If selected component may be an
+       indexing of a parameterless call to a protected function, and
+       expansion is disabled, this is a valid candidate interpretation.
+
+2013-10-10  Arnaud Charlet  <charlet@adacore.com>
+
+       * gnat_ugn.texi: Minor editing.
+
 2013-10-10  Robert Dewar  <dewar@adacore.com>
 
        * gnatlink.adb: Minor reformatting.
index 40ffc35..eebd799 100644 (file)
@@ -241,7 +241,7 @@ By default, @value{EDITION} assumes Ada 2012, but you can override with a
 compiler switch (@pxref{Compiling Different Versions of Ada})
 to explicitly specify the language version.
 Throughout this manual, references to ``Ada'' without a year suffix
-apply to both all Ada 95/2005/2012 versions of the language.
+apply to all Ada 95/2005/2012 versions of the language.
 
 @ifclear FSFEDITION
 For ease of exposition, ``@value{EDITION}'' will be referred to simply as
index c4247cd..9fcd6ac 100644 (file)
@@ -3962,10 +3962,25 @@ package body Sem_Ch4 is
             Next (Param);
          end loop;
 
-         --  One of the specs has additional formals
+         --  One of the specs has additional formals, there is no match,
+         --  unless this may be an indexing of a parameterless call.
+
+         --  Note that when expansion is disabled, the corresponding record
+         --  type of synchronized types is not constructed, so that there is
+         --  no point is attempting an interpretation as a prefixed call, as
+         --  this is bound to fail because the primitive operations will not
+         --  be properly located.
 
          if Present (Comp_Param) or else Present (Param) then
-            return False;
+            if Needs_No_Actuals (Comp)
+              and then Is_Array_Type (Etype (Comp))
+              and then not Expander_Active
+            then
+               return True;
+
+            else
+               return False;
+            end if;
          end if;
 
          return True;