[RFA patch, Fortran] PR60144 - Misleading error message when missing "then" after "if" and "else if"
Dominique d'Humières
dominiq@lps.ens.fr
Sun Mar 17 17:16:00 GMT 2019
With the proposed patch
2 | if (.TRUE.)
| 1
Error: Cannot assign to a named constant at (1)
3 | else if (.FALSE.)
| 1
Error: Unexpected junk after ELSE statement at (1)
is changed to
2 | if (.TRUE.)
| 1
Error: Syntax error in IF-clause after (1)
3 | else if (.FALSE.)
| 1
Error: Missing THEN in ELSE IF statement after (1)
The first change is done by removing the block
/* The gfc_match_assignment() above may have returned a MATCH_NO
…
return MATCH_ERROR;
}
This block has been introduced at revision r116570 to handle assignment to a named constant as in the test
simpleif_2.f90, but this is now handled elsewhere.
The second change is done by some more parsing of the ELSE IF statement.
While at these changes, I have also made the error
3 | if (.FALSE. then c="!"
| 1
Error: Missing ')' in statement at or before (1)
to be less surprising
3 | if (.FALSE. then c="!"
| 1
Error: Missing ')' in statement at or before (1)
Also
7 | if a=b !
| 1
Error: Unclassifiable statement at (1)
changed to
7 | if a=b !
| 1
Error: Missing '(' in IF-expression at (1)
which avoids the error to be deleted if it appears after other ones.
Bootstrapped and tested on darwin. Is it OK for trunk?
TIA
Dominique
2019-03-17 Dominique d'Humieres <dominiq@gcc.gnu.org>
PR fortran/60144
* match.c (gfc_match_parens): Change the location for missing ')'.
(gfc_match_if): Detect a missing '('. Remove the spurious named
constant error. Change the wording of some errors.
(gfc_match_else): Change the wording of an error.
(gfc_match_elseif): Detect a missing '('. Improve the matching
process to get a better syntax analysis.
2019-03-17 Dominique d'Humieres <dominiq@gcc.gnu.org>
PR fortran/60144
* gfortran.dg/block_name_2.f90: Adjust dg-error.
* gfortran.dg/dec_type_print_3.f90.f90: Likewise
* gfortran.dg/pr60144.f90: New test.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch-60144
Type: application/octet-stream
Size: 7753 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20190317/d11a96aa/attachment.obj>
More information about the Fortran
mailing list