diff options
author | Mark Eggleston <markeggleston@gcc.gnu.org> | 2020-07-06 07:14:59 +0100 |
---|---|---|
committer | Mark Eggleston <markeggleston@gcc.gnu.org> | 2020-07-14 07:16:56 +0100 |
commit | 9ad19a66d751ab48515ef61f830e192ae4078b93 (patch) | |
tree | 609958db50c9bfc59d705623e9e65e23cdaca652 /gcc | |
parent | ea69fcf9a036bbecd63c39f24b155b1c46953e0d (diff) | |
download | gcc-9ad19a66d751ab48515ef61f830e192ae4078b93.zip gcc-9ad19a66d751ab48515ef61f830e192ae4078b93.tar.gz gcc-9ad19a66d751ab48515ef61f830e192ae4078b93.tar.bz2 |
Fortran : Implicitly type parameter causes an invalid error PR96038
If a paramter to declared and initialised before its type is
declared a bogus error is output at the type declaration
idicating that initialisation is missing.
2020-07-14 Steven G. Kargl <kargl@gcc.gnu.org>
gcc/fortran/
PR fortran/96038
* decl.c (add_init_expr_sym): For a symbol that is a
parameter accept an initialisation if it does not have a
value otherwise output a error and reject.
2020-07-14 Mark Eggleston <markeggleston@gcc.gnu.org>
gcc/testsuite/
PR fortran/96038
* gfortran.dg/pr96038.f90: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/decl.c | 15 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr96038.f90 | 8 |
2 files changed, 17 insertions, 6 deletions
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 52c2a62..d854b2a 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -1889,13 +1889,16 @@ add_init_expr_to_sym (const char *name, gfc_expr **initp, locus *var_locus) /* If this symbol is confirming an implicit parameter type, then an initialization expression is not allowed. */ - if (attr.flavor == FL_PARAMETER - && sym->value != NULL - && *initp != NULL) + if (attr.flavor == FL_PARAMETER && sym->value != NULL) { - gfc_error ("Initializer not allowed for PARAMETER %qs at %C", - sym->name); - return false; + if (*initp != NULL) + { + gfc_error ("Initializer not allowed for PARAMETER %qs at %C", + sym->name); + return false; + } + else + return true; } if (init == NULL) diff --git a/gcc/testsuite/gfortran.dg/pr96038.f90 b/gcc/testsuite/gfortran.dg/pr96038.f90 new file mode 100644 index 0000000..f1098f3 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr96038.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } + +function ifoo() + parameter (n = 50) + integer n + ifoo = n +end + |