https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83318
--- Comment #3 from kargl at gcc dot gnu.org --- gfcx -c a.f90 a.f90:5:13: allocate(character(len=*) :: string_array(2)) 1 Error: Type-spec at (1) must contain a scalar integer expression Index: match.c =================================================================== --- match.c (revision 255348) +++ match.c (working copy) @@ -4006,18 +4006,15 @@ gfc_match_allocate (void) goto cleanup; } - if (ts.type == BT_CHARACTER) - ts.u.cl->length_from_typespec = true; - - /* 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) + if (!ts.u.cl->length) { - gfc_error ("The type parameter spec list in the type-spec at " - "%L cannot contain ASSUMED or DEFERRED parameters", - &old_locus); + gfc_error ("Type-spec at %L must contain a scalar integer " + "expression", &old_locus); goto cleanup; } + + if (ts.type == BT_CHARACTER) + ts.u.cl->length_from_typespec = true; } else {