This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, Fortran, v1] Clarify error message of co_reduce
- From: Steve Kargl <sgk at troutmask dot apl dot washington dot edu>
- To: Andre Vehreschild <vehre at gmx dot de>
- Cc: GCC-Patches-ML <gcc-patches at gcc dot gnu dot org>, GCC-Fortran-ML <fortran at gcc dot gnu dot org>
- Date: Fri, 27 Oct 2017 07:12:55 -0700
- Subject: Re: [PATCH, Fortran, v1] Clarify error message of co_reduce
- Authentication-results: sourceware.org; auth=none
- References: <20171027121847.2dd8906e@vepi2>
- Reply-to: sgk at troutmask dot apl dot washington dot edu
On Fri, Oct 27, 2017 at 12:19:02PM +0200, Andre Vehreschild wrote:
> Hi all,
>
> as noted on IRC is one of the error message in check.c co_reduce misleading.
> The attached patch fixes this. The intention of the error message is to tell
> that the type of the argument bound to parameter A is of wrong type and not
> that an unspecific argument has a wrong type.
>
> If no one objects within 24 h I am planning to commit this patch as obvious to
> trunk gcc-7. Bootstrapped and regtested on x86_64-linux-gnu/f25.
>
> Regards,
> Andre
> --
> Andre Vehreschild * Email: vehre ad gmx dot de
> gcc/fortran/ChangeLog:
>
> 2017-10-27 Andre Vehreschild <vehre@gcc.gnu.org>
>
> * check.c (gfc_check_co_reduce): Clarify error message.
>
> diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c
> index 681950e..759c15a 100644
> --- a/gcc/fortran/check.c
> +++ b/gcc/fortran/check.c
> @@ -1731,7 +1731,7 @@ gfc_check_co_reduce (gfc_expr *a, gfc_expr *op, gfc_expr *result_image,
>
> if (!gfc_compare_types (&a->ts, &sym->result->ts))
> {
> - gfc_error ("A argument at %L has type %s but the function passed as "
> + gfc_error ("The A argument at %L has type %s but the function passed as "
> "OPERATOR at %L returns %s",
> &a->where, gfc_typename (&a->ts), &op->where,
> gfc_typename (&sym->result->ts));
Andre,
Can I suggest that you take a look at scalar_check in check.c
and use a similar approach for your error message?
gfc_error ("%qs argument of %qs intrinsics at %L has type %s but "
"the function passed as OPERATOR at %L returns %s",
gfc_current_intrinsic_arg[0]->name, gfc_current_intrinsic,
&a->where, gfc_typename (&a->ts), &op->where,
gfc_typename (&sym->result->ts));
Note, you'll need to use the correct index in gfc_current...arg[0]->name.
Also note, %qs gives a 'quoted' string, which in my xterm is a boldface
font.
--
Steve