2 ! { dg-options "-std=legacy" }
\r
3 ! Tests the patch for PRs 25084, 20852, 25085 and 25086, all of
\r
4 ! which involve assumed character length functions.
\r
5 ! Compiled from original PR testcases, which were all contributed
\r
6 ! by Joost VandeVondele <jv244@cam.ac.uk>
\r
8 ! PR25084 - the error is not here but in any use of .IN.
\r
9 ! It is OK to define an assumed character length function
\r
10 ! in an interface but it cannot be invoked (5.1.1.5).
\r
19 INTERFACE OPERATOR (.IN.)
\r
20 FUNCTION ELEMENT(X,A) ! { dg-error "cannot be assumed character length" }
\r
22 CHARACTER(LEN=*) :: ELEMENT
\r
23 INTEGER, INTENT(IN) :: X
\r
24 TYPE(SET), INTENT(IN) :: A
\r
25 END FUNCTION ELEMENT
\r
29 ! 5.1.1.5 of the Standard: A function name declared with an asterisk
\r
30 ! char-len-param shall not be array-valued, pointer-valued, recursive
\r
34 RECURSIVE FUNCTION TEST() ! { dg-error "cannot be recursive" }
\r
35 CHARACTER(LEN=*) :: TEST
\r
40 FUNCTION F1() ! { dg-error "cannot be array-valued" }
\r
41 CHARACTER(LEN=*), DIMENSION(10) :: F1
\r
46 FUNCTION F2() result(f4) ! { dg-error "cannot be pointer-valued" }
\r
47 CHARACTER(LEN=*), POINTER :: f4
\r
52 pure FUNCTION F3() ! { dg-error "cannot be pure" }
\r
53 CHARACTER(LEN=*) :: F3
\r
57 function not_OK (ch)
\r
58 character(*) not_OK, ch ! OK in an external function
\r
64 character(4) :: answer
\r
65 character(*), external :: not_OK
\r
76 answer = not_OK ("unOK") ! { dg-error "since it is not a dummy" }
\r
80 ! { dg-final { cleanup-modules "M1" } }
\r