1 ! Related to PR 15326. Try calling string functions whose lengths depend
2 ! on the lengths of other strings.
4 pure function double (string)
5 character (len = *), intent (in) :: string
6 character (len = len (string) * 2) :: double
7 double = string // string
11 character (len = *) :: string
12 character (len = len (string)) :: f1
16 function f2 (string1, string2)
17 character (len = *) :: string1
18 character (len = len (string1) - 20) :: string2
19 character (len = len (string1) + len (string2) / 2) :: f2
27 pure function double (string)
28 character (len = *), intent (in) :: string
29 character (len = len (string) * 2) :: double
32 character (len = *) :: string
33 character (len = len (string)) :: f1
35 function f2 (string1, string2)
36 character (len = *) :: string1
37 character (len = len (string1) - 20) :: string2
38 character (len = len (string1) + len (string2) / 2) :: f2
43 character (len = 80), target :: text
44 character (len = 70), pointer :: textp
49 call test (f1 (text), 80)
50 call test (f2 (text, text), 110)
51 call test (f3 (text), 115)
52 call test (f4 (text), 192)
53 call test (f5 (text), 160)
54 call test (f6 (text), 39)
56 call test (f1 (textp), 70)
57 call test (f2 (textp, text), 95)
58 call test (f3 (textp), 105)
59 call test (f4 (textp), 192)
60 call test (f5 (textp), 140)
61 call test (f6 (textp), 29)
66 integer, parameter :: l1 = 30
67 character (len = *) :: string
68 character (len = len (string) + l1 + 5) :: f3
73 character (len = len (text) - 10) :: string
74 character (len = len (string) + len (text) + a) :: f4
79 character (len = *) :: string
80 character (len = len (double (string))) :: f5
85 character (len = *) :: string
86 character (len = len (string (a:))) :: f6
90 subroutine indirect (text2)
91 character (len = *) :: text2
93 call test (f1 (text), 80)
94 call test (f2 (text, text), 110)
95 call test (f3 (text), 115)
96 call test (f4 (text), 192)
97 call test (f5 (text), 160)
98 call test (f6 (text), 39)
100 call test (f1 (text2), 70)
101 call test (f2 (text2, text2), 95)
102 call test (f3 (text2), 105)
103 call test (f4 (text2), 192)
104 call test (f5 (text2), 140)
105 call test (f6 (text2), 29)
106 end subroutine indirect
108 subroutine test (string, length)
109 character (len = *) :: string
110 integer, intent (in) :: length
111 if (len (string) .ne. length) call abort