Commit 284ee475 by Steven G. Kargl

re PR fortran/56667 (Syntax error causes misleading message: "Expected PARAMETER…

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
parent 21288963
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> 2018-03-03 Harald Anlauf <anlauf@gmx.de>
PR fortran/71085 PR fortran/71085
......
...@@ -1248,8 +1248,22 @@ match_sym_complex_part (gfc_expr **result) ...@@ -1248,8 +1248,22 @@ match_sym_complex_part (gfc_expr **result)
if (sym->attr.flavor != FL_PARAMETER) if (sym->attr.flavor != FL_PARAMETER)
{ {
gfc_error ("Expected PARAMETER symbol in complex constant at %C"); /* Give the matcher for implied do-loops a chance to run. This yields
return MATCH_ERROR; 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) if (!sym->value)
......
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> 2018-03-06 Jakub Jelinek <jakub@redhat.com>
PR inline-asm/84683 PR inline-asm/84683
......
...@@ -145,7 +145,7 @@ end module mmm4 ...@@ -145,7 +145,7 @@ end module mmm4
subroutine tfgh() subroutine tfgh()
integer :: i(2) 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" } do i = 1, 5 ! { dg-error "cannot be an array" }
end do ! { dg-error "Expecting END SUBROUTINE" } end do ! { dg-error "Expecting END SUBROUTINE" }
end subroutine tfgh end subroutine tfgh
...@@ -153,7 +153,7 @@ end subroutine tfgh ...@@ -153,7 +153,7 @@ end subroutine tfgh
subroutine tfgh2() subroutine tfgh2()
integer, save :: x[*] integer, save :: x[*]
integer :: i(2) 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" } do x = 1, 5 ! { dg-error "cannot be a coarray" }
end do ! { dg-error "Expecting END SUBROUTINE" } end do ! { dg-error "Expecting END SUBROUTINE" }
end subroutine tfgh2 end subroutine tfgh2
......
! { 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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment