Fortran : "type is( real(kind(1.)) )" spurious syntax error PR94397
authorMark Eggleston <markeggleston@gcc.gnu.org>
Wed, 1 Apr 2020 08:52:41 +0000 (09:52 +0100)
committerMark Eggleston <markeggleston@gcc.gnu.org>
Thu, 28 May 2020 12:24:04 +0000 (13:24 +0100)
commit3ea6977d0f1813d982743a09660eec1760e981ec
tree6df9a90381813ee0a99c73b956b1375c18f1a4ca
parent59a3d73d50a1fd3c392e421ba4c07966ce045043
Fortran  : "type is( real(kind(1.)) )" spurious syntax error PR94397

Based on a patch in the comments of the PR. That patch fixed this
problem but caused the test cases for PR93484 to fail. It has been
changed to reduce initialisation expressions if the expression is
not EXPR_VARIABLE and not EXPR_CONSTANT.

2020-05-28  Steven G. Kargl  <kargl@gcc.gnu.org>
    Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/fortran/

PR fortran/94397
* match.c (gfc_match_type_spec): New variable ok initialised
to true. Set ok with the return value of gfc_reduce_init_expr
called only if the expression is not EXPR_CONSTANT and is not
EXPR_VARIABLE. Add !ok to the check for type not being integer
or the rank being greater than zero.

2020-05-28  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/testsuite/

PR fortran/94397
* gfortran.dg/pr94397.F90: New test.
gcc/fortran/match.c
gcc/testsuite/gfortran.dg/pr94397.F90 [new file with mode: 0644]