1! Check that character valued statement functions honour length parameters
2program st_function_1
3  character(8) :: foo
4  character(15) :: bar
5  character(6) :: p
6  character (7) :: s
7  foo(p) = p // "World"
8  bar(p) = p // "World"
9
10  ! Expression longer than function, actual arg shorter than dummy.
11  call check (foo("Hello"), "Hello Wo") ! { dg-warning "Character length of actual argument shorter" }
12
13  ! Expression shorter than function, actual arg longer than dummy.
14  ! Result shorter than type
15  s = "Hello"
16  call check (bar(s), "Hello World    ")
17contains
18subroutine check(a, b)
19  character (len=*) :: a, b
20
21  if ((a .ne. b) .or. (len(a) .ne. len(b))) STOP 1
22end subroutine
23end program
24