re PR fortran/56667 (Syntax error causes misleading message: "Expected PARAMETER symbol in complex constant")

2018-03-06  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/56667
	* primary.c (match_sym_complex_part): Give the matcher for an implied
	do-loop a chance to run.

2018-03-06  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/56667
	* gfortran.dg/implied_do_2.f90: New test.
	* gfortran.dg/coarray_8.f90: Update for new error message.

From-SVN: r258281
This commit is contained in:
Steven G. Kargl 2018-03-06 19:05:48 +00:00
parent 2128896318
commit 284ee475e1
5 changed files with 37 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2018-03-06 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/56667
* primary.c (match_sym_complex_part): Give the matcher for an implied
do-loop a chance to run.
2018-03-03 Harald Anlauf <anlauf@gmx.de>
PR fortran/71085

View File

@ -1248,8 +1248,22 @@ match_sym_complex_part (gfc_expr **result)
if (sym->attr.flavor != FL_PARAMETER)
{
gfc_error ("Expected PARAMETER symbol in complex constant at %C");
return MATCH_ERROR;
/* Give the matcher for implied do-loops a chance to run. This yields
a much saner error message for "write(*,*) (i, i=1, 6" where the
right parenthesis is missing. */
char c;
gfc_gobble_whitespace ();
c = gfc_peek_ascii_char ();
if (c == '=' || c == ',')
{
m = MATCH_NO;
}
else
{
gfc_error ("Expected PARAMETER symbol in complex constant at %C");
m = MATCH_ERROR;
}
return m;
}
if (!sym->value)

View File

@ -1,3 +1,9 @@
2018-03-06 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/56667
* gfortran.dg/implied_do_2.f90: New test.
* gfortran.dg/coarray_8.f90: Update for new error message.
2018-03-06 Jakub Jelinek <jakub@redhat.com>
PR inline-asm/84683

View File

@ -145,7 +145,7 @@ end module mmm4
subroutine tfgh()
integer :: i(2)
DATA i/(i, i=1,2)/ ! { dg-error "Expected PARAMETER symbol" }
DATA i/(i, i=1,2)/ ! { dg-error "Syntax error in DATA" }
do i = 1, 5 ! { dg-error "cannot be an array" }
end do ! { dg-error "Expecting END SUBROUTINE" }
end subroutine tfgh
@ -153,7 +153,7 @@ end subroutine tfgh
subroutine tfgh2()
integer, save :: x[*]
integer :: i(2)
DATA i/(x, x=1,2)/ ! { dg-error "Expected PARAMETER symbol" }
DATA i/(x, x=1,2)/ ! { dg-error "Syntax error in DATA" }
do x = 1, 5 ! { dg-error "cannot be a coarray" }
end do ! { dg-error "Expecting END SUBROUTINE" }
end subroutine tfgh2

View File

@ -0,0 +1,7 @@
! { dg-do compile }
! PR fortran/56667
program error_message
implicit none
integer :: ir
write(*,*) ( ir, ir = 1,10 ! { dg-error "Expected a right parenthesis" }
end program error_message