llvm/flang/test/Semantics/call37.f90

! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic -Werror
! Test warnings on mismatching interfaces involvingCHARACTER arguments
subroutine constLen(s)
  character(len = 1) s
end
subroutine assumedLen(s)
  character(len = *) s
end
subroutine exprLen(s)
  common n
  character(len = n) s
end

module m0
  interface ! these are all OK
    subroutine constLen(s)
      character(len=1) s
    end
    subroutine assumedLen(s)
      character(len=*) s
    end
    subroutine exprLen(s)
      common n
      character(len=n) s
    end
  end interface
end

module m1
  interface
    !WARNING: The global subprogram 'constlen' is not compatible with its local procedure declaration (incompatible dummy argument #1: incompatible dummy data object types: CHARACTER(KIND=1,LEN=1_8) vs CHARACTER(KIND=1,LEN=2_8))
    subroutine constLen(s)
      character(len=2) s
    end
    !WARNING: The global subprogram 'assumedlen' is not compatible with its local procedure declaration (incompatible dummy argument #1: assumed-length character vs explicit-length character)
    subroutine assumedLen(s)
      character(len=2) s
    end
    !WARNING: The global subprogram 'exprlen' is not compatible with its local procedure declaration (incompatible dummy argument #1: constant-length vs non-constant-length character dummy arguments)
    subroutine exprLen(s)
      character(len=2) s
    end
  end interface
end

module m2
  interface
    !WARNING: The global subprogram 'constlen' is not compatible with its local procedure declaration (incompatible dummy argument #1: assumed-length character vs explicit-length character)
    subroutine constLen(s)
      character(len=*) s
    end
    !WARNING: The global subprogram 'exprlen' is not compatible with its local procedure declaration (incompatible dummy argument #1: assumed-length character vs explicit-length character)
    subroutine exprLen(s)
      character(len=*) s
    end
  end interface
end

module m3
  interface
    !WARNING: The global subprogram 'constlen' is not compatible with its local procedure declaration (incompatible dummy argument #1: constant-length vs non-constant-length character dummy arguments)
    subroutine constLen(s)
      common n
      character(len=n) s
    end
    !WARNING: The global subprogram 'assumedlen' is not compatible with its local procedure declaration (incompatible dummy argument #1: assumed-length character vs explicit-length character)
    subroutine assumedLen(s)
      common n
      character(len=n) s
    end
  end interface
end