! { dg-do compile } ! Test that various illegal combinations of block statements with ! block names yield the correct error messages. Motivated by PR31471. program blocks dimension a(5,2) a = 0 ! The END statement of a labelled block needs to carry the construct ! name. d1: do i=1,10 end do ! { dg-error "Expected block name of .... in END DO statement" } end do d1 i1: if (i > 0) then end if ! { dg-error "Expected block name of .... in END IF statement" } end if i1 s1: select case (i) end select ! { dg-error "Expected block name of .... in END SELECT statement" } end select s1 w1: where (a > 0) end where ! { dg-error "Expected block name of .... in END WHERE statement" } end where w1 f1: forall (i = 1:10) end forall ! { dg-error "Expected block name of .... in END FORALL statement" } end forall f1 ! A construct name may not appear in the END statement, if it ! doesn't appear in the statement beginning the block. ! Likewise it may not appear in ELSE IF, ELSE, ELSEWHERE or CASE ! statements. do i=1,10 end do d2 ! { dg-error "Syntax error in END DO statement" } end do if (i > 0) then else if (i ==0) then i2 ! { dg-error "Unexpected junk after ELSE IF statement" } else i2 ! { dg-error "Unexpected junk after ELSE statement" } end if i2 ! { dg-error "Syntax error in END IF statement" } end if select case (i) case (1) s2 ! { dg-error "Syntax error in CASE specification" } case default s2 ! { dg-error "Syntax error in CASE specification" } end select s2 ! { dg-error "Syntax error in END SELECT statement" } end select where (a > 0) elsewhere w2 ! { dg-error "Unexpected junk after ELSE statement" } end where w2 ! { dg-error "Syntax error in END WHERE statement" } end where forall (i=1:10) end forall f2 ! { dg-error "Syntax error in END FORALL statement" } end forall end program blocks