Allow concatenated module+submodule names.

Increase length of char variables "parent1" and "parent2" in
set_syms_host_assoc() to allow them to hold concatenated module +
submodule names.

        PR fortran/93473
        * parse.c: Increase length of char variables to allow them to hold
        a concatenated module + submodule name.
        * gfortran.dg/pr93473.f90: New test.
This commit is contained in:
Andrew Benson 2020-01-28 17:58:40 +00:00
parent 3d056cbfb3
commit a83b5cc582
3 changed files with 38 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2020-01-28 Andrew Benson <abensonca@gmail.com>
PR fortran/93473
* parse.c: Increase length of char variables to allow them to hold
a concatenated module + submodule name.
* gfortran.dg/pr93473.f90: New test.
2020-01-28 Julian Brown <julian@codesourcery.com>
PR fortran/93025

View File

@ -6045,8 +6045,9 @@ set_syms_host_assoc (gfc_symbol *sym)
{
gfc_component *c;
const char dot[2] = ".";
char parent1[GFC_MAX_SYMBOL_LEN + 1];
char parent2[GFC_MAX_SYMBOL_LEN + 1];
/* Symbols take the form module.submodule_ or module.name_. */
char parent1[2 * GFC_MAX_SYMBOL_LEN + 2];
char parent2[2 * GFC_MAX_SYMBOL_LEN + 2];
if (sym == NULL)
return;

View File

@ -0,0 +1,28 @@
! { dg-do compile }
! { dg-options "-ffree-line-length-none" }
! PR fortran/93473
module aModestlyLongModuleName
type :: aTypeWithASignificantlyLongNameButStillAllowedOK
end type aTypeWithASignificantlyLongNameButStillAllowedOK
interface
module function aFunctionWithALongButStillAllowedName(parameters) result(self)
type(aTypeWithASignificantlyLongNameButStillAllowedOK) :: self
end function aFunctionWithALongButStillAllowedName
end interface
end module aModestlyLongModuleName
submodule (aModestlyLongModuleName) aTypeWithASignificantlyLongNameButStillAllowedOK_
contains
module procedure aFunctionWithALongButStillAllowedName
class(*), pointer :: genericObject
end procedure aFunctionWithALongButStillAllowedName
end submodule aTypeWithASignificantlyLongNameButStillAllowedOK_
submodule (aModestlyLongModuleName:aTypeWithASignificantlyLongNameButStillAllowedOK_) aSubmoduleWithASignificantlyLongButStillAllowedName__
end submodule aSubmoduleWithASignificantlyLongButStillAllowedName__