From f0e7963fb90348ae34577e0060dc80d03d71279e Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Thu, 10 Oct 2013 12:50:15 +0200 Subject: [PATCH] [multiple changes] 2013-10-10 Ed Schonberg * 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 * gnat_ugn.texi: Minor editing. From-SVN: r203345 --- gcc/ada/ChangeLog | 11 +++++++++++ gcc/ada/gnat_ugn.texi | 2 +- gcc/ada/sem_ch4.adb | 19 +++++++++++++++++-- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 6f24bc6518d..cd6a678cb39 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,14 @@ +2013-10-10 Ed Schonberg + + * 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 + + * gnat_ugn.texi: Minor editing. + 2013-10-10 Robert Dewar * gnatlink.adb: Minor reformatting. diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 40ffc35dacd..eebd799ad76 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -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 diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index c4247cd403d..9fcd6acbdfc 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -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; -- 2.30.2