duplicate_labels.f90   [plain text]


! { dg-do compile }
! PR 21257
program dups

  integer i,j,k

  abc: do i = 1, 3
  abc:    do j = 1, 3    ! { dg-error "Duplicate construct label" }
              k = i + j
          end do abc
       end do abc        ! { dg-error "Expecting END PROGRAM" }

  xyz: do i = 1, 2
          k = i + 2
       end do xyz
  xyz: do j = 1, 5      ! { dg-error "Duplicate construct label" }
          k = j + 2
       end do loop      ! { dg-error "Expecting END PROGRAM" }

  her: if (i == 1) then
  her:    if (j  == 1) then  ! { dg-error "Duplicate construct label" }
               k = i + j
          end if her
       end if her            ! { dg-error "Expecting END PROGRAM" }

  his: if (i == 1) then
           i = j
        end if his
  his: if (j === 1) then    ! { dg-error "Duplicate construct label" }
           print *, j
        end if his          ! { dg-error "Expecting END PROGRAM" }

  sgk: select case (i)
       case (1)
  sgk:   select case (j)    ! { dg-error "Duplicate construct label" }
          case (10)
             i = i + j
          case (20)
             j = j + i
          end select sgk
        case (2)             ! { dg-error "Unexpected CASE statement" }
            i = i + 1
            j = j + 1
        end select sgk       ! { dg-error "Expecting END PROGRAM" }

  apl: select case (i)
         case (1)
            k = 2
         case (2)
            j = 1
         end select apl
  apl: select case (i)  ! { dg-error "Duplicate construct label" }
         case (1)       ! { dg-error "Unexpected CASE statement" }
            j = 2
         case (2)       ! { dg-error "Unexpected CASE statement" }
            k = 1
         end select apl ! { dg-error "Expecting END PROGRAM" }

end program dups