! { dg-do compile }
! { dg-options "-std=f95" }

! Test for a special case of the used-before-typed errors, when the symbols
! not-yet-typed are indices.

SUBROUTINE test (n, arr1, m, arr2) ! { dg-error "has no IMPLICIT type" }
  IMPLICIT NONE

  INTEGER :: myarr(42)

  INTEGER :: arr1(SIZE (myarr(1:n))) ! { dg-error "'n' is used before" }
  INTEGER :: n

  INTEGER :: arr2(LEN ("hello"(1:m))) ! { dg-error "'m' is used before" }
  INTEGER :: m

  WRITE (*,*) SIZE (arr1)
  WRITE (*,*) SIZE (arr2)
END SUBROUTINE test

PROGRAM main
  IMPLICIT NONE
  INTEGER :: arr1(42), arr2(42)
  CALL test (3, arr1, 2, arr2) ! { dg-warning "Type mismatch in argument" }
END PROGRAM main
