Hi Steve,

This is good for trunk with one proviso:

This should mutate from:
-  /* TODO understand why this error does not appear but, instead,
-     the derived type is caught as a variable in primary.c.  */
-  if (gfc_spec_list_type (type_param_spec_list, NULL) != SPEC_EXPLICIT)
     {
-      gfc_error ("The type parameter spec list in the type-spec at "
- "%L cannot contain ASSUMED or DEFERRED parameters",
- &old_locus);
-      goto cleanup;

to (ignoring lhs white space and tabs):
   if (type_param_spec_list
       && gfc_spec_list_type (type_param_spec_list, NULL) == SPEC_DEFERRED)
      {
         gfc_error ("The type parameter spec list in the type-spec at "
                        %L cannot contain DEFERRED parameters", &old_locus);
         goto cleanup;
      }

which retains the appropriate error for PDTs.

Cheers

Paul


On 9 December 2017 at 01:13, Steve Kargl
<s...@troutmask.apl.washington.edu> wrote:
> The attached patch enforces F2008:C631, which of course is
>
> /* F2008:C631 (R626) A type-param-value in a type-spec shall be an
>    asterisk if and only if each allocate-object is a dummy argument
>    for which the corresponding type parameter is assumed.  */
>
> Regression tested on x86_64-*-freebsd.
>
> 2017-12-08  Steven G. Kargl  <ka...@gcc.gnu.org>
>
>         PR fortran/82934
>         PR fortran/83318
>         * match.c (gfc_match_allocate): Enforce F2008:C631.
>
> 2017-12-08  Steven G. Kargl  <ka...@gcc.gnu.org>
>
>         PR fortran/82934
>         PR fortran/83318
>         * gfortran.dg/allocate_assumed_charlen_2.f90: new test.
>
> --
> Steve



-- 
"If you can't explain it simply, you don't understand it well enough"
- Albert Einstein

Reply via email to