1! { dg-do compile } 2! Test that various illegal combinations of block statements with 3! block names yield the correct error messages. Motivated by PR31471. 4program blocks 5 dimension a(5,2) 6 7 a = 0 8 9 ! The END statement of a labelled block needs to carry the construct 10 ! name. 11 d1: do i=1,10 12 end do ! { dg-error "Expected block name of .... in END DO statement" } 13 end do d1 14 15 i1: if (i > 0) then 16 end if ! { dg-error "Expected block name of .... in END IF statement" } 17 end if i1 18 19 s1: select case (i) 20 end select ! { dg-error "Expected block name of .... in END SELECT statement" } 21 end select s1 22 23 w1: where (a > 0) 24 end where ! { dg-error "Expected block name of .... in END WHERE statement" } 25 end where w1 26 27 f1: forall (i = 1:10) 28 end forall ! { dg-error "Expected block name of .... in END FORALL statement" } 29 end forall f1 30 31 ! A construct name may not appear in the END statement, if it 32 ! doesn't appear in the statement beginning the block. 33 ! Likewise it may not appear in ELSE IF, ELSE, ELSEWHERE or CASE 34 ! statements. 35 do i=1,10 36 end do d2 ! { dg-error "Syntax error in END DO statement" } 37 end do 38 39 if (i > 0) then 40 else if (i ==0) then i2 ! { dg-error "Unexpected junk after ELSE IF statement" } 41 else i2 ! { dg-error "Unexpected junk after ELSE statement" } 42 end if i2 ! { dg-error "Syntax error in END IF statement" } 43 end if 44 45 select case (i) 46 case (1) s2 ! { dg-error "Syntax error in CASE specification" } 47 case default s2 ! { dg-error "Syntax error in CASE specification" } 48 end select s2 ! { dg-error "Syntax error in END SELECT statement" } 49 end select 50 51 where (a > 0) 52 elsewhere w2 ! { dg-error "Unexpected junk after ELSE statement" } 53 end where w2 ! { dg-error "Syntax error in END WHERE statement" } 54 end where 55 56 forall (i=1:10) 57 end forall f2 ! { dg-error "Syntax error in END FORALL statement" } 58 end forall 59 60end program blocks 61